Integration
Formfeed for AI agents (MCP)
Agents are good at assembling data and bad at guessing what a template expects. The MCP server closes that gap: the agent reads the template schema, validates its data for free, and only then spends a render.
Available now: the hosted endpoint at mcp.formfeed.dev, with an API key or a sign-in, and the npm package for a local server.
Free plan with 100 units a month, no credit card
Tools
- list_templates. Templates of the workspace with slug, kind, engine and published version.
- get_template_schema. The JSON Schema of the data a template expects, with its sample data.
- validate_template. Checks a template with the data without rendering: syntax, missing variables, and the data against the template’s stored schema. Free.
- check_invoice. Checks the invoice block of an e-invoice against EN 16931 offline, naming every field and rule it breaks, before a render costs anything. Free.
- render. Renders to PDF, PNG, JPG or WebP, or Word and PowerPoint templates to DOCX or PPTX, and returns the download URL. With
einvoice, the PDF becomes a ZUGFeRD / Factur-X e-invoice. - convert_to_pdf. Converts a Word, Excel, PowerPoint, OpenDocument, RTF or HTML file, or the render of a Word or PowerPoint template, to PDF. Starter plan and above.
- get_render. Status, page count, units and error of a render, with a fresh download link, which also replaces an expired one.
- get_workspace. The workspace the server works in, the plan and the units left in the period.
Connecting a client
For a local server, the same entry works in Claude Desktop, Cursor, Windsurf, Cline and every client that reads mcpServers; npx starts it on Node.js 22 or newer. A client that connects remotely adds https://mcp.formfeed.dev/mcp instead: a chat client opens Formfeed’s sign-in, where you choose the workspace, and a server sends its API key as Authorization: Bearer. The documentation has both ways. Step-by-step guides for Claude Code, Cursor, VS Code, Codex, Gemini CLI and the agent frameworks are on the AI agents page.
{
"mcpServers": {
"formfeed": {
"command": "npx",
"args": ["-y", "@formfeed/mcp"],
"env": { "FORMFEED_API_KEY": "ff_test_..." }
}
}
}Safe defaults
Each connection works in one workspace: the one its API key belongs to, or the one you choose when you sign in. A signed-in agent gets at most four scopes and never more than your role allows: it reads templates and renders, renders and converts, and reads the workspace’s plan and units, but cannot publish or change templates, upload files or manage keys, and it always renders live. Use a test key while building: its renders are not metered, expire after a day and, on the Free plan, carry a small watermark.
From the blog
- Let the agent write the data, not the HTML →
An AI agent that writes a document's HTML writes a new document every time. One that fills a reviewed template writes the same one. What the template leaves for the model to get wrong, and how to check it for free before anything is printed.