Deweloperuch
Polish flat prices of two kinds that must not be mixed. RCN transaction prices are what flats actually sold for, from the notarial deeds in the national price register; the newest months are incomplete because deeds arrive late, and the statistics flag them. Developers’ asking prices come from the price lists developers publish daily on dane.gov.pl, with every offer’s full price history and flags for its 30- and 90-day lowest price and for suspicious discounts. Ten tools cover locations, a value estimate, price series and rankings, buildings, developments, developers and offers. Requests queue at one a second, results are cached and nothing is retried; after an HTTP 401, 403 or 429 or a challenge every tool answers STOP (at least 90 seconds after a 429, six hours otherwise) and sends nothing until then, so wait instead of repeating the call.
Unofficial: not affiliated with or endorsed by deweloperuch.pl or the Real Estate Price Register (RCN). This server’s requests to deweloperuch.pl’s public JSON API carry a User-Agent that points to this page. A TypeScript port of ten of the thirteen tools of deweloperuch-mcp by Mateusz Bratkowski and contributors, MIT-licensed.
Thirty seconds, any client.
claude mcp add --transport http deweloperuch https://mcp.wondel.ai/deweloperuch/mcp One command in your terminal — the server is available in every Claude Code session.
https://mcp.wondel.ai/deweloperuch/mcp Works on every Claude plan that supports custom connectors.
{
"mcpServers": {
"deweloperuch": {
"url": "https://mcp.wondel.ai/deweloperuch/mcp"
}
}
} Add to .cursor/mcp.json, VS Code's mcp.json, or any client that takes an mcpServers map.
npx mcp-remote https://mcp.wondel.ai/deweloperuch/mcp For stdio-only clients: mcp-remote bridges the remote endpoint to a local process. Streamable HTTP-capable clients can hit the URL directly.
This server works with Claude, Claude Code, Claude Desktop, Claude Cowork, Cursor, VS Code, Windsurf — and any other MCP client. Stdio-only clients connect through npx mcp-remote.
10 tools, fully typed.
Parameters below are transcribed from the server’s own zod schemas — what you see is what the tool validates.
deweloperuch_search_locations Find cities, districts and streets in Poland by a fragment of the name: the way to get the city_slug the other tools take, and the lat/lng of a street or district for the value estimate (an approximate point, not a building). Returns no prices; costs two requests to deweloperuch.pl.
| Param | Type | Description |
|---|---|---|
| query * | string | Fragment of a city, district or street name, 2–100 characters, Polish characters allowed, e.g. Kraków, Mokotów. |
deweloperuch_estimate_property_value Estimate a flat’s value from nearby RCN transaction prices around a point: estimated_value in PLN, price per m², the radius and period of the comparables, stats (median, mean, minimum, maximum per m²) and the nearest comparable sales with their building_slug. low_confidence is true when fewer than 5 comparables back it. Approximate, not an appraisal; needs coordinates and does not geocode an address.
| Param | Type | Description |
|---|---|---|
| lat * | number | Latitude of the point in Poland in degrees, 49–54.9, e.g. 52.2297 (the lat of a street or district from deweloperuch_search_locations, not just a city). |
| lng * | number | Longitude of the point in Poland in degrees, 14.1–24.2, e.g. 21.0122. |
| area_m2 * | number | Area of the flat in m², 10–500, e.g. 48.5. |
| address | string | Optional address text, 3–200 characters, e.g. Marszałkowska 100, Warszawa. Sent to the site but it does not set the location: lat and lng do. |
| limit | integer = 10 | How many nearest comparable transactions to return, 0–50; 0 = only the estimate and stats. |
deweloperuch_get_transaction_statistics RCN transaction prices of flats in one city, month by month or quarter by quarter: transaction counts and prices per m². The newest periods are incomplete because the register lags by months: a period flagged incomplete is never a trend, and last_complete_period says where to end one. Flats and whole cities only.
| Param | Type | Description |
|---|---|---|
| city * | string | city_slug of a city from deweloperuch_search_locations, e.g. warszawa, krakow, gdansk (lowercase, no Polish characters). Whole cities only: not districts, streets or polska. |
| granularity | enum = month | month: median and mean price per m², median area and median price; quarter: only the mean price per m² and the count, but a longer history. Months and quarters are different statistics: do not join them in one series. monthquarter |
| periods | integer = 12 | How many latest periods (months or quarters) to return, 1–60. For a multi-year trend choose quarter. |
deweloperuch_rank_locations Rank localities or powiats by RCN transaction count or by transaction price per m². Sorting by price leaves out places with fewer than 20 transactions unless min_transactions says otherwise. The site gives no period, and powiat counts cover many years: they only order the list.
| Param | Type | Description |
|---|---|---|
| level | enum = city | city: localities (cities, small towns and villages); powiat: powiats (no ranking_url and no counterpart in deweloperuch_search_locations). citypowiat |
| sort | enum = transactions_desc | transactions_desc: most transactions; price_per_m2_desc: highest price per m²; price_per_m2_asc: lowest price per m². Places without a price come last. transactions_descprice_per_m2_descprice_per_m2_asc |
| limit | integer = 20 | How many top entries of the ranking to return, 1–100. To see more places narrow min_transactions rather than raising the limit. |
| min_transactions | integer | Fewest transactions a place needs to be ranked, 0–10,000,000. Omitted = the default threshold: 20 when sorting by price, 0 for transactions_desc. 0 = all places; e.g. 50 gives steadier prices. |
deweloperuch_get_building One RCN building: address, coordinates, the site’s average prices and the flats sold in it, with the date, price, price per m², market, classification and buyer and seller type of each transaction. Buildings with flats only, not houses; buyers and sellers appear only as natural_person or legal_person. Transactions whose classification is not regular are not ordinary sales: do not average them in.
| Param | Type | Description |
|---|---|---|
| building_slug * | string | Building slug, e.g. 23-marca-79c-sopot: lowercase letters without Polish characters, digits and hyphens, from the building’s page address or from comparables in deweloperuch_estimate_property_value. |
| limit | integer = 10 | Most units in the result (those with the newest transactions), 0–50; 0 = only the building summary. |
| include_trend | boolean = false | true: add the mean price per m² of transactions around the building in the latest 12 quarters (neighbourhood_trend; one more request). |
deweloperuch_get_market_statistics Statistics of the developers’ offer market in one city: the number of offers, investments and developers, the distribution (min, p25, median, p75, max) of asking prices, prices per m² and areas, and the largest developers by number of offers. Active offers only and one city only, optionally within a price and area range. Asking prices, not transaction prices; a big city can take a few seconds.
| Param | Type | Description |
|---|---|---|
| city * | string | city_slug of one city from deweloperuch_search_locations, e.g. krakow (not polska). |
| price_min | integer | Lowest offer price in PLN, 0–99,999,999. |
| price_max | integer | Highest offer price in PLN, 0–99,999,999. |
| area_min | integer | Smallest area in m², 0–9,999. |
| area_max | integer | Largest area in m², 0–9,999. |
| top_developers | integer = 10 | How many of the largest developers to show, 1–30. |
deweloperuch_search_investments Search developer projects (primary market). With city: the investments on the city’s map, with averages over active offers. With name alone: any project in Poland, but only investment_slug, name and offers_active. No price or area filter here; use deweloperuch_get_market_statistics for ranges. Asking prices.
| Param | Type | Description |
|---|---|---|
| city | string | city_slug of one city from deweloperuch_search_locations, e.g. warszawa, sopot (not polska). Pass city, name or both. |
| name | string | Fragment of an investment name, 2–100 characters, e.g. Kolibki. With city, case and Polish characters do not matter; without city the site searches the whole country. |
| developer_slug | string | developer_slug from deweloperuch_search_developers or from results of the investment tools, e.g. atal. Only with city. |
| sort | enum = active_offers | Only with city. active_offers: most active offers; price_per_m2_asc / price_per_m2_desc: average price per m²; price_asc / price_desc: average price; name: alphabetical. Entries without an average come last. active_offersprice_per_m2_ascprice_per_m2_descprice_ascprice_descname |
| limit | integer = 10 | Most investments in the result, 1–30. |
deweloperuch_get_investment One developer project: city, street, coordinates, developer, the average prices of active offers, the offer counts and the list of offers (active first, then archived), optionally with each offer’s price history. Asking prices.
| Param | Type | Description |
|---|---|---|
| investment_slug * | string | investment_slug from deweloperuch_search_investments, e.g. smolna. |
| include_history | boolean = false | true: add the price history of every returned offer (a longer result, one more request). |
| limit | integer = 20 | Most offers in the result (active first), 0–200; 0 = only the investment summary. |
deweloperuch_get_offer One offer with its full price history, investment and developer, and price_flags: lowest_price_30d and lowest_price_90d, price_changes, largest_drop_pct and largest_rise_pct, and suspicious_reduction, true when the latest drop came within 30 days after a rise and does not go below the lowest price of the 30 days before it. Asking prices.
| Param | Type | Description |
|---|---|---|
| offer_id * | integer | offer_id from deweloperuch_get_investment. |
| investment_slug * | string | investment_slug of this offer’s investment, e.g. smolna (from deweloperuch_search_investments or deweloperuch_get_investment). offer_id alone is not enough. |
deweloperuch_search_developers Find developers (primary market) by a fragment of the name and get the developer_slug that deweloperuch_search_investments takes together with city. Returns no offers or prices.
| Param | Type | Description |
|---|---|---|
| name * | string | Fragment of a developer name, 2–100 characters, e.g. atal, Dom Development. |
| limit | integer = 5 | Most developers in the result, 1–20. |
Prompts that just work.
What is a 50 m² flat near ul. Nowogrodzka in central Warsaw worth, going by nearby notarial deeds, and how many sales is that based on?
deweloperuch_search_locations + deweloperuch_estimate_property_valueWhat did flats in Wrocław actually sell for per m² over the last eight quarters, and what do developers ask for new builds there today?
deweloperuch_get_transaction_statistics + deweloperuch_get_market_statisticsThis developer offer is marked as a bargain. Is the price really the lowest in 90 days, or was it raised before the discount?
deweloperuch_get_offerWhat comes back
deweloperuch_estimate_property_value · live response, captured 2026-10-23 from production, abridged
{
"lat": 52.2297,
"lng": 21.0122,
"area_m2": 50,
"estimated_value": 1063300,
"low_confidence": false,
"price_per_m2": 21266,
"radius_m": 200,
"period_months": 24,
"stats": { "count": 9, "median_price_per_m2": 23830, "average_price_per_m2": 22195, "min_price_per_m2": 13187, "max_price_per_m2": 31492 },
"comparables_total": 9,
"comparables_returned": 9,
"comparables_omitted": 0,
"truncated": false,
"source": "RCN (rejestr cen nieruchomości) via deweloperuch.pl",
"comparables": [
{"address": "Ulica Nowogrodzka 38", "date": "2025-04-17", "price": 765002, "area_m2": 43.57, "price_per_m2": 17558, "floor": 6, "distance_m": 150, "market": "secondary", "building_slug": "ulica-nowogrodzka-38-warszawa"},
{"address": "Ulica Widok 24", "date": "2025-05-27", "price": 977507, "area_m2": 41.02, "price_per_m2": 23830, "floor": 6, "distance_m": 150, "market": "secondary", "building_slug": "ulica-widok-24-warszawa"},
{"address": "Ulica Widok 22", "date": "2025-01-13", "price": 2100003, "area_m2": 66.76, "price_per_m2": 31456, "floor": 3, "distance_m": 150, "market": "secondary", "building_slug": "ulica-widok-22-warszawa"},
…
]
} This server’s results carry no fetchedAt or query echo. Each call returns one JSON object with the list under a key that depends on the tool (comparables, periods, items, units, offers, top_developers, price_history), and the seven price-quoting tools also return it as structuredContent. source, where present, names the data: RCN transaction prices or developers’ price lists, both via deweloperuch.pl. RCN transaction prices and developers’ asking prices come from different tools and must not be averaged together. A period flagged incomplete is never a trend, low_confidence is quoted with its caveat, and a suspicious_reduction is not a bargain. This version has no GUS or NBP price indices. A mistake in your input gets a guided error that names the parameter to fix and ends with a link to this page; a STOP error carries no link and tells the agent to stop and report the data as temporarily unavailable. Compact JSON in one text block, exactly how agents like it.
Add Deweloperuch
to your agent.
mcp.wondel.ai/deweloperuch/mcp Authless · Read-only public data · Streamable HTTP at /mcp