Polish property on Gratka.pl/Morizon.pl (one database): flats, houses, plots, premises, buy or rent.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Full details of one Gratka.pl listing: price and price per m² (PLN), area, rooms, floor, year built, property type, transaction and market, the address with district and coordinates, seller type and name (agency or developer; private owners are not named), the listing's detail tables as shown on the page (Polish labels and values: condition, rent and charges, building type, heating, ownership, available from…), amenities, the full description and photo URLs. No phone numbers. Get the id from gratka_search. Fetched live from Gratka.pl's own API (typically under 1 s). Result: { source, fetchedAt, listing: { source, id, url, title, active, property_type, transaction, market, kind, development, price, price_per_m2, currency, area_m2, rooms, floor, year_built, address, geo, seller_type, seller_name, agent_name, date_posted, updated, details, amenities, description, photos }, note? } — `note` is set when the listing is no longer active.
The listing's id (e.g. '48184615') or its full https://gratka.pl link, as returned by gratka_search.
Force a fresh fetch and bypass this server's result cache (5 min). Default false.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http gratka https://mcp.wondel.ai/gratka/mcp
Full details of one Gratka.pl listing: price and price per m² (PLN), area, rooms, floor, year built, property type, transaction and market, the address with district and coordinates, seller type and name (agency or developer; private owners are not named), the listing's detail tables as shown on the page (Polish labels and values: condition, rent and charges, building type, heating, ownership, available from…), amenities, the full description and photo URLs. No phone numbers. Get the id from gratka_search. Fetched live from Gratka.pl's own API (typically under 1 s). Result: { source, fetchedAt, listing: { source, id, url, title, active, property_type, transaction, market, kind, development, price, price_per_m2, currency, area_m2, rooms, floor, year_built, address, geo, seller_type, seller_name, agent_name, date_posted, updated, details, amenities, description, photos }, note? } — `note` is set when the listing is no longer active.
| Argument | Type | Description |
|---|---|---|
| id* | string | The listing's id (e.g. '48184615') or its full https://gratka.pl link, as returned by gratka_search. |
| no_cache | boolean | Force a fresh fetch and bypass this server's result cache (5 min). Default false. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The listing's id (e.g. '48184615') or its full https://gratka.pl link, as returned by gratka_search."
},
"no_cache": {
"type": "boolean",
"description": "Force a fresh fetch and bypass this server's result cache (5 min). Default false."
}
}
}Search property listings on Gratka.pl, a major Polish real-estate portal: flats, houses, plots, commercial premises, offices, garages and rooms, for sale or for rent, filtered by location (any Polish city, district, town, village, county or voivodeship), price, area, rooms, private sellers only and primary/secondary market, sorted like the site. Returns one results page (up to 35 listings) with each listing's price, price per m², area, rooms, floor, location, seller and link; pass a listing `id` to gratka_offer for the full details. Gratka.pl shows the same listings as Morizon.pl (one platform, different ids and links): search one portal, not both, and use gratka_offer only with Gratka.pl ids. Fetched live from Gratka.pl's own API (typically under 1 s). Result shape: { source, fetchedAt, query, search_url, heading, resolved_location, total_count, page, total_pages, count, listings: [...], note? } — the list key is `listings`; `total_count` counts matches across all pages (use `page` for more); `resolved_location` is the place `location` was matched to. Each listing: { source, id, url, title, category, kind, development, price, price_per_m2, currency, area_m2, rooms, floor, location, street, district, city, region, seller_type, seller_name, date_posted, refreshed_at, image, photo_count, description }. Prices are numbers in PLN (for rent, `price` is the monthly rent) and area is in m²; fields are null when the listing omits them. `kind` is 'new_development' for a developer's unit in a new project (named in `development`), else 'listing'; `seller_type` is agency | private | developer. An empty match answers count: 0 with a `note` saying why and what to change — that is a successful result, not an error.
| Argument | Type | Description |
|---|---|---|
| page | integer | Results page, 1-based (35 listings per page). Default 1. |
| sort | string | Order: 'newest' (recently added), 'price_asc' / 'price_desc', 'price_per_m2_asc' / 'price_per_m2_desc', 'area_asc' / 'area_desc'. Default: the site's own order (recently refreshed). |
Full details of one Morizon.pl listing: price and price per m² (PLN), area, rooms, floor, year built, property type, transaction and market, the address with district and coordinates, seller type and name (agency or developer; private owners are not named), the listing's detail tables as shown on the page (Polish labels and values: condition, rent and charges, building type, heating, ownership, available from…), amenities, the full description and photo URLs. No phone numbers. Get the id from morizon_search. Fetched live from Morizon.pl's own API (typically under 1 s). Result: { source, fetchedAt, listing: { source, id, url, title, active, property_type, transaction, market, kind, development, price, price_per_m2, currency, area_m2, rooms, floor, year_built, address, geo, seller_type, seller_name, agent_name, date_posted, updated, details, amenities, description, photos }, note? } — `note` is set when the listing is no longer active.
| Argument | Type | Description |
|---|---|---|
| id* | string | The listing's id (e.g. 'mzn2047996834') or its full https://www.morizon.pl link, as returned by morizon_search. |
| no_cache | boolean | Force a fresh fetch and bypass this server's result cache (5 min). Default false. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The listing's id (e.g. 'mzn2047996834') or its full https://www.morizon.pl link, as returned by morizon_search."
},
"no_cache": {
"type": "boolean",
"description": "Force a fresh fetch and bypass this server's result cache (5 min). Default false."
}
}
}Search property listings on Morizon.pl, a major Polish real-estate portal: flats, houses, plots, commercial premises, offices, garages and rooms, for sale or for rent, filtered by location (any Polish city, district, town, village, county or voivodeship), price, area, rooms, private sellers only and primary/secondary market, sorted like the site. Returns one results page (up to 35 listings) with each listing's price, price per m², area, rooms, floor, location, seller and link; pass a listing `id` to morizon_offer for the full details. Morizon.pl shows the same listings as Gratka.pl (one platform, different ids and links): search one portal, not both, and use morizon_offer only with Morizon.pl ids. Fetched live from Morizon.pl's own API (typically under 1 s). Result shape: { source, fetchedAt, query, search_url, heading, resolved_location, total_count, page, total_pages, count, listings: [...], note? } — the list key is `listings`; `total_count` counts matches across all pages (use `page` for more); `resolved_location` is the place `location` was matched to. Each listing: { source, id, url, title, category, kind, development, price, price_per_m2, currency, area_m2, rooms, floor, location, street, district, city, region, seller_type, seller_name, date_posted, refreshed_at, image, photo_count, description }. Prices are numbers in PLN (for rent, `price` is the monthly rent) and area is in m²; fields are null when the listing omits them. `kind` is 'new_development' for a developer's unit in a new project (named in `development`), else 'listing'; `seller_type` is agency | private | developer. An empty match answers count: 0 with a `note` saying why and what to change — that is a successful result, not an error.
| Argument | Type | Description |
|---|---|---|
| page | integer | Results page, 1-based (35 listings per page). Default 1. |
| sort | string | Order: 'newest' (recently added), 'price_asc' / 'price_desc', 'price_per_m2_asc' / 'price_per_m2_desc', 'area_asc' / 'area_desc'. Default: the site's own order (recently refreshed). |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 2, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.
| type* |
| string |
| Property type: 'flat' = mieszkanie, 'house' = dom, 'plot' = działka/grunt (land), 'commercial' = lokal użytkowy (any commercial premises), 'office' = biuro, 'garage' = garaż, 'room' = pokój (a room to rent — rent only). |
| market | string | 'primary' = new build from a developer (rynek pierwotny), 'secondary' = resale (rynek wtórny). |
| area_max | number | Maximum area in m² (the plot's area for type 'plot'). |
| area_min | number | Minimum area in m² (the plot's area for type 'plot'). |
| location | string | Where, as a Polish place name, matched by the site's own location search: a city ('Kraków'), a district ('Warszawa Mokotów', 'Gdańsk Wrzeszcz'), a town or village, a county ('krakowski') or a whole voivodeship ('mazowieckie'). Diacritics are optional; English names other than Warsaw/Cracow are not recognised. Omit to search all of Poland. |
| no_cache | boolean | Force a fresh fetch and bypass this server's result cache (5 min). Default false. |
| price_max | number | Maximum total price in PLN (monthly rent when transaction is 'rent'). |
| price_min | number | Minimum total price in PLN (monthly rent when transaction is 'rent'). |
| rooms_max | integer | Maximum number of rooms — not for types 'plot' and 'garage' (use min = max for exactly N). |
| rooms_min | integer | Minimum number of rooms — not for types 'plot' and 'garage'. |
| transaction* | string | 'sale' = na sprzedaż (buying), 'rent' = na wynajem (renting; prices are monthly). |
| private_only | boolean | Only listings posted by private owners — no agencies or developers. Default false. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"type",
"transaction"
],
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Results page, 1-based (35 listings per page). Default 1."
},
"sort": {
"enum": [
"newest",
"price_asc",
"price_desc",
"price_per_m2_asc",
"price_per_m2_desc",
"area_asc",
"area_desc"
],
"type": "string",
"description": "Order: 'newest' (recently added), 'price_asc' / 'price_desc', 'price_per_m2_asc' / 'price_per_m2_desc', 'area_asc' / 'area_desc'. Default: the site's own order (recently refreshed)."
},
"type": {
"enum": [
"flat",
"house",
"plot",
"commercial",
"office",
"garage",
"room"
],
"type": "string",
"description": "Property type: 'flat' = mieszkanie, 'house' = dom, 'plot' = działka/grunt (land), 'commercial' = lokal użytkowy (any commercial premises), 'office' = biuro, 'garage' = garaż, 'room' = pokój (a room to rent — rent only)."
},
"market": {
"enum": [
"primary",
"secondary"
],
"type": "string",
"description": "'primary' = new build from a developer (rynek pierwotny), 'secondary' = resale (rynek wtórny)."
},
"area_max": {
"type": "number",
"minimum": 0,
"description": "Maximum area in m² (the plot's area for type 'plot')."
},
"area_min": {
"type": "number",
"minimum": 0,
"description": "Minimum area in m² (the plot's area for type 'plot')."
},
"location": {
"type": "string",
"minLength": 1,
"description": "Where, as a Polish place name, matched by the site's own location search: a city ('Kraków'), a district ('Warszawa Mokotów', 'Gdańsk Wrzeszcz'), a town or village, a county ('krakowski') or a whole voivodeship ('mazowieckie'). Diacritics are optional; English names other than Warsaw/Cracow are not recognised. Omit to search all of Poland."
},
"no_cache": {
"type": "boolean",
"description": "Force a fresh fetch and bypass this server's result cache (5 min). Default false."
},
"price_max": {
"type": "number",
"minimum": 0,
"description": "Maximum total price in PLN (monthly rent when transaction is 'rent')."
},
"price_min": {
"type": "number",
"minimum": 0,
"description": "Minimum total price in PLN (monthly rent when transaction is 'rent')."
},
"rooms_max": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Maximum number of rooms — not for types 'plot' and 'garage' (use min = max for exactly N)."
},
"rooms_min": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Minimum number of rooms — not for types 'plot' and 'garage'."
},
"transaction": {
"enum": [
"sale",
"rent"
],
"type": "string",
"description": "'sale' = na sprzedaż (buying), 'rent' = na wynajem (renting; prices are monthly)."
},
"private_only": {
"type": "boolean",
"description": "Only listings posted by private owners — no agencies or developers. Default false."
}
}
}| type* |
| string |
| Property type: 'flat' = mieszkanie, 'house' = dom, 'plot' = działka/grunt (land), 'commercial' = lokal użytkowy (any commercial premises), 'office' = biuro, 'garage' = garaż, 'room' = pokój (a room to rent — rent only). |
| market | string | 'primary' = new build from a developer (rynek pierwotny), 'secondary' = resale (rynek wtórny). |
| area_max | number | Maximum area in m² (the plot's area for type 'plot'). |
| area_min | number | Minimum area in m² (the plot's area for type 'plot'). |
| location | string | Where, as a Polish place name, matched by the site's own location search: a city ('Kraków'), a district ('Warszawa Mokotów', 'Gdańsk Wrzeszcz'), a town or village, a county ('krakowski') or a whole voivodeship ('mazowieckie'). Diacritics are optional; English names other than Warsaw/Cracow are not recognised. Omit to search all of Poland. |
| no_cache | boolean | Force a fresh fetch and bypass this server's result cache (5 min). Default false. |
| price_max | number | Maximum total price in PLN (monthly rent when transaction is 'rent'). |
| price_min | number | Minimum total price in PLN (monthly rent when transaction is 'rent'). |
| rooms_max | integer | Maximum number of rooms — not for types 'plot' and 'garage' (use min = max for exactly N). |
| rooms_min | integer | Minimum number of rooms — not for types 'plot' and 'garage'. |
| transaction* | string | 'sale' = na sprzedaż (buying), 'rent' = na wynajem (renting; prices are monthly). |
| private_only | boolean | Only listings posted by private owners — no agencies or developers. Default false. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"type",
"transaction"
],
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Results page, 1-based (35 listings per page). Default 1."
},
"sort": {
"enum": [
"newest",
"price_asc",
"price_desc",
"price_per_m2_asc",
"price_per_m2_desc",
"area_asc",
"area_desc"
],
"type": "string",
"description": "Order: 'newest' (recently added), 'price_asc' / 'price_desc', 'price_per_m2_asc' / 'price_per_m2_desc', 'area_asc' / 'area_desc'. Default: the site's own order (recently refreshed)."
},
"type": {
"enum": [
"flat",
"house",
"plot",
"commercial",
"office",
"garage",
"room"
],
"type": "string",
"description": "Property type: 'flat' = mieszkanie, 'house' = dom, 'plot' = działka/grunt (land), 'commercial' = lokal użytkowy (any commercial premises), 'office' = biuro, 'garage' = garaż, 'room' = pokój (a room to rent — rent only)."
},
"market": {
"enum": [
"primary",
"secondary"
],
"type": "string",
"description": "'primary' = new build from a developer (rynek pierwotny), 'secondary' = resale (rynek wtórny)."
},
"area_max": {
"type": "number",
"minimum": 0,
"description": "Maximum area in m² (the plot's area for type 'plot')."
},
"area_min": {
"type": "number",
"minimum": 0,
"description": "Minimum area in m² (the plot's area for type 'plot')."
},
"location": {
"type": "string",
"minLength": 1,
"description": "Where, as a Polish place name, matched by the site's own location search: a city ('Kraków'), a district ('Warszawa Mokotów', 'Gdańsk Wrzeszcz'), a town or village, a county ('krakowski') or a whole voivodeship ('mazowieckie'). Diacritics are optional; English names other than Warsaw/Cracow are not recognised. Omit to search all of Poland."
},
"no_cache": {
"type": "boolean",
"description": "Force a fresh fetch and bypass this server's result cache (5 min). Default false."
},
"price_max": {
"type": "number",
"minimum": 0,
"description": "Maximum total price in PLN (monthly rent when transaction is 'rent')."
},
"price_min": {
"type": "number",
"minimum": 0,
"description": "Minimum total price in PLN (monthly rent when transaction is 'rent')."
},
"rooms_max": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Maximum number of rooms — not for types 'plot' and 'garage' (use min = max for exactly N)."
},
"rooms_min": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Minimum number of rooms — not for types 'plot' and 'garage'."
},
"transaction": {
"enum": [
"sale",
"rent"
],
"type": "string",
"description": "'sale' = na sprzedaż (buying), 'rent' = na wynajem (renting; prices are monthly)."
},
"private_only": {
"type": "boolean",
"description": "Only listings posted by private owners — no agencies or developers. Default false."
}
}
}