com.faireplace/public-tools
French rental tools: create & e-sign a lease, rent control, IRL, deposit, receipts (France).
Open source Repository Open in the app JSON README (API)
About
French rental tools: create & e-sign a lease, rent control, IRL, deposit, receipts (France).
Details
- Kind
- MCP servers
- Topic
- No topic detected
- Publisher
- com.faireplace
- Origin
- official
- Category
- ferramentas
- Transport
- http
- Version
- 0.3.0
- Last push
- 2026-07-02T14:07:24Z
- Repository state
- ativo
- Language
- TypeScript
- License
- MIT
- Added
- 2026-08-29 03:01:07
- Updated
- 2026-08-29 03:01:07
- Origin id
com.faireplace/public-tools
README
# FairePlace — Public MCP Server 🏠🇫🇷
[](https://registry.modelcontextprotocol.io/v0/servers?search=faireplace)
[](./LICENSE)
[](https://mcp.faireplace.com/mcp)
[](https://mcp.faireplace.com/mcp)
A **public, no-auth, remote MCP server** that exposes [FairePlace](https://faireplace.com)'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
```bash
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`](https://registry.modelcontextprotocol.io/v0/servers?search=faireplace)
- **Glama:** [connector `com.faireplace/public-tools`](https://glama.ai/mcp/connectors/com.faireplace/public-tools)
## License
[MIT](./LICENSE) © 2026 FairePlace (Thinkylab SAS). Not legal advice — an aid for French rental workflows.