Skip to main content
Glama

Appraise a listing

appraise_listing
Read-onlyIdempotent

Compares a French listing's asking price with recent recorded sales (DVF) of the same type and a similar size around it (the smallest radius with enough of them): estimate with its interquartile range, gap and verdict, closest comparables (sales over 2.5 times off the median price per m² are left out as no market price), a headline such as "12 % au-dessus du marché", local price trend, the commune's main crime rates against France, its rent for the type (monthly rent for the floor area, gross yield at the asking price), its share of passoires thermiques (DPE F or G) for the type, its natural risks, its local tax rates (taxe foncière, waste tax, taxe d'habitation on second homes), its home internet (fibre and wired speeds), each mobile operator's 4G coverage level at the address (mobile_4g) and their antennas, amenities within 500 m, and the address's sea view when it has one. The estimate is the prix normal (resales without a view of the sea around) plus the premiums that apply (premiums): the energy label's discount or premium (décote/surcote DPE, resales only) when the label is known (energy, else its title and description say it: « DPE : F »), what the label fetches against the commune's mix of labels (ADEME) after the Notaires de France's « valeur verte » of 2024 resales per région and type (rates: each label's); the new-build premium (surcote neuf: what new homes sold off-plan fetch over resales in the commune, DVF 2023–2025; where it sold few, its département's read at the price of the resales around, the dearer they are the smaller) when the listing is new (new_build, else its title and description say so: VEFA, programme neuf, livraison prévue…), and the sun premium (surcote soleil) when the sun goes down into the sea (or the sea is seen) from its address, else when its description says so (unverified); the gap and verdict are against that total. It also gives what financing the asking price costs at France's current home-loan rates (financing: L'Observatoire Crédit Logement/CSA's latest month, per 15, 20 and 25 years: rate, monthly payment, total interest, and the commune's rent for the floor area minus the payment, borrowing the price and 8 % purchase costs less a 10 % down payment).

Input Schema

NameRequiredDescriptionDefault
latNoLatitude (WGS84).
lngNoLongitude (WGS84).
seaNoIts view of the sea, when known: the sun goes down into it, the sea is seen, or none; otherwise its address's view, then its description, decide.
typeNo"Appartement" or "Maison" (others compare with every sale).
placeNoCity, city start or postcode (e.g. "Carnac", "Paris 11e", "75011"); with address, the place it is in. Ignored when lat and lng are given.
priceYesAsking price.
titleNoThe listing's title.
energyNoIts energy label (DPE), when the listing gives it; "none": unknown (with by_user, the words are then not read).
addressNoStreet address with its postcode or city (e.g. "17 rue Gambey, 75011 Paris"), located where its sales were recorded (else its street's). Ignored when lat and lng are given.
by_userNo"new_build", "sea", "energy" or several joined by commas: what the user said themselves (it then beats the address's view and the words, and is shown as theirs).
surfaceNoFloor area in m².
new_buildNoWhether the home is new (sold off-plan or never lived in), when the listing says; otherwise its title and description decide.
descriptionNoThe listing's description: its words tell a new home, a view of the sea and the energy label.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / by_user / description
      Previous value: -"\"new_build\", \"sea\" or \"new_build,sea\": what the user said themselves (it then beats the address's view and is shown as theirs)."New value: +"\"new_build\", \"sea\", \"energy\" or several joined by commas: what the user said themselves (it then beats the address's view and the words, and is shown as theirs)."
    • changedInput schema / properties / description / description
      Previous value: -"The listing's description: its words tell a new home and a view of the sea."New value: +"The listing's description: its words tell a new home, a view of the sea and the energy label."
    • addedInput schema / properties / energy
      Added value: +{
      +  "description": "Its energy label (DPE), when the listing gives it; \"none\": unknown (with by_user, the words are then not read).",
      +  "enum": [
      +    "A",
      +    "B",
      +    "C",
      +    "D",
      +    "E",
      +    "F",
      +    "G",
      +    "none"
      +  ],
      +  "type": "string"
      +}
  2. Changed5 schema fields changed
    • addedInput schema / properties / by_user
      Added value: +{
      +  "description": "\"new_build\", \"sea\" or \"new_build,sea\": what the user said themselves (it then beats the address's view and is shown as theirs).",
      +  "type": "string"
      +}
    • addedInput schema / properties / description
      Added value: +{
      +  "description": "The listing's description: its words tell a new home and a view of the sea.",
      +  "type": "string"
      +}
    • addedInput schema / properties / new_build
      Added value: +{
      +  "description": "Whether the home is new (sold off-plan or never lived in), when the listing says; otherwise its title and description decide.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / sea
      Added value: +{
      +  "description": "Its view of the sea, when known: the sun goes down into it, the sea is seen, or none; otherwise its address's view, then its description, decide.",
      +  "enum": [
      +    "sunset",
      +    "sea",
      +    "none"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / title
      Added value: +{
      +  "description": "The listing's title.",
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • changedInput schema / properties / place / description
      Previous value: -"City, city start or postcode (e.g. \"Carnac\", \"Paris 11e\", \"75011\", \"SW1A\"); with address, the place it is in. Ignored when lat and lng are given."New value: +"City, city start or postcode (e.g. \"Carnac\", \"Paris 11e\", \"75011\"); with address, the place it is in. Ignored when lat and lng are given."
  4. First observed

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare it as a safe read-only, idempotent operation; the description goes far beyond by disclosing data sources (DVF, ADEME, Notaires, Observatoire Crédit Logement), exclusions (comparables over 2.5× off median), inference fallbacks from title/description, and financing assumptions (8% purchase costs, 10% down payment, rates per 15/20/25 years). This is rich behavioral context that would not be inferable from the annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one massive, run-on paragraph that tries to enumerate every output and methodology detail, making it hard to parse. While the first sentence is front-loaded, the overall size and convoluted phrasing are not concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description must carry the return-value burden, and it does exhaustively enumerate the estimate, IQR, gap, verdict, comparables, trends, crime, rent/yield, DPE, risks, taxes, internet, mobile 4G, amenities, sea view, and financing scenarios. Despite poor readability, the content is complete for this complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds integration semantics beyond the schema, such as by_user overriding address view and words, and how energy/new_build/sea are inferred when not explicitly provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states the specific action: comparing a French listing's asking price with recent recorded sales (DVF) and producing an estimate with verdict. It is clearly an aggregate appraisal tool, but it never names sibling tools like recent_sales or crime_stats to explicitly differentiate scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never states when to use this tool versus the many sibling data tools, nor any prerequisites or exclusions. Usage is only implied by the title and the verb 'compares'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources