RemplirPDF MCP server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@RemplirPDF MCP serverPrépare la quittance de loyer de septembre pour Paul Martin, 750 € plus 80,50 € de charges."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
RemplirPDF MCP server
Let your AI agent prepare French rental documents: furnished and unfurnished leases, inventories (état des lieux), rent receipts (quittances), rent notices, guarantor deeds, notices to quit and certificates. The agent picks the right template, asks you for the missing details, and generates the filled PDF in your RemplirPDF account, with the legal clauses already written.
Serveur MCP de RemplirPDF : votre assistant IA prépare bail, état des lieux, quittance de loyer et attestations en PDF rempli, avec les clauses légales déjà rédigées. Documentation en français : https://remplirpdf.fr/mcp
Remote server (recommended):
https://remplirpdf.fr/api/mcp(Streamable HTTP, OAuth 2.1 or API key)Registry name:
fr.remplirpdf/mcp-serverDocs: https://remplirpdf.fr/mcp · Privacy: https://remplirpdf.fr/confidentialite · Terms: https://remplirpdf.fr/cgv · Support: contact@remplirpdf.fr
What an agent can do
Tool | What it does | Behaviour |
| Lists the rental templates of the RemplirPDF catalogue (slug, category, signers). Call it first. | read-only |
| Fields of a template: required or not, expected format, options, computed fields, signers. Call it before generating. | read-only |
| Fills a template with the values the user gave, saves the PDF in their account, returns a 24-hour download link. With | writes (may overwrite) |
| The latest rental documents of the account. | read-only |
| A fresh 24-hour download link for a document of the account. | read-only |
Every tool has a title, a description of when to use it, described parameters, explicit readOnlyHint /
destructiveHint / openWorldHint annotations and an outputSchema (results come as structuredContent).
Generating documents and download links need an active RemplirPDF subscription. Without one the tools refuse with a clear message: no tool ever starts a payment or charges a card. Documents must reflect a real tenancy; the server is not meant to produce documents meant to mislead a third party.
Example: « Prépare la quittance de loyer de septembre pour Paul Martin, 750 € plus 80,50 € de charges, 12 rue des
Lilas à Lyon. » → list_templates → get_template("quittance-de-loyer") → the agent asks for the landlord's name →
generate_document(...) → a PDF link.
Related MCP server: layerone-mcp
Connect
OAuth (Claude, ChatGPT, Claude Code, Cursor, VS Code)
Add the server URL; your client opens RemplirPDF, you sign in (or create an account) and click Autoriser. You can disconnect at any time. Access tokens last one hour and are refreshed while the connection is active.
Claude (claude.ai, Claude Desktop): Settings → Connectors → Add custom connector →
https://remplirpdf.fr/api/mcp→ Connect.ChatGPT: Settings → Apps → developer mode → Create app →
https://remplirpdf.fr/api/mcp, authentication OAuth.Claude Code:
claude mcp add --transport http remplirpdf https://remplirpdf.fr/api/mcp, then/mcpto sign in.Cursor (
~/.cursor/mcp.json) and VS Code (.vscode/mcp.json, with"type": "http"): use the URL; the editor offers to sign in.
This repository's .mcp.json / mcp.json contain the same remote configuration (no secrets).
API key (any client that can send a header)
Create a key in your account (https://remplirpdf.fr/app/compte, « Clés API »). It is shown once; only its hash is
stored, and you can revoke it at any time. Send it as Authorization: Bearer rpdf_… (the Bearer prefix is
optional).
# Codex CLI, ~/.codex/config.toml (then export REMPLIRPDF_API_KEY)
[mcp_servers.remplirpdf]
url = "https://remplirpdf.fr/api/mcp"
bearer_token_env_var = "REMPLIRPDF_API_KEY"Local stdio server (this repository)
For clients that only speak stdio. It exposes exactly the remote tools (their definitions are generated from the live
server into src/tools.json) and runs them through RemplirPDF's HTTPS API with your API key.
# Docker
docker build -t remplirpdf-mcp .
docker run -i --rm -e REMPLIRPDF_API_KEY=rpdf_your_key remplirpdf-mcp
# From source (Node.js 20+)
npm ci && npm run build
REMPLIRPDF_API_KEY=rpdf_your_key node dist/index.js{
"mcpServers": {
"remplirpdf": {
"command": "node",
"args": ["/path/to/remplirpdf-mcp/dist/index.js"],
"env": { "REMPLIRPDF_API_KEY": "rpdf_your_key" }
}
}
}Variable | Default | |
| none | API key of your account. Without it the server starts and lists its tools; calls explain how to set the key. |
|
| Endpoint the tools are sent to. |
Maintenance: npm run sync-tools regenerates src/tools.json from the live server (REMPLIRPDF_API_KEY set:
tools/list; otherwise the public card /.well-known/mcp/server-card.json); npm test runs a stdio smoke test;
npm run interop -- https://remplirpdf.fr checks the remote OAuth flow and tools with the official MCP SDK client
(it creates a throwaway RemplirPDF account).
Security and privacy
OAuth 2.1 with PKCE (S256), exact redirect URIs, audience-bound one-hour tokens (RFC 8707), rotating refresh tokens, revocation (RFC 7009), Dynamic Client Registration (RFC 7591) and Client ID Metadata Documents.
Generated documents stay in your RemplirPDF account; download links expire after 24 hours.
Personal data is processed as described in the privacy policy: https://remplirpdf.fr/confidentialite
License
MIT, see LICENSE. RemplirPDF is a private service, not affiliated with the French administration.
Available Tools
5 toolsgenerate_documentGénérer le PDF rempliADestructiveInspect
Remplit un modèle avec les valeurs fournies et enregistre le PDF dans le compte RemplirPDF de l'utilisateur ; renvoie un lien de téléchargement valable 24 h et le lien du document dans l'application. Vérifie d'abord les champs obligatoires et les formats : en cas d'erreur, rien n'est créé et la réponse liste ce qui manque. Sans document_id, crée toujours un nouveau document ; avec document_id, remplace le contenu d'un document déjà généré avec le même modèle (l'ancienne version est écrasée). Les valeurs doivent être exactes et fournies par l'utilisateur. Nécessite un abonnement RemplirPDF actif : sinon l'outil refuse, sans rien facturer ni démarrer de paiement. Appelez get_template avant pour connaître les champs ; pour retrouver un document existant, utilisez list_documents.
| Name | Required | Description | Default |
|---|---|---|---|
| values | Yes | Valeurs des champs : { nom_du_champ: "valeur" }, avec les noms renvoyés par get_template. Dates AAAA-MM-JJ, mois AAAA-MM, montants 750 ou 750,50, cases à cocher "Oui". Les champs inconnus sont ignorés et listés dans ignored_fields. | |
| template | Yes | Slug du modèle (voir list_templates), par exemple quittance-de-loyer. | |
| document_id | No | Facultatif : identifiant (doc_…) d'un document déjà généré avec ce même modèle, à remplacer au lieu d'en créer un nouveau. Un document qui a déjà une demande de signature n'est jamais modifié : un nouveau document est alors créé. |
Output Schema
| Name | Required | Description |
|---|---|---|
| pages | Yes | Nombre de pages du PDF. |
| title | Yes | Titre du document dans le compte. |
| app_url | Yes | Page du document dans l'application RemplirPDF (connexion requise) : modifier, envoyer, faire signer. |
| template | Yes | Slug du modèle utilisé. |
| next_steps | Yes | Ce que l'utilisateur peut faire ensuite (signature, envoi). |
| document_id | Yes | Identifiant du document (doc_…). |
| download_url | Yes | Lien de téléchargement direct du PDF, sans connexion, valable 24 h. |
| ignored_fields | No | Champs fournis mais inconnus du modèle (ignorés). |
| download_expires_at | Yes | Date d'expiration du lien de téléchargement (ISO 8601). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: validation failures create nothing and return a list of missing items, document_id overwrites the prior version, a document with a pending signature request is never modified (a new one is created instead), and an active subscription is required with no billing on refusal. Annotations confirm destructive/non-idempotent, and the description supplies the concrete consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense paragraph whose opening sentence front-loads what the tool does and returns. Every clause carries information, though the semicolon-chained sentences pack validation, overwrite, subscription and routing concerns together without visual separation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the mutation risk, error/no-op behavior, subscription gate, sibling routing and the create-vs-overwrite branch. With an output schema present it correctly does not need to enumerate return fields, and nothing an agent needs to invoke it safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents the value formats and the document_id overwrite nuance, so the baseline is 3. The description nonetheless adds a real constraint not in the schema — values must be exact and user-supplied — and cross-references get_template for field names, plus the template slug source.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Starts with a specific verb+resource ('Remplit un modèle avec les valeurs fournies et enregistre le PDF'), then states the output artifacts (download link valid 24h plus the in-app document link). An agent can immediately distinguish this from siblings like get_template or get_download_link.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing: call get_template first to discover fields, use list_documents to retrieve an existing document. It also states the create-vs-replace branch on document_id, so the agent knows which mode it is entering and when each applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_download_linkObtenir un lien de téléchargementARead-onlyIdempotentInspect
Renvoie un nouveau lien de téléchargement du PDF (valable 24 h) et le lien du document dans l'application, pour un document du compte. À utiliser quand un lien précédent a expiré ou pour un document retrouvé avec list_documents ; ne crée ni ne modifie aucun document (pour générer, utilisez generate_document). Nécessite un abonnement RemplirPDF actif.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | Identifiant du document (doc_…), renvoyé par generate_document ou list_documents. |
Output Schema
| Name | Required | Description |
|---|---|---|
| title | Yes | Titre du document. |
| app_url | Yes | Page du document dans l'application RemplirPDF (connexion requise) : modifier, envoyer, faire signer. |
| document_id | Yes | Identifiant du document. |
| download_url | Yes | Lien de téléchargement direct du PDF, sans connexion, valable 24 h. |
| download_expires_at | Yes | Date d'expiration du lien de téléchargement (ISO 8601). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely new behavioral facts beyond them: the 24-hour link validity and the requirement for an active RemplirPDF subscription, which is an entitlement gate the annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the return value before the usage conditions, and each clause (validity, when-to-use, when-not, alternative, prerequisite) carries distinct information. It is dense and clause-heavy but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the description covers usage, the non-mutating nature, and the subscription precondition. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and schema coverage is 100% – the schema already documents document_id with its doc_ prefix and its provenance (generate_document/list_documents). The description adds nothing param-specific beyond 'pour un document du compte', so the baseline 3 is right.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: returns a new PDF download link (valid 24h) plus the in-app document link, scoped to a document of the account. It explicitly distinguishes itself from generate_document, so an agent can tell the two apart without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use conditions ('quand un lien précédent a expiré', 'pour un document retrouvé avec list_documents') and a when-not clause ('ne crée ni ne modifie aucun document'), plus the named alternative generate_document for generation. Something close to a complete routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_templateDécrire un modèleARead-onlyIdempotentInspect
Décrit un modèle : champs à remplir (nom technique, libellé, obligatoire ou non, format attendu, options, valeur par défaut), champs calculés automatiquement et signataires. À appeler avant generate_document pour savoir quelles informations demander à l'utilisateur (ne les inventez pas) ; pour trouver le slug, utilisez list_templates. Lecture seule : ne crée rien.
| Name | Required | Description | Default |
|---|---|---|---|
| template | Yes | Slug du modèle renvoyé par list_templates, par exemple bail-meuble ou quittance-de-loyer. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | Nom du modèle. |
| slug | Yes | Identifiant du modèle. |
| notes | Yes | Règles à connaître avant de générer. |
| pages | No | Nombre de pages du PDF. |
| signers | Yes | Signataires du document. |
| category | Yes | Famille de documents. |
| sections | Yes | Parties du formulaire, dans l'ordre du document. |
| guide_url | Yes | Guide du document sur remplirpdf.fr. |
| document_title | Yes | Titre imprimé sur le document. |
| computed_automatically | Yes | Champs calculés par RemplirPDF : ne pas les fournir. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered by structured data and the 'Lecture seule : ne crée rien' clause is largely redundant. The description does add genuine behavioral value with the 'ne les inventez pas' constraint on field values and the enumeration of what the response contains, which goes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, followed by the return contents and then the usage rules, with no filler sentences. The parenthetical field enumeration is somewhat long but each item informs what the agent must collect from the user, so it earns its place; only slight tightening is possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present the description needn't document return values, yet it still summarizes them; annotations carry the safety profile; and the single required parameter is fully specified in the schema. Nothing an agent needs to select and invoke this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'template' parameter already carries an enum plus a description pointing back to list_templates, so the schema does the heavy lifting. The description reinforces slug provenance but adds no format, casing, or validity detail beyond what the schema provides; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Décrit un modèle') and then enumerates the exact contents returned: fillable fields with their attributes, auto-computed fields, and signatories. This lets an agent distinguish it immediately from list_templates (which only lists) and generate_document (which produces the document).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the sequencing rule ('À appeler avant generate_document') and the reason ('pour savoir quelles informations demander à l'utilisateur'), plus a negative instruction not to fabricate values. It also routes the agent to list_templates for slug discovery, naming the alternative and the condition that selects it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_documentsLister mes documents de locationARead-onlyIdempotentInspect
Liste les derniers documents de location générés dans le compte de l'utilisateur (identifiant, titre, modèle, nombre de pages, date de mise à jour), du plus récent au plus ancien. À utiliser pour retrouver un document_id avant get_download_link, ou avant de mettre à jour un document avec generate_document. Lecture seule : ne crée ni ne modifie rien.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Nombre maximum de documents à renvoyer (de 1 à 50, 20 par défaut). |
Output Schema
| Name | Required | Description |
|---|---|---|
| documents | Yes | Documents, du plus récent au plus ancien. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the closing sentence 'Lecture seule : ne crée ni ne modifie rien' largely restates structured data. What it does add beyond annotations is the ordering guarantee (most recent first) and the returned field list, but no pagination limits, account scoping caveats, or failure modes are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the resource and scope, followed by the routing guidance. Slightly wasteful only in the trailing read-only sentence, which duplicates the annotation hints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only listing tool with an output schema present, everything an agent needs is covered: what it returns, ordering, and which sibling to call next. The field enumeration mildly duplicates the output schema but leaves no functional gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'limit' parameter is fully documented in the schema with default and 1-50 bounds, so the description reasonably leaves it alone. Baseline 3 applies since the description adds no syntax or semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Liste) and resource (documents de location générés dans le compte) plus the fields returned and the sort order (du plus récent au plus ancien). This clearly separates it from get_download_link and generate_document, which the description explicitly names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit downstream routing: use it to retrieve a document_id before calling get_download_link, or before updating a document with generate_document. That is a concrete when-to-use condition tied to named sibling tools, not an implied one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_templatesLister les modèles de locationARead-onlyIdempotentInspect
Liste les modèles de documents de location français proposés par RemplirPDF, un par page du catalogue (bail meublé, bail vide, bail mobilité, étudiant, colocation, commercial, précaire, état des lieux d'entrée et de sortie, quittance de loyer, avis d'échéance, attestations, acte de caution, préavis, congé pour vente…) avec leur slug, leur catégorie et leurs signataires. À appeler en premier quand le slug du modèle n'est pas encore connu ; pour les champs d'un modèle précis, utilisez get_template. Lecture seule : ne crée rien.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| templates | Yes | Les modèles disponibles. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered; the closing 'Lecture seule : ne crée rien' largely restates that. It does add useful non-annotation context: results are paginated one template per catalog page. No auth or rate-limit detail, but the bar is lower with annotations present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and the routing rule before the long parenthetical catalog list. The enumeration of a dozen template types is somewhat verbose, but it is informative and the sentence still earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the description still names the key fields. For a zero-parameter, read-only list tool the definition covers everything an agent needs to select and call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline is 4. The mention of slug/catégorie/signataires describes output fields rather than inputs, which is harmless.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Liste les modèles de documents de location français') and enumerates the catalog contents (bail meublé, bail vide, quittance, etc.) with the fields returned (slug, catégorie, signataires). It explicitly distinguishes itself from the sibling get_template, so an agent can tell the two apart without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit routing rule: call this first when the template slug is unknown, and use get_template instead for the fields of a specific template. The when-to-use and the named alternative are both present, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v1.1.0- First observed
generate_document - First observed
get_download_link - First observed
get_template - First observed
list_documents - First observed
list_templates
TDQS
Scored across 5 tools
Each tool targets a distinct resource+action: listing vs. describing templates, generating documents, listing documents, and fetching download links. The descriptions explicitly cross-reference each other (e.g., 'use list_templates for the slug, get_template for fields') and clarify boundaries. No two tools overlap in purpose.
All five tools follow a clean verb_noun snake_case pattern: get_template, list_templates, generate_document, list_documents, get_download_link. The convention is uniform throughout with no deviations.
Five tools is well-scoped for a document-generation service. Each tool earns its place in the discovery-to-download workflow without redundancy or thin coverage.
The surface covers the full lifecycle: list/describe templates, generate (with in-place update via document_id), list documents, and retrieve download links. The only minor gap is the absence of a delete_document operation, but core workflows have no dead ends.
Maintenance
Related MCP Connectors
French rental tools: create & e-sign a lease, rent control, IRL, deposit, receipts (France).
- KeyioOAuthcom.gokeyio
Run your rentals in Spain from your AI assistant: SES filings, VeriFactu invoices, rent, taxes.
Fill in 1,000+ legal PDF templates in many languages, get a signed PDF back. Free, no API key.
Your rental portfolio from any assistant: leases, rent, buildings, tenants and documents.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables users to generate rental agreements and receipts as PDFs through an AI-powered WhatsApp bot. Provides stamp duty information lookup and handles rental document creation with customizable templates.-

layerone-mcpofficial
AlicenseAqualityDmaintenanceEnables AI agents to generate documents (PDF/DOCX/Factur-X) and manage electronic signatures (eIDAS/PAdES) via natural language using LayerOne's DocX and Sign APIs.2038 npmMIT- AlicenseAqualityBmaintenanceExact French real-estate legal calculations for AI agents: IRL rent revision, service-charge reconciliation, compliant rent receipts — legal basis included in every answer.41MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to operate property management systems via natural language, covering repair orders, owner info, payments, notices, and inspections. Features a full agentic workflow with human-in-the-loop and observability.MIT