The PDF MCP server that fills the form, not just reads it.
A remote server: nothing to install, no Python, no local file path. Claude, ChatGPT, Gemini and Cursor get the same powers as the iFillPDF editor — AI field detection on any PDF, scanned ones included, then filling, signing, templates and a vault of your supporting documents.
Connect
The server is remote: you paste one URL, there is no package to install and no local path to configure. It speaks Streamable HTTP (legacy SSE stays available for older clients). A free account already unlocks every tool — exports simply carry a watermark, and removing it is a single one-time payment, never a subscription. Pick your client below; authentication is one click away.
claude mcp add --transport http ifillpdf https://mcp.ifillpdf.com/mcp
# La première connexion ouvre le flux OAuth iFillPDF dans le navigateur.Legacy SSE: https://mcp.ifillpdf.com/sse. With no browser available (CI, headless agents), switch to an ifk_live_… key created from your profile.
Authentication & scopes
Two modes, verified on every request. Either the Supabase OAuth 2.1 JWT — dynamic client discovery plus PKCE, so most clients connect after a single consent screen, with no key to copy around — or a long-lived ifk_live_… Bearer key for CI and headless runs. A Bearer key is a service credential and is granted every scope below.
documents:readLire les documents, leur schéma et leurs valeurs.documents:writeCréer, analyser, remplir et coffrer des documents.vault:writeAjouter des pièces personnelles au coffre.templates:readLister et lire les modèles visibles.templates:writeCréer, dupliquer, modifier et supprimer vos modèles.Typical flow
An agent chains detection then filling. The detection step is where iFillPDF parts ways with the usual PDF toolkits: it reads the page rather than the AcroForm layer, so a flat scan with no interactive fields still comes back with a field list. For recurring forms, create a template once and instantiate it afterwards.
1. analyze_pdf → upload the PDF, returns schema.fields[] (scans included)
2. add_to_vault → (optional) bank details, payslip, passport
3. fill_pdf → fills the detected fields, returns the PDF
4. use_template → instantiates a ready-made templateExample prompts
What you can ask in plain language, and the tools it triggers.
« This form is a scan with no fillable fields. Find them anyway and fill it in. »
« Fill in this lease and save the bank details to the vault for next time. »
« Find our W-9 template and pre-fill it for this contractor. »
« Turn this analysed contract into a reusable team template. »
Tool reference
Twelve tools across three families — documents, vault, templates. Each one enforces its own scope check; a missing scope returns an error prompting you to re-authorise the connection.
ADocuments (5)
+
Documents (5)
get_documentdocuments:readRécupère l’état, le schéma et les valeurs d’un document. wait_for_completion attend côté serveur jusqu’à la fin de l’analyse IA.
document_id (uuid) · wait_for_completion?list_documentsdocuments:readListe les documents de l’équipe, du plus récent au plus ancien, paginé par curseur.
limit (1-100, déf. 20) · cursor? · q? · status? · include_voided?analyze_pdfdocuments:writeUpload un PDF, détecte chaque champ remplissable et renvoie un schéma structuré (schema.fields[] avec position, label sémantique, type attendu, et rôles dans parties).
pdf_base64 (≤4 MB, marche depuis ChatGPT/Claude.ai), pending_upload_id, ou pdf_url · name? · description?fill_pdfdocuments:writeRemplit les champs détectés et produit le PDF complété. Textes, cases à cocher, nombres, et signatures/images via {dataUrl}.
document_id · values (field_id → valeur) · return_format? (url par défaut, base64 pour hôtes sandboxés)request_pdf_uploaddocuments:writeRenvoie une URL Supabase signée à usage unique pour téléverser des PDF jusqu’à 25 MB, puis appeler analyze_pdf avec pending_upload_id.
fileName (.pdf) · sizeBytes (≤ 25 MB)BCoffre (1)
+
Coffre (1)
add_to_vaultvault:writeStocke une pièce personnelle (fiche de paie, RIB, KBIS, passeport) dans le coffre. iFillPDF la réutilise pour pré-remplir les formulaires.
file_base64 · file_name · mime_type (pdf/jpeg/png/webp/heic) · label?CModèles (6)
+
Modèles (6)
list_templatestemplates:readParcourt la bibliothèque publique (scope=public) ou vos modèles équipe/privés (scope=mine).
scope (public | mine) · category? · language? · q? · limit · cursor?get_templatetemplates:readInspecte un modèle (champs, parties, structure). Ne renvoie jamais de valeurs pré-remplies.
template_idcreate_templatetemplates:writeFige un document analysé en modèle réutilisable (privé ou équipe). La publication publique est réservée aux admins.
source_document_id · name? · description? · category? · tags[]? · language? · visibility? (private | team)use_templatetemplates:writeDuplique un modèle en nouveau document de travail pré-rempli avec ses valeurs par défaut. Gratuit — ne consomme pas de quota.
template_idupdate_templatetemplates:writeMet à jour les métadonnées et la visibilité de votre propre modèle. Seul le créateur peut éditer.
template_id · name? · description? · category? · tags[]? · language? · visibility? (private | team)delete_templatetemplates:writeSupprime définitivement votre modèle et ses fichiers. Les documents déjà créés à partir du modèle ne sont pas affectés.
template_idSandboxed hosts (ChatGPT, Claude.ai, web)
Sandboxed MCP hosts cannot make outbound HTTP requests (a PUT to a signed URL, a GET on a download link). For those, move the bytes over the MCP channel itself:
analyze_pdf with pdf_base64 (≤ 4 MB) rather than request_pdf_upload.
fill_pdf with return_format: "base64" (falls back to a URL above 4 MB).
From a local CLI agent that can make outbound requests, prefer signed URLs and pending_upload_id to handle files up to 25 MB. The full REST contract lives on the developers page and in /openapi.json.