API reference
Every tool the Secrets.RealEstate MCP server exposes — parameters, coverage and an example response.
- 15
- tools
- 8
- official public datasets
- 96
- départements — all of France
Contents
Search & data
Market
Location & environment
Connect
Add the hosted server to your MCP client (Claude Code, Cursor and others). Replace the placeholder with a key from the developer console.
claude mcp add secrets-realestate \
--transport http https://secrets.realestate/mcp \
--header "X-API-Key: sk_live_…" Every request must carry your key in the X-API-Key header. There is no anonymous access — each call resolves to your account and plan. The Developer API requires a paid plan and administrator approval.
Conventions
Every tool declares these MCP annotations:
readOnlyHint— never changes your data — every call only readsidempotentHint— the same call returns the same result, so it is safe to retryopenWorldHint— reads live external data, so results can change over time
- Location is given as coordinates (lat/lng) — resolve an address with geocode_address first.
- Pass lang (en, de, fr, it, ru, es) to localize text fields; it defaults to en.
- List tools (search_properties, get_my_listings) page with page and size.
- Response fields are snake_case.
- Every tool currently covers France — outside France, or if a provider is down, a tool returns an empty result or null, never an error.
Tools
Deep coverage spans every French département, joined from eight official public datasets — BDNB, IRIS, SSMSI, GeoRisques, Hub'Eau, Éducation IVAL, OpenStreetMap and DVF. More markets later.
Search & data
search_propertiesSearch property listings on Secrets.RealEstate by city, type, price, size and bedrooms (paginated). Use when the user wants to find or browse properties matching criteria.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
city | string | City to search in, e.g. Nice. | No |
property_type | string | Property type, e.g. apartment or house. | No |
price_min | integer | Minimum price. | No |
price_max | integer | Maximum price. | No |
size_min | integer | Minimum living area in square metres. | No |
size_max | integer | Maximum living area in square metres. | No |
bedrooms | integer | Minimum number of bedrooms. | No |
page | integer | Zero-based page number. Defaults to 0. | No |
size | integer | Page size, 1-100. Defaults to 10. | No |
Returns
| Field | Type | Description |
|---|---|---|
items | array | Listings on this page. |
property_id | integer | Listing id. |
property_type | string | Property type, e.g. apartment or house. |
price_amount | number | Asking price. |
price_currency | string | ISO currency code, e.g. EUR. |
monthly_fees | number | Monthly charges / co-ownership fees. |
size_sqm | integer | Living area in square metres. |
size_usable_sqm | integer | Usable area in square metres. |
room_count | integer | Total rooms. |
bedroom_count | integer | Bedrooms. |
bathroom_count | integer | Bathrooms. |
floor_level | integer | Floor the unit is on. |
total_floors | integer | Floors in the building. |
plot | integer | Plot / land area in square metres. |
condition | string | Property condition. |
elevator | boolean | Has an elevator. |
garage_spaces | integer | Number of garage / parking spaces. |
pool | boolean | Has a pool. |
furnished | boolean | Sold furnished. |
balcony | boolean | Has a balcony. |
terrace | boolean | Has a terrace. |
energy_rating | string | DPE energy class, A to G. |
ghg_class | string | Greenhouse-gas class, A to G. |
energy_kwh_m2_year | integer | Energy use, kWh/m2/year. |
ghg_kg_co2_m2_year | integer | Emissions, kg CO2/m2/year. |
heating_type | string | Heating type. |
year_built | integer | Construction year. |
street | string | Street name (null if the listing hides its address). |
house_number | string | House number (null if the listing hides its address). |
postal_code | string | Postal code. |
city | string | City. |
state | string | Region or state. |
country | string | Country name. |
country_code | string | ISO country code. |
latitude | number | Latitude (null if the listing hides its address). |
longitude | number | Longitude (null if the listing hides its address). |
listing_url | string | Source listing URL. |
created_date | string | When the listing was saved (ISO date). |
total | integer | Total matching listings. |
page | integer | Zero-based page number. |
size | integer | Page size. |
geocode_addressResolve an address or place name to coordinates (latitude/longitude), city and country. Use whenever the user gives an address or place, asks where something is, wants to locate or pin a property, or needs lat/lon before any other analysis. France is covered in depth; other areas still resolve but have limited downstream data.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
query | string | Address or place to locate, for example 12 rue de Rivoli, Paris. | Yes |
lang | string | Response language: en, de, fr, it, ru or es. Defaults to en. | No |
limit | integer | Maximum number of results, 1-10. Defaults to 5. | No |
Returns
| Field | Type | Description |
|---|---|---|
latitude | number | Latitude (WGS84). |
longitude | number | Longitude (WGS84). |
display_name | string | Full formatted address. |
city | string | City. |
state | string | Region or state. |
country | string | Country name. |
country_code | string | ISO 3166-1 alpha-2 country code, e.g. fr. |
result_type | string | Match granularity, e.g. house, street, city. |
get_listingGet the facts for a single property listing by its id — price, type, size, rooms, location, energy rating. Use the id returned by search_properties or get_my_listings.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
property_id | integer | The listing id (from search_properties or get_my_listings). | Yes |
Returns
| Field | Type | Description |
|---|---|---|
property_id | integer | Listing id. |
property_type | string | Property type, e.g. apartment or house. |
price_amount | number | Asking price. |
price_currency | string | ISO currency code, e.g. EUR. |
monthly_fees | number | Monthly charges / co-ownership fees. |
size_sqm | integer | Living area in square metres. |
size_usable_sqm | integer | Usable area in square metres. |
room_count | integer | Total rooms. |
bedroom_count | integer | Bedrooms. |
bathroom_count | integer | Bathrooms. |
floor_level | integer | Floor the unit is on. |
total_floors | integer | Floors in the building. |
plot | integer | Plot / land area in square metres. |
condition | string | Property condition. |
elevator | boolean | Has an elevator. |
garage_spaces | integer | Number of garage / parking spaces. |
pool | boolean | Has a pool. |
furnished | boolean | Sold furnished. |
balcony | boolean | Has a balcony. |
terrace | boolean | Has a terrace. |
energy_rating | string | DPE energy class, A to G. |
ghg_class | string | Greenhouse-gas class, A to G. |
energy_kwh_m2_year | integer | Energy use, kWh/m2/year. |
ghg_kg_co2_m2_year | integer | Emissions, kg CO2/m2/year. |
heating_type | string | Heating type. |
year_built | integer | Construction year. |
street | string | Street name (null if the listing hides its address). |
house_number | string | House number (null if the listing hides its address). |
postal_code | string | Postal code. |
city | string | City. |
state | string | Region or state. |
country | string | Country name. |
country_code | string | ISO country code. |
latitude | number | Latitude (null if the listing hides its address). |
longitude | number | Longitude (null if the listing hides its address). |
listing_url | string | Source listing URL. |
created_date | string | When the listing was saved (ISO date). |
get_my_listingsList the properties saved in the caller's own account (owner-scoped, paginated). Use when the user asks about their properties, their listings, properties they saved or added, or wants to review their own portfolio. Requires an authenticated caller.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
page | integer | Zero-based page number. Defaults to 0. | No |
size | integer | Page size, 1-100. Defaults to 10. | No |
Returns
| Field | Type | Description |
|---|---|---|
items | array | Listings on this page. |
property_id | integer | Listing id. |
property_type | string | Property type, e.g. apartment or house. |
price_amount | number | Asking price. |
price_currency | string | ISO currency code, e.g. EUR. |
monthly_fees | number | Monthly charges / co-ownership fees. |
size_sqm | integer | Living area in square metres. |
size_usable_sqm | integer | Usable area in square metres. |
room_count | integer | Total rooms. |
bedroom_count | integer | Bedrooms. |
bathroom_count | integer | Bathrooms. |
floor_level | integer | Floor the unit is on. |
total_floors | integer | Floors in the building. |
plot | integer | Plot / land area in square metres. |
condition | string | Property condition. |
elevator | boolean | Has an elevator. |
garage_spaces | integer | Number of garage / parking spaces. |
pool | boolean | Has a pool. |
furnished | boolean | Sold furnished. |
balcony | boolean | Has a balcony. |
terrace | boolean | Has a terrace. |
energy_rating | string | DPE energy class, A to G. |
ghg_class | string | Greenhouse-gas class, A to G. |
energy_kwh_m2_year | integer | Energy use, kWh/m2/year. |
ghg_kg_co2_m2_year | integer | Emissions, kg CO2/m2/year. |
heating_type | string | Heating type. |
year_built | integer | Construction year. |
street | string | Street name (null if the listing hides its address). |
house_number | string | House number (null if the listing hides its address). |
postal_code | string | Postal code. |
city | string | City. |
state | string | Region or state. |
country | string | Country name. |
country_code | string | ISO country code. |
latitude | number | Latitude (null if the listing hides its address). |
longitude | number | Longitude (null if the listing hides its address). |
listing_url | string | Source listing URL. |
created_date | string | When the listing was saved (ISO date). |
total | integer | Total matching listings. |
page | integer | Zero-based page number. |
size | integer | Page size. |
Market
get_comparable_salesRecent comparable sold properties near a location (official DVF records) with price, size and a liquidity score. France only. Pass coordinates from geocode_address.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
lat | number | Latitude (WGS84). Obtain it from geocode_address. | Yes |
lng | number | Longitude (WGS84). Obtain it from geocode_address. | Yes |
lang | string | Response language: en, de, fr, it, ru or es. Defaults to en. | No |
Returns
| Field | Type | Description |
|---|---|---|
comparables | array | Recent nearby sales (DVF). |
date | string | Sale date (ISO). |
price | integer | Sale price. |
price_per_sqm | integer | Price per square metre. |
size_sqm | integer | Living area in square metres. |
object_type | string | Property type. |
transaction_type | string | Transaction type. |
latitude | number | Latitude (WGS84). |
longitude | number | Longitude (WGS84). |
liquidity | object | Market liquidity for the area. |
score | integer | Liquidity score (0-100). |
grade | string | Liquidity grade. |
total_transactions | integer | Transactions in the sample. |
annual_volume | integer | Approximate sales per year. |
price_variation | number | Price dispersion. |
distinct_types | integer | Distinct property types seen. |
get_price_trendsPrice-per-square-metre trend history for a location (official DVF sale records). France only. Pass coordinates from geocode_address.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
lat | number | Latitude (WGS84). Obtain it from geocode_address. | Yes |
lng | number | Longitude (WGS84). Obtain it from geocode_address. | Yes |
lang | string | Response language: en, de, fr, it, ru or es. Defaults to en. | No |
Returns
| Field | Type | Description |
|---|---|---|
currency | string | ISO currency code. |
series | array | One series per asset type. |
name | string | Series name (asset type). |
points | array | Yearly price-per-sqm points. |
year | integer | Year. |
value | integer | Price per square metre. |
get_location_ratingLocation rating for a point: mean price, net rent and related neighbourhood market metrics. France only. Pass coordinates from geocode_address.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
lat | number | Latitude (WGS84). Obtain it from geocode_address. | Yes |
lng | number | Longitude (WGS84). Obtain it from geocode_address. | Yes |
lang | string | Response language: en, de, fr, it, ru or es. Defaults to en. | No |
Returns
| Field | Type | Description |
|---|---|---|
currency | string | ISO currency code. |
description | string | Long description of the location market. |
summary | string | Short summary. |
last_update | string | Date the figures were last updated (ISO). |
summaries | array | Per-asset-type metrics. |
asset_type | string | Asset type. |
price_per_sqm | integer | Mean sale price per square metre. |
rent_per_sqm | number | Mean net rent per square metre. |
grade | string | Grade for the asset type. |
Location & environment
get_air_qualityAir-quality index and grade for a location. Pass coordinates from geocode_address.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
lat | number | Latitude (WGS84). Obtain it from geocode_address. | Yes |
lng | number | Longitude (WGS84). Obtain it from geocode_address. | Yes |
lang | string | Response language: en, de, fr, it, ru or es. Defaults to en. | No |
Returns
| Field | Type | Description |
|---|---|---|
aqi | number | Air-quality index. |
grade | string | Air-quality grade (A to G). |
get_seasonal_climateSeasonal temperature / climate profile for a location. Pass coordinates from geocode_address.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
lat | number | Latitude (WGS84). Obtain it from geocode_address. | Yes |
lng | number | Longitude (WGS84). Obtain it from geocode_address. | Yes |
lang | string | Response language: en, de, fr, it, ru or es. Defaults to en. | No |
Returns
| Field | Type | Description |
|---|---|---|
sunny_days | integer | Sunny days per year. |
seasons | array | Per-season temperature summary. |
season | string | Season: winter, spring, summer or autumn. |
summary | string | Short text summary. |
min_celsius | number | Typical low temperature (Celsius). |
max_celsius | number | Typical high temperature (Celsius). |
get_neighborhoodLiving environment for a location: amenities, schools, leisure, safety and water quality. France only. Pass coordinates from geocode_address.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
lat | number | Latitude (WGS84). Obtain it from geocode_address. | Yes |
lng | number | Longitude (WGS84). Obtain it from geocode_address. | Yes |
lang | string | Response language: en, de, fr, it, ru or es. Defaults to en. | No |
Returns
| Field | Type | Description |
|---|---|---|
tabs | array | One entry per environment domain. |
category | string | Domain, e.g. amenities, schools, safety. |
grade | string | Grade for the domain (A to G). |
badges | array | Highlight labels. |
text | string | Short description. |
get_noiseEstimated baseline noise level for a location, in decibels. Pass coordinates from geocode_address.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
lat | number | Latitude (WGS84). Obtain it from geocode_address. | Yes |
lng | number | Longitude (WGS84). Obtain it from geocode_address. | Yes |
lang | string | Response language: en, de, fr, it, ru or es. Defaults to en. | No |
Returns
| Field | Type | Description |
|---|---|---|
base_noise | integer | Estimated baseline noise level in decibels. |
Insights
get_building_insightsFull building report for a location: categorised buyer insights (energy/DPE, structural, regulatory, and natural/technological risks such as flood, seismic, clay and radon), each with severity, detail, a recommendation, the applicable regulation and its data source and confidence, plus an overall risk score. Use for due diligence on an address. Pass coordinates and the country_code from geocode_address: France has the full 36-category report; Germany a partial report from open German data. An out-of-coverage point returns an empty report rather than an error.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
lat | number | Latitude (WGS84). Obtain it from geocode_address. | Yes |
lng | number | Longitude (WGS84). Obtain it from geocode_address. | Yes |
country | string | ISO 3166-1 alpha-2 country code from geocode_address (country_code): fr for the full report, de for the German partial report. Defaults to fr. | No |
lang | string | Response language: en, de, fr, it, ru or es. Defaults to en. | No |
Returns
| Field | Type | Description |
|---|---|---|
latitude | number | Latitude (WGS84). |
longitude | number | Longitude (WGS84). |
risk_score | integer | Overall risk score (0-100); null if out of coverage. |
risk_label | string | Label for the risk score. |
total_insights | integer | Number of insights returned. |
insights | array | Categorised buyer insights. |
category | string | Insight category. |
severity | string | Severity level. |
title | string | Short title. |
detail | string | What was found. |
recommendation | string | Suggested action. |
regulation | string | Applicable regulation, if any. |
source | string | Knowledge-graph inference chain that produced this insight. |
confidence | number | Data reliability (0-1), from the source quality tier. |
source_version | string | Data source identifier, e.g. bdnb_open_data or the German source. |
get_renovation_advicePrioritised renovation and energy plan for a building: the renovation-relevant findings — envelope insulation deficiencies, heating and hot-water obsolescence, the worst heat-loss element, window quality, thermal bridges, the estimated energy bill, carbon footprint, the DPE rental-ban regulation, and green-energy / district-heating options — filtered from the full building report and ordered most-urgent first with a priority rank, so you can advise what to fix first. France has the full analysis; Germany a partial one. Pass coordinates and the country_code from geocode_address. Out of coverage returns an empty plan, not an error.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
lat | number | Latitude (WGS84). Obtain it from geocode_address. | Yes |
lng | number | Longitude (WGS84). Obtain it from geocode_address. | Yes |
country | string | ISO 3166-1 alpha-2 country code from geocode_address (country_code): fr for the full report, de for the German partial report. Defaults to fr. | No |
lang | string | Response language: en, de, fr, it, ru or es. Defaults to en. | No |
Returns
| Field | Type | Description |
|---|---|---|
latitude | number | Latitude (WGS84). |
longitude | number | Longitude (WGS84). |
total_steps | integer | Number of renovation steps returned. |
steps | array | Renovation-relevant insights, most urgent first (fix the first one first). |
category | string | Insight category. |
severity | string | Severity level. |
title | string | Short title. |
detail | string | What was found. |
recommendation | string | Suggested action. |
regulation | string | Applicable regulation, if any. |
source | string | Knowledge-graph inference chain that produced this insight. |
confidence | number | Data reliability (0-1), from the source quality tier. |
source_version | string | Data source identifier, e.g. bdnb_open_data. |
get_property_reportOne-shot due-diligence report for an address: bundles the building insights (energy/DPE, structural, regulatory and natural/technological risks), comparable sold properties, price-per-square-metre trends, the location rating (mean price and net rent), the risk assessment, and the local environment (air quality, seasonal climate, neighbourhood and noise) into a single response. Use for a complete property review in one call instead of chaining the individual tools; each section matches its dedicated tool's shape. Any section out of coverage is omitted. France is covered in depth; elsewhere the sections that resolve are returned. Pass coordinates and the country_code from geocode_address.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
lat | number | Latitude (WGS84). Obtain it from geocode_address. | Yes |
lng | number | Longitude (WGS84). Obtain it from geocode_address. | Yes |
country | string | ISO 3166-1 alpha-2 country code from geocode_address (country_code): fr for the full report, de for the German partial report. Defaults to fr. | No |
lang | string | Response language: en, de, fr, it, ru or es. Defaults to en. | No |
Returns
| Field | Type | Description |
|---|---|---|
latitude | number | Latitude (WGS84). |
longitude | number | Longitude (WGS84). |
building_insights | object | Same shape as get_building_insights. Null if out of coverage. |
comparable_sales | object | Same shape as get_comparable_sales. Null if unavailable. |
price_trends | object | Same shape as get_price_trends. Null if unavailable. |
location_rating | object | Same shape as get_location_rating. Null if unavailable. |
risk_assessment | object | Same shape as get_risk_assessment. Null if unavailable. |
air_quality | object | Same shape as get_air_quality. Null if unavailable. |
seasonal_climate | object | Same shape as get_seasonal_climate. Null if unavailable. |
neighborhood | object | Same shape as get_neighborhood. Null if unavailable. |
noise | object | Same shape as get_noise. Null if unavailable. |
get_risk_assessmentNatural and technological risk assessment for a location (official GeoRisques data): flood, seismic, clay/subsidence and radon. France only. Pass coordinates from geocode_address.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
lat | number | Latitude (WGS84). Obtain it from geocode_address. | Yes |
lng | number | Longitude (WGS84). Obtain it from geocode_address. | Yes |
lang | string | Response language: en, de, fr, it, ru or es. Defaults to en. | No |
Returns
| Field | Type | Description |
|---|---|---|
risks | array | One entry per hazard. |
category | string | Hazard, e.g. flood, seismic, clay, radon. |
grade | string | Risk grade. |
explanation | string | What the grade means here. |
confidence | number | Confidence (0-1). |
Start building
Request developer access, generate an API key and connect your MCP client.