# fenfill developer docs

fenfill finds the fields on a blank PDF form. The fenfill MCP server lets your agent use that, then fills the form on your own machine, so the answers never reach us. Everything here works with a fenfill API key, on Pro and above.

## Where to start

- [Quickstart](https://fenfill.com/docs/quickstart): Get a key, add the MCP server to your client, and fill your first form.
- [MCP server](https://fenfill.com/docs/mcp): Setup for each client, the 13 tools, settings and troubleshooting.
- [API reference](https://fenfill.com/docs/api/reference): Every /v1 endpoint, with parameters, schemas and curl examples.

[Changelog](https://fenfill.com/docs/changelog) · [@fenfill/mcp on npm](https://www.npmjs.com/package/@fenfill/mcp) · [Source on GitHub](https://github.com/fenfill/mcp) · [For agents](https://fenfill.com/features/agents)

## How data flows

1. Your agent calls `analyze_form` with a blank PDF. The MCP server uploads it to fenfill once. It is encrypted as soon as it arrives.
2. fenfill finds the fields and returns them: ids, types, labels and positions. The MCP server caches the result on your machine.
3. Your agent calls `fill_form` with the answers. The MCP server stamps them into a new PDF on your machine. Nothing is sent.

Unless you save it as a template, the blank PDF is deleted when its analysis finishes, and the analysis is kept for at most 24 hours, or 1 hour after it is first fetched. The full table is on [What is sent where](https://fenfill.com/docs/data-flow).

> **Worth knowing:** There is no fill endpoint in the API, and there won't be one in `/v1`. Filling always happens on your side. That's what keeps the answers off our servers.

---

This is the Markdown version of https://fenfill.com/docs.
