Skip to content
Agentmart
Submit a tool

Cenogram - Polish Real Estate Prices & Parcel Data

Polish real estate for AI: 8M+ deed transaction prices (RCN) + per-parcel context by cadastral ID

Connector by cenogram.plOfficial · Domain verified by the MCP Registry

IndexedMITLocal (stdio)Remote (HTTP)★ 1
Write a review

Install

Works with Claude Code, VS Code, Codex, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/cenogram-pl-mcp-server

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Remote endpoint

  • https://mcp.cenogram.pl/mcp Remote (HTTP)

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Polish real estate for AI: 8M+ deed transaction prices (RCN) + per-parcel context by cadastral ID

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.

Tools
34 read · 0 write · 0 deleteRead-only
Secrets
1 (API keys, tokens or passwords)
Install scripts
None found
Runs as
Node.js package

Tools by what they do 34

Read from the source code; the running server may list different tools.

Read 34 · Look things up without changing anything.

  • compare_locations
  • estimate_value
  • get_building_breakdown
  • get_demographics
  • get_flood_risk
  • get_infrastructure_signals
  • get_market_overview
  • get_parcel_land_class
  • get_parcel_report
  • get_price_distribution
  • get_price_spread
  • get_price_statistics
Show 22 more tools
  • get_rental_yield
  • get_transaction_farmland
  • get_transaction_flood
  • get_transaction_heritage
  • get_transaction_landslide
  • get_transaction_nature
  • get_transaction_permits
  • get_transaction_planning
  • get_transaction_roads
  • get_transaction_subsurface
  • get_transaction_surroundings
  • get_transaction_transit
  • list_flood_risk_locations
  • list_locations
  • list_parcels_in_area
  • list_price_spread_locations
  • list_rental_yield_locations
  • resolve_parcel
  • search_by_area
  • search_by_polygon
  • search_parcels
  • search_transactions

Secrets and settings it asks for

Secrets: values you paste in that let it act as you.

  • CENOGRAM_API_KEY

Network hosts it talks to 1

  • mcp.cenogram.pl · found in remote endpoint, install command

Files it touches

  • Any path the agent passes to its tools

Tools (34)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • compare_locationsCompare Locationsread-only

    Compare real estate statistics across multiple locations side-by-side. Provide 2-5 district names to compare median price/m², average area, and transaction counts. This tool matches on name only. Call list_locations(search=...) first: use names it flags as RCN districts (rcn_district) — other names (most TERYT unit names) silently return no data here. Requires at least one filter besides districts (e.g., propertyType). Example: compare Mokotów, Wola, Ursynów for apartments. Note: median/average prices are market-based — fractional ownership shares and non-market deeds (public tenders, foreclos…

  • estimate_value[Beta] Apartment Value Estimateread-only

    [Beta] Estimate the market value of an apartment from comparable registered transaction prices near a point. An orientation estimate, NOT a certified appraisal (operat szacunkowy) — it does not account for the unit's condition, finish standard or floor, and does not replace a surveyor's valuation. Address by lat + lng (a point on the map) OR parcelId (a full cadastral id or internal UUID; the parcel centroid is used) — exactly one. area (usable area in m², 10–250) is REQUIRED: there is no per-address floor-area source in Poland, so the caller supplies it. Optional: rooms (1–10) and market (pri…

  • get_building_breakdownBuilding-by-Building Breakdownread-only

    Get the building-by-building breakdown for one transaction: footprint area, number of storeys, and estimated total floor area (footprint × storeys) for each building on the property. search_transactions / search_by_area / search_by_polygon return per-transaction building SUMS inline; this tool splits them into individual buildings. Use it after a search when a result has building data and you need the detail (e.g. a developed-land deed covering several buildings). Each building also carries a construction-age estimate derived from building-permit records. It is an ESTIMATE with an interval, ne…

  • get_demographicsDemographics & Local Statisticsread-only

    Demographic, economic, housing and other local statistics for a Polish location, from GUS BDL (Bank Danych Lokalnych) — Poland's public Central Statistical Office open-data bank. ~50 indicators across 11 categories (population, economy, housing, spatial planning, infrastructure, environment, safety, education, prices) plus a few derived metrics. Address by location (city/county name) OR teryt. A name resolves to county/powiat (4-digit) level; for richer gmina/district-level data (L6) pass a 6 or 7-digit teryt. teryt wins when both are given. Use list_locations to find TERYT codes — neighborhoo…

  • get_flood_risk[Beta] Flood-Hazard Exposure Shareread-only

    EXPERIMENTAL (beta): this tool may change or be withdrawn without notice; do not build critical workflows on it. Report what share of a Polish county's real-estate transactions sit on land in a mapped flood-hazard zone, broken down by severity, from the RCN registry. Severity bands are return periods: high = most frequent flooding (~1-in-10-year), medium (~1-in-100-year), low = rarest (~1-in-500-year). Counts land in a mapped hazard zone only; absence of a zone is never asserted as 'safe' (an area may be unmapped). Address by location (city/county name → resolves to a county) OR teryt (4-digit…

  • get_infrastructure_signalsInfrastructure Signalsread-only

    Signals that a Polish municipality is about to build infrastructure — sewerage, water supply, roads, street lighting, gas network or cycling infrastructure. Three independent public sources: tenders published in the national public procurement bulletin (rolling 12-month window), membership in an agglomeration of the national urban waste-water treatment programme (where collective sewerage exists or is planned), and the municipality's own planned capital expenditure from its multi-year financial forecast. Address by location (city/county name → aggregates every municipality in that county) OR t…

  • get_market_overviewMarket Overviewread-only

    Get a comprehensive overview of the Polish real estate transaction database. Returns: total transaction count, date range, breakdown by property type and market type, top locations, price statistics. Note: data quality varies by field - marketType is unknown for ~55% of records, transaction_date missing for ~1.7%. Note: median/average prices are market-based — fractional ownership shares and non-market deeds (public tenders, foreclosures, privileged/subsidized sales) are excluded from price aggregates. Transaction counts and coverage stay complete.

  • get_parcel_land_classGet Parcel Land Classificationread-only

    The official land-use and soil-quality classification recorded for one land parcel, and what it implies for taking the land out of agricultural use. Returns the land-use categories and the soil-quality grades entered for the parcel, whether any of those grades is in the protected I-III range, whether the parcel lies inside a city's administrative boundary (which changes the rule that applies), and a note on the re-designation consequences with the date the legal state behind it was verified. Use it when the question is specifically about the classification or about re-designating farmland. For…

  • get_parcel_reportGet Parcel Reportread-only

    The whole dossier for one land parcel in a single call: the parcel core (location, area, land use, plan designation), all thirteen enrichment layers (flood risk, heritage listing, landslide risk, subsurface: mining terrains and major groundwater reservoirs, nuisance surroundings, public-transport access, general-plan zoning, buildings on the parcel, recent building activity, agricultural-land eligibility, official land-use & soil-quality classification with its re-designation consequences where the county publishes it, nature: nearby forest and protected areas, roads: geometric road-access evi…

  • get_price_distributionPrice Distribution Histogramread-only

    Get price distribution histogram showing how many transactions fall into each price range. Useful for understanding the overall market price structure in Poland. Note: median/average prices are market-based — fractional ownership shares and non-market deeds (public tenders, foreclosures, privileged/subsidized sales) are excluded from price aggregates. Transaction counts and coverage stay complete.

  • get_price_spread[Beta] Asking vs Transaction Price Spreadread-only

    EXPERIMENTAL (beta): this tool may change or be withdrawn without notice; do not build critical workflows on it. Measure the asking-vs-transaction price spread for a Polish city or county: how far the median asking price per m² of apartments for sale sits above (or below) the median apartment transaction price per m² from the RCN registry. spread_pct = (asking − transaction) / transaction × 100. The spread can be NEGATIVE (asking below transaction) in premium-secondary cities — that is a valid answer, not an error. Address by location (city name → resolves to a county) OR teryt (4-digit county…

  • get_price_statisticsPrice per m² Statisticsread-only

    Get price per m² statistics by location for residential apartments in Poland. Note: only covers residential units (lokale mieszkalne). For other property types, use search_transactions. 'Warszawa'/'Kraków'/'Łódź' auto-expand to all sub-districts (Warszawa=19, Kraków=5, Łódź=6). Other names use partial match. Data quality: based on transaction prices from notarial deeds, not asking/listing prices. Coverage varies by county (some have data gaps of 5+ years). Note: median/average prices are market-based — fractional ownership shares and non-market deeds (public tenders, foreclosures, privileged/s…

  • get_rental_yield[Beta] Rental Yield Estimateread-only

    EXPERIMENTAL (beta): this tool may change or be withdrawn without notice; do not build critical workflows on it. Estimate the gross rental yield for a Polish city or county: annualized median asking rent (PLN/m²/month × 12) divided by the median apartment transaction price per m² (secondary market) from the RCN registry. Gross and top-line only — excludes vacancy, management, tax and maintenance. Indicative, not investment advice. Address by location (city name → resolves to a county) OR teryt (4-digit county code; 6-digit = dzielnica where available, today Warszawa's 18 districts, otherwise t…

  • get_transaction_farmlandTransaction Agricultural Land-Eligibility Breakdownread-only

    Get the parcel-by-parcel agricultural land-eligibility breakdown for one transaction, from official nationwide agricultural land-eligibility data (updated weekly): for each linked parcel with a matched eligible agricultural area — the eligible area in square metres, its share of the parcel (when the parcel's measured area is known), and how many source features compose it. The response also reports how many of the transaction's linked parcels carry a match and the source snapshot date. Useful for due-diligence on land that is actually eligible/maintained as agricultural (beyond what a registry…

  • get_transaction_floodTransaction Flood-Hazard Breakdownread-only

    Get the parcel-by-parcel flood-hazard breakdown for one transaction: for each linked plot that sits in a mapped flood zone — the worst hazard category (high/medium/low, i.e. ~1-in-10-year to ~1-in-500-year), the hazard type (river/coastal/infrastructure), the share of the plot inside the zone, and the full per-scenario list (each with its return period). search_transactions (and search_by_area) surface a per-transaction worst-case flood_risk inline; this tool splits that into the individual parcels and scenarios behind it. Use it after a search when a result shows flood_risk. (search_by_polygo…

Show 19 more tools
  • get_transaction_heritageTransaction Heritage-Listing Breakdownread-only

    Get the parcel-by-parcel heritage-listing breakdown for one transaction: for each linked plot with a detected heritage listing — the status (listed = a protected monument on/at the plot; zone = the plot lies within a protected urban layout or the designated surroundings of a monument), the share of the plot inside the protected area (when measurable), and the individual entries (category, name, function, period, entry date). search_transactions (and search_by_area) surface a per-transaction heritage_status inline; this tool splits that into the individual parcels and entries behind it. Use it …

  • get_transaction_landslideTransaction Landslide-Hazard Breakdownread-only

    Get the parcel-by-parcel landslide-hazard breakdown for one transaction, based on official landslide-hazard maps (1:10,000 scale): for each linked plot that intersects a mapped hazard area — the worst category ('landslide' = a mapped landslide area, 'threatened' = an area threatened by mass movements), the share of the plot inside the mapped zones, and the per-zone list (each with its source_version_date — the source-record version date, not a survey/observation date). An intersection at this scale means the parcel overlaps a mapped hazard area, not that the parcel itself is a landslide. searc…

  • get_transaction_natureTransaction Nature (Forest & Protected Areas) Breakdownread-only

    Get the parcel-by-parcel nature breakdown for one transaction: for each linked plot with a nature signal — the nearest forest within 2 km (forest_distance_m in metres, 0 = the plot overlaps forest, with its overlap share) and any overlapping protected natural areas: the sharpest form (protection_rank 1 = national park, 2 = nature reserve, 3 = Natura 2000, 4 = landscape park, 5 = protected landscape, 6 = other), building_restriction ('statutory_ban' = a build ban that follows directly from the Nature Protection Act for national parks and reserves, 'conditional' = restrictions depend on the act …

  • get_transaction_permitsTransaction Building-Permit Historyread-only

    Get the building-permit history for one transaction's parcels, from the official national registry of building permits and works notifications (records since 2016): for each case — its kind (permit / notification), the building intent and works type, the statutory object category, the deciding authority, the decision or intake date, the investment address, and the volume. Use it after a search to screen what has been built or approved on the transaction's land — a leading indicator of development activity. Match is by the parcel's current identifier, so splits/merges break the link. Permits ar…

  • get_transaction_planningTransaction General-Plan Zoningread-only

    Get the general-plan (plan ogólny, POG) zoning for one transaction's land: for each linked plot, the planning zones that cover it — zone symbol and name, the share of the plot each zone covers, and the building parameters the plan sets (max building height, max development intensity, max built-up coverage, min biologically active area) — plus any overlay areas (infill development area / obszar uzupełnienia zabudowy, central development area) that sit on top. Coverage is honest and THREE-STATE: 'covered' returns zone data; 'covered_no_data' means the municipality has an adopted general plan but…

  • get_transaction_roadsTransaction Road Accessread-only

    Get the plot-by-plot road-access evidence for one transaction: for each linked plot, the distance in meters to the nearest public road, to the nearest road of any kind, and to the nearest motorway/expressway/dual-carriageway — plus, for the nearest public road, the estimated distance to the EDGE of its carriageway, its management category ('national' | 'voivodeship' | 'county' | 'municipal'), its functional class ('motorway' | 'expressway' | 'main_accelerated' | 'main' | 'collector' | 'local' | 'access' | 'other') and whether it runs at ground level (false = it crosses on a viaduct or in a tun…

  • get_transaction_subsurfaceTransaction Subsurface Breakdownread-only

    Get the parcel-by-parcel subsurface breakdown for one transaction across two dimensions: mining terrains and major groundwater reservoirs. For each linked plot that overlaps either — the mining-terrain status ('active' | 'former') with its mineral class ('subsidence' = extraction with surface deformation, the actual mining-damage risk; 'surface' = open-pit working, mostly local impact; 'fluid' = borehole extraction; 'other'), the groundwater-reservoir status ('documented' | 'undocumented'), the share of the plot inside each, and the per-object lists (mining terrain: name, oversight authority, …

  • get_transaction_surroundingsTransaction Surroundings Breakdownread-only

    Get the plot-by-plot surroundings profile for one transaction: for each linked plot, the distance in meters to the nearest cemetery, landfill (waste disposal site), sewage treatment plant, industrial/storage area, large industrial plant, intensive livestock farm, high-voltage overhead power line and extra-high-voltage overhead power line, from reference land-use and environmental-registry data. Useful for due-diligence on nearby nuisances. Distances are approximate and measured from the plot boundary; 0 means the plot touches or overlaps such an area. Each category is searched within a fixed r…

  • get_transaction_transitTransaction Public Transport Access Breakdownread-only

    Get the parcel-by-parcel public transport access breakdown for one transaction: for each linked plot, the nearest public transport stop distances per transaction parcel, by mode (rail/metro/tram/bus), from open GTFS data — plus the nearest stop's name for each mode present. A mode is present only when a stop of that mode is within its cap (rail/metro 3000 m, tram 1500 m, bus 1000 m). TWO-STATE: a transaction whose land has no stop within cap in any mode returns nothing — absence of a row is never asserted as "no transit access" (open feeds cover cities and national rail, not every rural area).…

  • list_flood_risk_locations[Beta] List Flood-Risk Locationsread-only

    EXPERIMENTAL (beta): this tool may change or be withdrawn without notice; do not build critical workflows on it. List the counties for which get_flood_risk can return data (i.e. where transactions have a completed flood assessment). Use this to discover valid location/teryt values for get_flood_risk instead of guessing names. Each entry is coverage signal only (assessed sample size + confidence) — it does not compute the share; call get_flood_risk(location|teryt) for the actual exposure. Optional search filters by county name (diacritic-insensitive substring, min 2 chars). Results are sorted b…

  • list_locationsList Locations & TERYT Codesread-only

    Browse locations in two modes: 1. TERYT hierarchy (parent param): Navigate voivodeship → county → municipality → precinct. Returns TERYT codes for use in search_transactions(teryt=...). - No parent: 16 voivodeships (2-digit codes) - 2-digit: counties (4-digit), 4-digit: municipalities (6-digit), 6-digit: precincts 2. Name search (search param): Look up a place by name across all levels (voivodeship, county, municipality, precinct). Each match comes with its TERYT code, its parent unit, and the exact follow-up calls to make — use teryt= for precise administrative filtering. Rows also flag…

  • list_parcels_in_areaList Parcels in an Arearead-only

    Description is built at runtime.

  • list_price_spread_locations[Beta] List Price Spread Locationsread-only

    EXPERIMENTAL (beta): this tool may change or be withdrawn without notice; do not build critical workflows on it. List the cities/counties for which get_price_spread can return data (asking-sale coverage). Use this to discover valid location/teryt values for get_price_spread instead of guessing names. Each entry is coverage signal only (sale offer sample size + confidence) — it does not compute the spread; call get_price_spread(location|teryt) for the actual spread. Optional search filters by city name (diacritic-insensitive substring, min 2 chars). Results are sorted by asking_sample_n descend…

  • list_rental_yield_locations[Beta] List Rental Yield Locationsread-only

    EXPERIMENTAL (beta): this tool may change or be withdrawn without notice; do not build critical workflows on it. List the cities/counties for which get_rental_yield can return data (asking-rent coverage). Use this to discover valid location/teryt values for get_rental_yield instead of guessing names. Each entry is coverage signal only (offer sample size + confidence) — it does not compute the yield; call get_rental_yield(location|teryt) for the actual yield. Optional search filters by city name (diacritic-insensitive substring, min 2 chars). Results are sorted by rent_sample_n descending. Free…

  • resolve_parcelResolve Land Parcelread-only

    Resolve a land parcel to its cadastral identity using exactly ONE of: - parcelId: a full cadastral id, either raw '/' form ('142907_2.0014.342/5') or URL-safe '-' form ('142907_2.0014.342-5'), or the internal UUID from search results. - q: a full cadastral id, a UUID, OR free-text 'locality name + parcel number' (e.g. 'Sabnie 342/5'). The name may be a gmina name or a cadastral precinct (obręb) name; matching is exact and case-insensitive, so an unusual spelling may miss. A precinct name is not unique nationwide, so an ambiguous name comes back as several candidates rather than a guess. This i…

  • search_by_areaSearch Transactions by Radiusread-only

    Description is built at runtime.

  • search_by_polygonSearch Transactions by Polygonread-only

    Description is built at runtime.

  • search_parcelsSearch Land Parcelsread-only

    Search for land parcels by parcel ID prefix (autocomplete). Matches on the ID PREFIX only, never on an area: to list the parcels in a place or a shape use list_parcels_in_area, and to turn an address, a coordinate or 'locality + number' into one parcel use resolve_parcel. Returns matching parcels with their district, area, and GPS coordinates. Useful for finding exact parcel IDs, then searching transactions nearby. Example: search for parcels starting with '146518_8.01'. Coverage: this searches the cadastral register we hold — near-complete national coverage, though not the whole of it and not…

  • search_transactionsSearch Real Estate Transactionsread-only

    Description is built at runtime.

Signals

Stars
1
Forks
0
Open issues
0
Weekly downloads
41
Last commit
Sep 25, 2026 (1 month ago)
Last release
Sep 25, 2026 (1 month ago)
Last package publish
Sep 25, 2026 (1 month ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
pl.cenogram/mcp-server
Version
0.6.0
Auth
Auth not stated
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 25, 2026
Cite this page

Cenogram - Polish Real Estate Prices & Parcel Data MCP server. Agent Mart. https://agentmart.dev/connectors/cenogram-pl-mcp-server (last updated 2026-10-25)