List and fill the fields of a PDF form document from your answers in the chat.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use this when the user wants to fill in a fillable PDF form with given answers. Pass the attached PDF and a list of {field, value} using the field names from list_form_fields: text for text fields, true/false for checkboxes, one listed option for radio groups and dropdowns (case-insensitive matches are reported), a list for multi-select list boxes. Unknown names, options that are not listed and text over a field's maximum length are refused with the reason, and nothing is filled. Returns a new filled PDF (fields editable, or flattened when flatten is true), read back to confirm each value, plus required fields still empty. Does not sign signature fields, does not change the user's original file, and does not fill XFA-only forms.
The fillable PDF form to fill, e.g. w9-like.pdf.
The values to put in the form, e.g. [{"field":"full_name","value":"Jane Doe"},{"field":"agree","value":true}].
true: make the filled values part of the page so they are no longer editable. Default false (fields stay editable).
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http pdf-form-fill https://pdf-form-fill.zovo.one/mcp
Use this when the user wants to fill in a fillable PDF form with given answers. Pass the attached PDF and a list of {field, value} using the field names from list_form_fields: text for text fields, true/false for checkboxes, one listed option for radio groups and dropdowns (case-insensitive matches are reported), a list for multi-select list boxes. Unknown names, options that are not listed and text over a field's maximum length are refused with the reason, and nothing is filled. Returns a new filled PDF (fields editable, or flattened when flatten is true), read back to confirm each value, plus required fields still empty. Does not sign signature fields, does not change the user's original file, and does not fill XFA-only forms.
| Argument | Type | Description |
|---|---|---|
| file* | object | The fillable PDF form to fill, e.g. w9-like.pdf. |
| values* | array | The values to put in the form, e.g. [{"field":"full_name","value":"Jane Doe"},{"field":"agree","value":true}]. |
| flatten | boolean | true: make the filled values part of the page so they are no longer editable. Default false (fields stay editable). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"file",
"values"
],
"properties": {
"file": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"description": "ChatGPT file id, e.g. file_abc123."
},
"file_name": {
"type": "string",
"description": "Original file name if known, e.g. statement.pdf."
},
"mime_type": {
"type": "string",
"description": "Media type if known, e.g. application/pdf."
},
"download_url": {
"type": "string",
"description": "Temporary download link for the file, supplied by ChatGPT."
}
},
"description": "The fillable PDF form to fill, e.g. w9-like.pdf."
},
"values": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"value"
],
"properties": {
"field": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "Field name as list_form_fields shows it, e.g. full_name or topmostSubform[0].Page1[0].f1_01[0]."
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "boolean"
},
{
"type": "number"
},
{
"type": "array",
"items": {
"type": "string",
"maxLength": 500
},
"maxItems": 100
}
],
"description": "Text for a text field (e.g. Jane Doe), true/false for a checkbox, one option for a radio group or dropdown (e.g. Evening), or a list of options for a multi-select list box (e.g. [\"Kitchen\",\"Garden\"]). An empty string clears the field."
}
}
},
"maxItems": 2000,
"minItems": 1,
"description": "The values to put in the form, e.g. [{\"field\":\"full_name\",\"value\":\"Jane Doe\"},{\"field\":\"agree\",\"value\":true}]."
},
"flatten": {
"type": "boolean",
"description": "true: make the filled values part of the page so they are no longer editable. Default false (fields stay editable)."
}
}
}Use this when the user attaches a fillable PDF form and wants to see its fields or wants it filled. It returns each AcroForm field with its full name, type (text, checkbox, radio, dropdown, listbox, signature), current value, options, required flag, maximum length, page and the printed label next to it, 40 fields at a time (use start for more). Does not change the PDF. Does not read XFA-only forms or scanned paper forms with no fields.
| Argument | Type | Description |
|---|---|---|
| file* | object | The fillable PDF form, e.g. volunteer-form.pdf. |
| page | integer | Only list fields on this page, e.g. 2. Default: all pages. |
| start | integer | Skip this many fields for long forms, e.g. 40 to see fields 41-80. Default 0. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"file"
],
"properties": {
"file": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"description": "ChatGPT file id, e.g. file_abc123."
},
"file_name": {
"type": "string",
"description": "Original file name if known, e.g. statement.pdf."
},
"mime_type": {
"type": "string",
"description": "Media type if known, e.g. application/pdf."
},
"download_url": {
"type": "string",
"description": "Temporary download link for the file, supplied by ChatGPT."
}
},
"description": "The fillable PDF form, e.g. volunteer-form.pdf."
},
"page": {
"type": "integer",
"maximum": 10000,
"minimum": 1,
"description": "Only list fields on this page, e.g. 2. Default: all pages."
},
"start": {
"type": "integer",
"maximum": 2000,
"minimum": 0,
"description": "Skip this many fields for long forms, e.g. 40 to see fields 41-80. Default 0."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 8, 2026.