Overview
The FillWise MCP server lets an AI assistant fill PDF forms for you. You keep working in Claude, Cursor or Claude Code, say "fill this visa application from the passport photo in my downloads", and the assistant calls FillWise, writes the completed PDF next to the original and tells you how many fields it filled.
It is the same engine as the PDF form API, wrapped as two MCP tools. No template to build, no field map to maintain, no code to write: one npx command and an API key from your account.
Key Capabilities
| Capability | What it means for you |
|---|---|
fill_pdf |
Takes a PDF path on disk, source text and optional attachments, writes <name>.filled.pdf next to the original |
fill_pdf_base64 |
Same tool for clients without file access: PDF in as base64, filled PDF out as base64 |
| Any source data | Plain text in any language, or up to four attached documents the AI reads: passport photos, scans, other PDFs |
| Interactive and flat PDFs | Real form fields are filled through the fields. Flat forms get values drawn at label positions. The result says which mode was used |
| Page selection | pages: "1, 3-6" fills only the pages you need of a long packet |
| Readable errors | A spent quota, a scanned PDF or a bad key comes back as a sentence the assistant can act on, not a status code |
How It Works
- Create a key at fillwise.ai/account, section API keys. It is shown once, so copy it right away.
- Add the server to your client. The package is on npm as
fillwise-mcp, Node.js 18 or newer is required. - Ask the assistant to fill a form. It picks the tool, sends the PDF and your data, and saves the result.
Claude Desktop, in claude_desktop_config.json (Settings, Developer, Edit Config):
{
"mcpServers": {
"fillwise": {
"command": "npx",
"args": ["-y", "fillwise-mcp"],
"env": { "FILLWISE_API_KEY": "fw_live_..." }
}
}
}
Claude Code, one command:
claude mcp add fillwise -e FILLWISE_API_KEY=fw_live_... -- npx -y fillwise-mcp
Cursor uses the same JSON as Claude Desktop in .cursor/mcp.json, in the project or in your home folder.
A prompt that works once the server is added:
Fill ~/Downloads/schengen-application.pdf using the passport photo ~/Downloads/passport.jpg. Travel dates 12 to 26 May 2026, purpose tourism, staying at Hotel Adlon, Berlin.
Use Cases
| Who | What they hand to the assistant |
|---|---|
| Travel and visa agencies | "Fill the visa form for each passport in this folder" |
| Legal and immigration | Intake notes into court and immigration PDFs during a client call |
| HR and staffing | Candidate details from the ATS export into onboarding packets |
| Developers | A form-filling step inside an agent workflow, without writing an HTTP client |
| Anyone with a pile of PDFs | The same twelve values into every form, dictated once |
Limits and Honest Gaps
- PDF up to 20 MB, source text up to 60 000 characters, attachments up to 5 MB each and four per call.
- 20 requests per minute per account.
- Scanned PDFs are rejected. XFA forms have no standard fields and usually come back with a low fill count.
- Review the output before you send it anywhere, especially when the result says
mode: flat. The engine places values by reading the form, it does not know your business rules. - Web forms are not covered by the MCP server. Those are filled by the Chrome extension directly on the page.