FairePlace — Public MCP Server 🏠🇫🇷
A public, no-auth, remote MCP server that exposes FairePlace's free French residential rental tools to AI agents (ChatGPT, Claude, Perplexity, Cursor…): create & e-sign a lease (bail), check rent control, revise rent (IRL), compute a security deposit or rental yield, get an address risk report, and generate rental documents (rent receipts, inventory, notices, and more).
Zero LLM inference server-side. The server is a thin, deterministic proxy over FairePlace's public API — the calling agent pays for its own inference; FairePlace only runs Rust/Typst logic. Marginal cost ≈ 0.
Endpoint: https://mcp.faireplace.com/mcp · Registry: com.faireplace/public-tools
Quick start
Add the remote server to any MCP client:
| Client | How |
|---|---|
| Claude (Desktop / claude.ai) | Settings → Connectors → Add custom connector → https://mcp.faireplace.com/mcp |
| Cursor | Settings → MCP → Add → Streamable HTTP → https://mcp.faireplace.com/mcp |
| ChatGPT (Custom GPT) | Import the OpenAPI at https://mcp.faireplace.com/openapi.json as an Action (auth: none) |
| MCP Inspector | npx @modelcontextprotocol/inspector@latest → connect to the URL |
No API key, no account. Ask your agent things like "Check if a 1500 €/month rent is legal at 75001 Paris for a 45 m² 2-room" or "Create a furnished lease for a flat in Paris at 850 €".
Tools (21)
Data & compliance (return JSON):
| Tool | Purpose |
|---|---|
check_rent_control | Rent control verdict for an address (encadrement des loyers) |
get_reference_rent | Reference rent (€/m²) for a rent-controlled quarter |
simulate_irl / simulate_irl_by_quarters | Annual rent revision (IRL), explicit or server-resolved INSEE values |
calculate_deposit_restitution | Security-deposit cap, restitution deadline, penalties |
simulate_rental_yield | Gross/net yield + per-regime taxation (LMNP, micro-foncier…) |
check_address_risks | Natural/technological risk report (Géorisques) |
Lease creation (the conversion tool):
| Tool | Purpose |
|---|---|
create_lease_draft | Create a lease draft → returns a link to finalize & e-sign it (advanced eIDAS, PAdES-B-LT) on FairePlace |
Document generation (return a link that renders the PDF): generate_quittance, generate_etat_des_lieux, generate_conge, generate_cautionnement, generate_avenant, generate_resiliation_amiable, generate_relance_impaye, generate_inventaire_mobilier, generate_notice_information, generate_reparations_locatives, generate_grille_vetuste, generate_charges_recuperables, generate_bordereau_restitution.
How the lease → signature flow works
agent → create_lease_draft(owner, logement, lease)
→ FairePlace stores an anonymous draft, returns draft_token
→ tool returns https://mcp.faireplace.com/r?draft_token=…
user clicks the link
→ GET /r sets the draft_token cookie on .faireplace.com, 302 → app sign-up
→ on login, FairePlace ingests the draft and opens it on the Signature step
The server never hands back a signable document — signature stays behind FairePlace auth. Every link carries utm_source=mcp for attribution.
Architecture
Intentionally a thin adapter — not a domain application. All business logic (rent-control data, IRL indices, legal document rendering) lives in FairePlace's Rust backend; this Worker only maps MCP tool calls to the public /public/tools/* HTTP endpoints and formats results.
- Runtime: Cloudflare Worker (
McpAgent, Durable Object for session state). - Transport: Streamable HTTP on
/mcp. - Guardrail: native per-IP rate limit (100 req / 60 s).
- PDF delivery:
/pdf/<slug>?p=<base64url payload>serves an HTML page that fetches the PDF browser-side (avoids a same-zone Worker→origin block; no storage — the PDF is a local blob).
Endpoints
| Path | Purpose |
|---|---|
/mcp | MCP server (Streamable HTTP) |
/openapi.json | Curated OpenAPI 3.1 for GPT Actions |
/.well-known/ai-plugin.json | Plugin manifest |
/llms.txt | Passive AI discovery |
/r | Draft-resume → sets cookie → sign-up |
/pdf/<slug> | On-demand PDF rendering (browser-side) |
Development
npm install
npm run typecheck
npm run dev # wrangler dev (local)
npm run inspect # MCP Inspector
npm run deploy # wrangler deploy (needs Cloudflare auth)
Config lives in wrangler.jsonc (vars: API_BASE, WEB_BASE, SELF_BASE, DRAFT_REPRISE_URL, APP_SIGNUP_URL).
Discoverability
- Official MCP Registry:
com.faireplace/public-tools - Glama: connector
com.faireplace/public-tools
License
MIT © 2026 FairePlace (Thinkylab SAS). Not legal advice — an aid for French rental workflows.