Remote MCP server

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.

Agent callStreamable HTTP
analyze_pdf(cerfa.pdf)
schema.fields[] · 18 champs
fill_pdf({ field_1: … })
filled.pdf prêt
Transport
Streamable HTTP
Auth
OAuth 2.1 or Bearer
Tools
12 tools
01

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.

02

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.
Your documents are hosted in the EU (Frankfurt). One caveat all the same: connect the server to a working environment, not to sensitive production data. Agents can fall for prompt injection — keep a human in the loop on destructive actions.
03

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 template
04

Example 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. »

analyze_pdf → fill_pdf

« Fill in this lease and save the bank details to the vault for next time. »

analyze_pdf → add_to_vault → fill_pdf

« Find our W-9 template and pre-fill it for this contractor. »

list_templates → use_template → fill_pdf

« Turn this analysed contract into a reusable team template. »

create_template
05

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.

A

Documents (5)

+
get_documentdocuments:read

Ré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.

Inputs
document_id (uuid) · wait_for_completion?
list_documentsdocuments:read

Liste les documents de l’équipe, du plus récent au plus ancien, paginé par curseur.

Inputs
limit (1-100, déf. 20) · cursor? · q? · status? · include_voided?
analyze_pdfdocuments:write

Upload 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).

Inputs
pdf_base64 (≤4 MB, marche depuis ChatGPT/Claude.ai), pending_upload_id, ou pdf_url · name? · description?
fill_pdfdocuments:write

Remplit les champs détectés et produit le PDF complété. Textes, cases à cocher, nombres, et signatures/images via {dataUrl}.

Inputs
document_id · values (field_id → valeur) · return_format? (url par défaut, base64 pour hôtes sandboxés)
request_pdf_uploaddocuments:write

Renvoie une URL Supabase signée à usage unique pour téléverser des PDF jusqu’à 25 MB, puis appeler analyze_pdf avec pending_upload_id.

Inputs
fileName (.pdf) · sizeBytes (≤ 25 MB)
B

Coffre (1)

+
add_to_vaultvault:write

Stocke une pièce personnelle (fiche de paie, RIB, KBIS, passeport) dans le coffre. iFillPDF la réutilise pour pré-remplir les formulaires.

Inputs
file_base64 · file_name · mime_type (pdf/jpeg/png/webp/heic) · label?
C

Modèles (6)

+
list_templatestemplates:read

Parcourt la bibliothèque publique (scope=public) ou vos modèles équipe/privés (scope=mine).

Inputs
scope (public | mine) · category? · language? · q? · limit · cursor?
get_templatetemplates:read

Inspecte un modèle (champs, parties, structure). Ne renvoie jamais de valeurs pré-remplies.

Inputs
template_id
create_templatetemplates:write

Fige un document analysé en modèle réutilisable (privé ou équipe). La publication publique est réservée aux admins.

Inputs
source_document_id · name? · description? · category? · tags[]? · language? · visibility? (private | team)
use_templatetemplates:write

Duplique un modèle en nouveau document de travail pré-rempli avec ses valeurs par défaut. Gratuit — ne consomme pas de quota.

Inputs
template_id
update_templatetemplates:write

Met à jour les métadonnées et la visibilité de votre propre modèle. Seul le créateur peut éditer.

Inputs
template_id · name? · description? · category? · tags[]? · language? · visibility? (private | team)
delete_templatetemplates:write

Supprime définitivement votre modèle et ses fichiers. Les documents déjà créés à partir du modèle ne sont pas affectés.

Inputs
template_id
06

Sandboxed 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:

Upload

analyze_pdf with pdf_base64 (≤ 4 MB) rather than request_pdf_upload.

Download

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.

iFillPDF MCP Server: Fill PDF Forms from Claude or ChatGPT