# Miramo

> French rental law for tenants and landlords: rent caps, rental zones and unfurnished lease drafts.

- name: fr.miramo/mcp
- version: 0.1.1
- connection class: R0 (autonomous)
- trust: 96/100
- quality: 82/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/fr.miramo%2Fmcp
- tools: https://api.protogrid.dev/v1/servers/fr.miramo%2Fmcp/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "miramo": {
      "type": "http",
      "url": "https://mcp.miramo.fr/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 100
- provenance: 85
- drivers: +repository +dns-namespace +website +reachable +uptime-100% +updated-6d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 82/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 88 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 6 of 6 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: check_rent_control_perimeter (idempotentHint, openWorldHint); prepare_lease_draft (idempotentHint, openWorldHint); check_tense_zone (idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 3,699 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: 83 (weight 15)

- warn `stability.changes`: 11 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name
- pass `stability.new_links`: no tool change named a new site

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 6, about 3,699 tokens to load them all
- tool set hash: 868081d86e6143d4a0b4fb309f563df2
- tools last changed: 2026-10-29T14:16:17.566Z
- badge: [![protogrid quality](https://protogrid.dev/badge/fr.miramo/mcp.svg)](https://protogrid.dev/servers/fr.miramo/mcp)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-29 `check_abc_zone` changed (inputSchema)
- 2026-10-29 `check_rent_control_perimeter` changed (inputSchema)
- 2026-10-29 `check_tense_zone` changed (inputSchema)
- 2026-10-29 `prepare_lease_draft` changed (inputSchema)
- 2026-10-29 `lookup_reference_rent` changed (description)
  - before: Donne le loyer de référence d'un logement à une adresse où les loyers sont encadrés (Paris, Lille, Lyon et Villeurbanne, Bordeaux, Montpellier, Seine-Saint-Denis avec Est Ensemble et Plaine Commune), selon l'arrêté préfectoral en vigueur aujourd'hui : le loyer de référence, le majoré (le plafond) et le minoré, en euros par m² et par mois. Avec la surface habitable, donne aussi le loyer maximum hors charges du logement. La réponse nomme l'arrêté, ses dates et le jour où Miramo l'a vérifié. Quand isStale est vrai, les montants sont un ordre de grandeur, pas le plafond légal. Hors encadrement, la réponse le dit et renvoie vers l'outil zone tendue de miramo.fr.
  - after: Donne le loyer de référence d'un logement à une adresse où les loyers sont encadrés (Paris, Lille, Lyon et Villeurbanne, Bordeaux, Montpellier, Seine-Saint-Denis avec Est Ensemble et Plaine Commune), selon l'arrêté préfectoral en vigueur aujourd'hui : le loyer de référence, le majoré (le plafond) et le minoré, en euros par m² et par mois. Avec la surface habitable, la réponse donne aussi le loyer maximum hors charges du logement. La réponse nomme l'arrêté, ses dates et le jour où Miramo l'a vérifié. Quand isStale est vrai, les montants sont un ordre de grandeur, pas le plafond légal. Hors encadrement, la réponse le dit et renvoie vers l'outil zone tendue de miramo.fr.
- 2026-10-29 `check_abc_zone` changed (description, outputSchema, annotations)
  - before: Donne la zone ABC d'une commune française (A bis, A, B1, B2 ou C) et ce qu'elle change pour un investissement : Loc'Avantages et les plafonds de loyer de la commune, le logement locatif intermédiaire (LLI), le PTZ, la fin du Pinel. Donne le nom de la commune, son code INSEE ou l'adresse du logement. Quand plusieurs communes portent le nom donné, la réponse les liste avec leur zone : demande laquelle à la personne. La réponse cite la liste officielle des communes et le jour où Miramo l'a relevée : cite-les.
  - after: Donne la zone ABC d'une commune française (A bis, A, B1, B2 ou C) et ce qu'elle change pour un investissement : Loc'Avantages et les plafonds de loyer de la commune, le logement locatif intermédiaire (LLI), le PTZ, la fin du Pinel. Prend le nom de la commune, son code INSEE ou l'adresse du logement. Quand plusieurs communes portent le nom donné, la réponse les liste avec leur zone. La réponse cite la liste officielle des communes et le jour où Miramo l'a relevée.
- 2026-10-29 `check_airport_noise_zone` changed (description, outputSchema, annotations)
  - before: Dit si un logement est dans une zone d'un plan d'exposition au bruit d'un aéroport, et laquelle (de A, la plus exposée, à D), avec ce que ça change pour le bail : dans une zone, il faut joindre un diagnostic bruit. Donne l'adresse complète du logement. Miramo lit les plans publiés par l'aviation civile à ce point. Quand Miramo ne peut pas trancher (trop près de la limite d'une zone, plans qui ne répondent pas, territoire sans plan), la réponse le dit et dit où vérifier. La réponse cite les plans et le jour où Miramo les a lus : cite-les.
  - after: Dit si un logement est dans une zone d'un plan d'exposition au bruit d'un aéroport, et laquelle (de A, la plus exposée, à D), avec ce que ça change pour le bail : dans une zone, il faut joindre un diagnostic bruit. Prend l'adresse complète du logement. Miramo lit les plans publiés par l'aviation civile à ce point. Quand Miramo ne peut pas trancher (trop près de la limite d'une zone, plans qui ne répondent pas, territoire sans plan), la réponse le dit et dit où vérifier. La réponse cite les plans et le jour où Miramo les a lus.
- 2026-10-29 `check_rent_control_perimeter` changed (description, outputSchema, annotations)
  - before: Dit si les loyers sont encadrés (encadrement du niveau des loyers, avec un loyer de référence) à une adresse ou dans une commune française : dans toute la commune, dans une partie seulement ou pas du tout, avec le territoire et l'arrêté préfectoral en vigueur aujourd'hui, ses dates et le jour où Miramo l'a vérifié. Donne l'adresse du logement, le nom de sa commune ou son code INSEE. La réponse dit aussi si Miramo tient le barème du territoire : quand il le tient, appelle ensuite lookup_reference_rent pour le loyer de référence d'un logement.
  - after: Dit si les loyers sont encadrés (encadrement du niveau des loyers, avec un loyer de référence) à une adresse ou dans une commune française : dans toute la commune, dans une partie seulement ou pas du tout, avec le territoire et l'arrêté préfectoral en vigueur aujourd'hui, ses dates et le jour où Miramo l'a vérifié. Prend l'adresse du logement, le nom de sa commune ou son code INSEE. La réponse dit aussi si Miramo tient le barème du territoire : quand il le tient, lookup_reference_rent donne le loyer de référence d'un logement.
- 2026-10-29 `check_tense_zone` changed (description, outputSchema, annotations)
  - before: Dit si une commune française est en zone tendue et dans quelle catégorie : 1 (zone tendue), 2 (zone touristique et tendue) ou hors zone, avec ce que ça change : le préavis du locataire d'un logement loué vide, la hausse du loyer entre deux locataires, la taxe sur les logements vacants. Donne l'adresse du logement, le nom de sa commune ou son code INSEE. Quand plusieurs communes portent le nom donné, la réponse les liste avec leur catégorie : demande laquelle à la personne. La réponse cite la liste officielle des communes et sa dernière mise à jour : cite-les.
  - after: Dit si une commune française est en zone tendue et dans quelle catégorie : 1 (zone tendue), 2 (zone touristique et tendue) ou hors zone, avec ce que ça change : le préavis du locataire d'un logement loué vide, la hausse du loyer entre deux locataires, la taxe sur les logements vacants. Prend l'adresse du logement, le nom de sa commune ou son code INSEE. Quand plusieurs communes portent le nom donné, la réponse les liste avec leur catégorie. La réponse cite la liste officielle des communes et sa dernière mise à jour.
- 2026-10-29 `prepare_lease_draft` changed (description, inputSchema, outputSchema, annotations)
  - before: Prépare un brouillon de bail de location vide (non meublé) et renvoie un lien vers le générateur de bail de miramo.fr, où la personne le termine : noms des parties, email, PDF et signature. Donne ce que la personne a dit du logement (adresse complète, surface, pièces, période de construction et le reste), du loyer et des charges, des dates et des documents qu'elle joindra. Tout est facultatif ; le site demande ce qui manque. Ne demande ni ne transmets jamais l'identité, l'email ou le téléphone du locataire ou du bailleur : le schéma les refuse. Rien n'est enregistré : le brouillon voyage dans le lien, à présenter en entier.
  - after: Prépare un brouillon de bail de location vide (non meublé) et renvoie un lien vers le générateur de bail de miramo.fr, où la personne le termine : noms des parties, email, PDF et signature. Prend ce que la personne a dit du logement (adresse complète, surface, pièces, période de construction et le reste), du loyer et des charges, des dates et des documents qu'elle joindra. Tout est facultatif ; le site demande ce qui manque. Le schéma refuse l'identité, l'email et le téléphone du locataire et du bailleur : la personne les saisit sur le site. Rien n'est enregistré : le brouillon est contenu dans le lien.

Full history: https://api.protogrid.dev/v1/servers/fr.miramo%2Fmcp/changes

## Remotes

- https://mcp.miramo.fr/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (6)

- `check_abc_zone`: Donne la zone ABC d'une commune française (A bis, A, B1, B2 ou C) et ce qu'elle change pour un investissement : Loc'Avantages et les plafonds de loyer de la commune, le logement locatif intermédiaire (LLI), le PTZ, la fin du Pinel. Prend le nom de la commune, son code INSEE ou l'adresse du logement. Quand plusieurs communes portent le nom donné, la réponse les liste avec leur zone. La réponse cite la liste officielle des communes et le jour où Miramo l'a relevée.
- `check_airport_noise_zone`: Dit si un logement est dans une zone d'un plan d'exposition au bruit d'un aéroport, et laquelle (de A, la plus exposée, à D), avec ce que ça change pour le bail : dans une zone, il faut joindre un diagnostic bruit. Prend l'adresse complète du logement. Miramo lit les plans publiés par l'aviation civile à ce point. Quand Miramo ne peut pas trancher (trop près de la limite d'une zone, plans qui ne répondent pas, territoire sans plan), la réponse le dit et dit où vérifier. La réponse cite les plans et le jour où Miramo les a lus.
- `check_rent_control_perimeter`: Dit si les loyers sont encadrés (encadrement du niveau des loyers, avec un loyer de référence) à une adresse ou dans une commune française : dans toute la commune, dans une partie seulement ou pas du tout, avec le territoire et l'arrêté préfectoral en vigueur aujourd'hui, ses dates et le jour où Miramo l'a vérifié. Prend l'adresse du logement, le nom de sa commune ou son code INSEE. La réponse dit aussi si Miramo tient le barème du territoire : quand il le tient, lookup_reference_rent donne le loyer de référence d'un logement.
- `check_tense_zone`: Dit si une commune française est en zone tendue et dans quelle catégorie : 1 (zone tendue), 2 (zone touristique et tendue) ou hors zone, avec ce que ça change : le préavis du locataire d'un logement loué vide, la hausse du loyer entre deux locataires, la taxe sur les logements vacants. Prend l'adresse du logement, le nom de sa commune ou son code INSEE. Quand plusieurs communes portent le nom donné, la réponse les liste avec leur catégorie. La réponse cite la liste officielle des communes et sa dernière mise à jour.
- `lookup_reference_rent`: Donne le loyer de référence d'un logement à une adresse où les loyers sont encadrés (Paris, Lille, Lyon et Villeurbanne, Bordeaux, Montpellier, Seine-Saint-Denis avec Est Ensemble et Plaine Commune), selon l'arrêté préfectoral en vigueur aujourd'hui : le loyer de référence, le majoré (le plafond) et le minoré, en euros par m² et par mois. Avec la surface habitable, la réponse donne aussi le loyer maximum hors charges du logement. La réponse nomme l'arrêté, ses dates et le jour où Miramo l'a vérifié. Quand isStale est vrai, les montants sont un ordre de grandeur, pas le plafond légal. Hors encadrement, la réponse le dit et renvoie vers l'outil zone tendue de miramo.fr.
- `prepare_lease_draft`: Prépare un brouillon de bail de location vide (non meublé) et renvoie un lien vers le générateur de bail de miramo.fr, où la personne le termine : noms des parties, email, PDF et signature. Prend ce que la personne a dit du logement (adresse complète, surface, pièces, période de construction et le reste), du loyer et des charges, des dates et des documents qu'elle joindra. Tout est facultatif ; le site demande ce qui manque. Le schéma refuse l'identité, l'email et le téléphone du locataire et du bailleur : la personne les saisit sur le site. Rien n'est enregistré : le brouillon est contenu dans le lien.
