MCP Server · Plenitudo.ai

Fill PDF forms from any AI agent

Tax documents, HR paperwork, legal contracts — FormFill MCP turns structured data into completed PDFs in a single tool call.

Get Free API Key See Setup Guide
Step 1: discover fields  ·  Step 2: fill them
// Step 1 — inspect the PDF to get exact field names + positions
{ "tool": "list_form_fields", "parameters": { "pdf_path": "/forms/w9.pdf", "api_key": "ff_..." } }

// Response — every field with name, type, and page position
{ "ok": true, "pdf_type": "hybrid_xfa_acroform", "fields": {
    "f1_01[0]": { "type": "text", "position": { "y": 660, "x": 59 } },  ← Name (top of page)
    "f1_07[0]": { "type": "text", "position": { "y": 492, "x": 59 } },  ← Address
    "f1_14[0]": { "type": "text", "position": { "y": 348, "x": 418 } }  ← EIN
} }

// Step 2 — fill with the exact field names from step 1
{ "tool": "fill_form", "parameters": {
    "pdf_path": "/forms/w9.pdf",
    "field_values": { "f1_01[0]": "Alice Johnson", "f1_07[0]": "123 Main St" },
    "output_path": "/forms/w9_filled.pdf", "api_key": "ff_..."
} }
// → { "ok": true, "fields_filled": 2, "pdf_type": "hybrid_xfa_acroform" }

Built for agent workflows

Wherever an agent needs to output a completed form, FormFill handles the last mile.

🧾

Tax Preparation

Agents collect W-2 data through conversation, then auto-populate IRS 1040, W-9, and state forms — ready to sign.

🏢

HR Onboarding

Walk new hires through onboarding in chat, then fill I-9s, direct deposit forms, and benefits paperwork automatically.

⚖️

Legal Documents

Populate NDA templates, court filing forms, and contract paperwork from structured intake — hours of work in seconds.

🏠

Real Estate

Listing agreements, disclosure forms, rental applications — any AcroForm PDF in the workflow.


Set up in 3 steps

Works with Claude Desktop, Cursor, Cline, and any MCP-compatible host.

1

Get your API key

Click Get Free API Key — enter your email and your key is issued instantly. No credit card required.

2

Add to your MCP host

For Claude Desktop, open ~/Library/Application Support/Claude/claude_desktop_config.json and add:

{
  "mcpServers": {
    "formfill": {
      "command": "npx",
      "args": ["-y", "@knportal/formfill-mcp"],
      "env": { "FORMFILL_API_KEY": "ff_your_key_here" }
    }
  }
}

For remote access (Cursor, Cline, any HTTP MCP client), use the streamable HTTP endpoint:

https://formfill.plenitudo.ai/mcp
3

Restart and test

Restart your MCP host (Claude Desktop requires a full quit and reopen). Then ask your agent: "List the fields in /path/to/form.pdf" — you should see the field names returned.


Simple pricing

No credit card required to get started.

Free
$0 / month
For evaluation and low-volume workflows.
  • 50 form fills / month
  • All 5 MCP tools
  • Multi-page PDF support
  • Instant API key — no card
Get Free Key

Troubleshooting

Common issues and how to fix them.

Make sure your config uses command and args — not a url or type: streamableHttp block. The correct format for Claude Desktop is:

{
  "mcpServers": {
    "formfill": {
      "command": "/path/to/python",
      "args": ["/path/to/server.py", "--stdio"]
    }
  }
}

After editing, fully quit and reopen Claude Desktop (Cmd+Q, not just close the window).

Never guess field names. Always call list_form_fields first — it now returns each field's position (x, y coordinates on the page). Use those coordinates to identify which field is which:

  • Higher y = higher on the page (PDF y-axis is bottom-up)
  • Fields with similar y are on the same horizontal line
  • Fields with similar x are in the same column

This is especially important for IRS and government PDFs, which use a hybrid XFA/AcroForm format where field names like f1_06[0] give no visual hint about their location.

The PDF may be:

  • Flat / scanned — a scanned image disguised as a PDF. FormFill requires interactive AcroForm fields. Check in Adobe Acrobat by looking for the blue field highlights.
  • XFA-only — some older Adobe LiveCycle PDFs use a format that can't be filled programmatically. The response will include "pdf_type": "xfa_only".
  • Password-protected — decrypt the PDF before filling. The response will include "pdf_type": "encrypted".

Your field names don't match what's in the PDF. Call list_form_fields to get the exact names. The response also includes a valid_fields list showing all available field names.

Common mistake: using display names like "Name" instead of the actual PDF field ID like "f1_01[0]". Always use the names returned by list_form_fields exactly.

Free tier allows 50 fills per month. To upgrade to unlimited Pro, visit the pricing section and click "Start Pro". Your existing API key is automatically upgraded — no need to change your config.

Already a Pro subscriber? Manage your subscription.

This happens when the server is launched from a read-only directory (common in Claude Desktop stdio mode). Set the FORMFILL_LOG_FILE environment variable to a writable path, or set FORMFILL_DATA_DIR to a writable directory.

The default log path is ~/Library/Logs/formfill-mcp/server.log (macOS), which should work without any config.

No — that's correct behavior. The MCP endpoint requires an MCP client (Claude Desktop, Cursor, Cline) that sends the right protocol headers. Browsers send Accept: text/html, which the server rejects by design.

To confirm the server is up, hit GET https://formfill.plenitudo.ai/health — that returns {"status":"ok"} from any browser or curl.

Hit the health endpoint: GET https://formfill.plenitudo.ai/health — returns {"status": "ok"} when running.

For a deeper check: GET https://formfill.plenitudo.ai/smoke-test — fills a real PDF end-to-end and reports pass/fail for each component.


Support

We're here to help. Pick the channel that fits your question.

🐛

Bug Reports

Found a bug or unexpected behavior? Open an issue on GitHub with your PDF type and the error message.

Open a GitHub Issue →
💡

Feature Requests

Need signature fields, batch processing, or a new tool? Let us know what your workflow needs.

Request a Feature →
💳

Billing & Subscriptions

Manage your Pro subscription, update payment info, or cancel anytime from the Stripe portal.

Manage Subscription →
📖

Documentation

Full tool reference, configuration options, and example workflows on GitHub.

Read the Docs →

Start filling forms today

Free tier — no credit card required, instant access.

Get Free API Key

Remote MCP Endpoint

https://formfill.plenitudo.ai/mcp

Opening this URL in a browser shows "Not Acceptable" — that's normal. It only responds to MCP clients (Claude Desktop, Cursor, Cline).