Zovo PDF Form Fill MCP
This MCP server lists and fills fields in standard fillable PDF forms. It identifies field types, maps user answers to correct fields, validates constraints, and returns a filled PDF with an optional download link.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://pdf-form-fill.zovo.one/mcpWhat its tools do
2 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (2)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- List fields in a PDF form
- Fill form with user answers
- Flatten filled PDF to lock values
Source and maintenance
Protocol and capabilities
- Server
- pdf-form-fill 1.0.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 2 advertised
- Resources
- 1 advertised
- Resource templates
- 1 advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
},
"resources": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
2 advertised
list_form_fields — List PDF form fields
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.
{
"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."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"file",
"page_count",
"fields_total",
"fields_listed",
"start",
"page_filter",
"counts",
"required_empty",
"fields",
"next_start",
"labels_read",
"notes",
"status"
],
"properties": {
"file": {
"type": "string"
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"start": {
"type": "number"
},
"counts": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
}
},
"fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"type",
"label",
"value",
"required",
"page"
],
"properties": {
"name": {
"type": "string"
},
"page": {
"type": [
"number",
"null"
]
},
"type": {
"type": "string"
},
"label": {
"type": "string"
},
"value": {},
"options": {
"type": "array",
"items": {
"type": "string"
}
},
"tooltip": {
"type": "string"
},
"editable": {
"type": "boolean"
},
"required": {
"type": "boolean"
},
"multiline": {
"type": "boolean"
},
"read_only": {
"type": "boolean"
},
"max_length": {
"type": "number"
},
"multi_select": {
"type": "boolean"
},
"option_labels": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
"status": {
"type": "string"
},
"next_start": {
"type": [
"number",
"null"
]
},
"page_count": {
"type": "number"
},
"labels_read": {
"type": "boolean"
},
"page_filter": {
"type": [
"number",
"null"
]
},
"fields_total": {
"type": "number"
},
"fields_listed": {
"type": "number"
},
"preview_count": {
"type": "object",
"required": [
"shown",
"total"
],
"properties": {
"shown": {
"type": "number"
},
"total": {
"type": "number"
}
},
"additionalProperties": false
},
"required_empty": {
"type": "number"
}
},
"additionalProperties": false
}{
"title": "List PDF form fields",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}fill_pdf_form — Fill a PDF form
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.
{
"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)."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"file",
"output_file",
"fields_total",
"filled_count",
"filled",
"skipped",
"empty_required",
"unsigned_signature_fields",
"verified",
"flattened",
"notes",
"downloads",
"expires_in_hours"
],
"properties": {
"file": {
"type": "string"
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"filled": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"type",
"value"
],
"properties": {
"type": {
"type": "string"
},
"field": {
"type": "string"
},
"value": {
"type": "string"
}
},
"additionalProperties": false
}
},
"skipped": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"reason"
],
"properties": {
"field": {
"type": "string"
},
"reason": {
"type": "string"
}
},
"additionalProperties": false
}
},
"verified": {
"type": "object",
"required": [
"checked",
"matched",
"mismatched",
"cleaned"
],
"properties": {
"checked": {
"type": "number"
},
"cleaned": {
"type": "array",
"items": {
"type": "string"
}
},
"matched": {
"type": "number"
},
"mismatched": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"downloads": {
"type": "object",
"required": [
"pdf"
],
"properties": {
"pdf": {
"type": "string"
}
},
"additionalProperties": false
},
"flattened": {
"type": "boolean"
},
"output_file": {
"type": "string"
},
"fields_total": {
"type": "number"
},
"filled_count": {
"type": "number"
},
"preview_count": {
"type": "object",
"required": [
"shown",
"total"
],
"properties": {
"shown": {
"type": "number"
},
"total": {
"type": "number"
}
},
"additionalProperties": false
},
"empty_required": {
"type": "array",
"items": {
"type": "string"
}
},
"expires_in_hours": {
"type": "number"
},
"unsigned_signature_fields": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}{
"title": "Fill a PDF form",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
1 advertised
pdf-form-fill-widget — Zovo PDF Form Fill view
Interactive view for Zovo PDF Form Fill.
ui://widget/pdf-form-fill-v1-1.0.0-846cd69fec01011cc65d9cf8dc39b665a5e5da9e20193c6be345b5c9ff46897e.htmlpdf-form-fill-widget-legacy — Zovo PDF Form Fill view (previous versions)
ui://widget/pdf-form-fill-{version}.html30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 2150 ms
- 95th percentile latency
- 2150 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 2150 ms · metadata changed · 2 tool(s), 1 resource(s), 1 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http zovo-pdf-form-fill-mcp https://pdf-form-fill.zovo.one/mcpCodex
codex mcp add zovo-pdf-form-fill-mcp --url https://pdf-form-fill.zovo.one/mcpCursor
{
"mcpServers": {
"zovo-pdf-form-fill-mcp": {
"url": "https://pdf-form-fill.zovo.one/mcp"
}
}
}Cline
{
"mcpServers": {
"zovo-pdf-form-fill-mcp": {
"type": "streamableHttp",
"url": "https://pdf-form-fill.zovo.one/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"zovo-pdf-form-fill-mcp": {
"type": "http",
"url": "https://pdf-form-fill.zovo.one/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http zovo-pdf-form-fill-mcp https://pdf-form-fill.zovo.one/mcpClaude Desktop
https://pdf-form-fill.zovo.one/mcpWindsurf
{
"mcpServers": {
"zovo-pdf-form-fill-mcp": {
"serverUrl": "https://pdf-form-fill.zovo.one/mcp"
}
}
}Let your agent find its tools
Find servers like Zovo PDF Form Fill MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.