Cubi Estate — MCP connector

We are creating a new, transparent, and hyper-personalized real estate market by addressing its shortcomings.

AI-native property search across 2.2M+ active listings in 17 European countries, in 7 languages. Read-only. Model Context Protocol over Streamable HTTP.

Endpoint

https://mcp.cubi.estate/mcp

Transport: MCP Streamable HTTP (stateless). Auth: optional — anonymous, rate-limited read access, or OAuth 2.1 (PKCE S256, dynamic client registration, scopes search and offline_access; discovery via /.well-known/oauth-protected-resource). Tokens can be revoked per grant (RFC 7009) at https://mcp.cubi.estate/oauth/revoke.

Connect it

Claude

Listed in the Anthropic Connectors Directory as Cubi Estate — add it from there, or Settings → Connectors → Add custom connector with the URL above. No authentication step.

ChatGPT

Published in the ChatGPT app directory as Cubi Estate (6 October 2026) — open the app page and add it from there. Developers can also add it as a custom MCP connector with the URL above (OAuth per user, or None for anonymous, rate-limited access).

Perplexity

Add as a remote MCP connector with the URL above (paid plans). Choose OAuth to connect per user — dynamic client registration accepts the Perplexity callback — or None for anonymous, rate-limited access. A directory listing has been requested.

Gemini — API

Remote MCP is supported directly as a tool type. No registration or allowlisting is required.

tools=[{ "type": "mcp_server", "name": "cubi_estate", # snake_case; hyphens are rejected "url": "https://mcp.cubi.estate/mcp", "allowed_tools": ["search_properties", "get_listing"], # optional }]

Omit headers entirely — this server needs no credential. allowed_tools is optional but worth setting to the two you actually use.

Gemini — CLI

Add to ~/.gemini/config/mcp_config.json (global) or .agents/mcp_config.json (per workspace):

{ "mcpServers": { "cubi_estate": { "serverUrl": "https://mcp.cubi.estate/mcp" } } }

⚠️ The field is serverUrl here, but url in the API above — the two are not interchangeable, and using the wrong one fails silently with the server never being contacted.

Tools

ToolWhat it does
search_propertiesSearch Cubi Estate's live property listings across 17 European countries.
get_listingFetch one Cubi Estate listing's full details.
get_contact_optionsHow a buyer can reach the agent for one Cubi Estate listing.
filter_listingsStructured property filter — bypasses natural-language extraction.
compare_asking_pricesCompare one listing's asking price with comparable homes on Cubi.
compare_inventoryWhat a budget buys in 2-3 towns or cities: the share of each place's
find_similar_elsewhereHomes like one listing, in another city, side by side with it.
get_price_historyHas this home's asking price changed? Every change Cubi observed.
corpus_statsDay-by-day Cubi corpus activity — aggregate counts only, no listings.
data_layer_statsLive coverage of Cubi's per-listing enrichment data layers.
get_daily_new_listing_statsHow many NEW listings Cubi added per day, by country and by source,

All tools are read-only (readOnlyHint annotated); none mutates data.

Try these prompts

Find 2-bedroom apartments in Porto under €400k with a balcony.
How many new listings per day did Portugal add over the last two weeks, and how does that compare with Spain?
Show the full details of the cheapest sea-view villa you can find in the Algarve.

Service posture

DataRead-only; no tool mutates anything.
LatencyPer-call budget 25s; typical calls < 3s. Errors are returned in-band.
FreshnessGathered from public property portals and agencies in the covered countries; each result shows the date its data last changed, and stats are computed live.
CoveragePortugal, Spain, Italy, France, Germany, Belgium, Austria, Finland, Cyprus, Croatia, Slovakia, Malta, Greece, Czech Republic, Poland, Netherlands, Bulgaria. Listings outside these countries may appear in results but are not covered: their place names are not resolved by search.
PrivacyEach tool call is logged with its tool name, full arguments (including search text), the listings returned, timing, status, caller IP address and User-Agent, and the OAuth client id for signed-in clients — never tokens. Used to run and secure the connector (rate limiting, abuse prevention, service quality). Free-text search queries and network addresses are removed after 7 days; the record is deleted after 14 days. See the privacy policy.
SourcesAggregated from public listing sites and partner agencies; each result links to its original source.

Troubleshooting

A search returns nothingBroaden it: drop a filter, widen the price range, or use a larger place name (a region rather than a neighbourhood). Coverage is strongest in IT, PL, DE, ES, PT, BE, FR, FI.
The first search is slowAfter a long idle period the first natural-language search can take up to 25s while caches warm, and returns a message saying so rather than hanging. Retry once — subsequent searches take a few seconds.
get_listing says not foundPass the listing URL exactly as printed on a result card, or a source-prefixed id from a recent result (e.g. dils:23116569). Listings that have since been withdrawn are no longer retrievable.
Replies are too longPass limit to search_properties (1–10) or filter_listings (1–50) to get fewer, shorter results.
Daily quota messageAnonymous use has a daily budget, weighted by what each call costs to serve. Ordinary conversational use will not reach it; automated bulk use will. Write to support@cubi.estate if you need a higher allowance.
Data looks out of dateResults are served from our index, not fetched live from the source site at request time; the corpus refreshes daily. Follow the source link for the authoritative current state.