Skip to main content
Glama

Cenogram - Polish Real Estate Data

get_rental_yield

Read-only

EXPERIMENTAL (beta): may change or be withdrawn; no critical workflows on it. Gross rental yield for a Polish city or county: annualized median asking rent (PLN/m²/month × 12) divided by the median secondary-market apartment transaction price per m² (RCN). Top-line only (excludes vacancy, management, tax, maintenance), indicative, not investment advice. Different sources, so an approximation; not comparable across cities with different as_of dates. Both sides need at least 5 samples or the result is suppressed. Coverage: counties (miasta na prawach powiatu) plus Warszawa's 18 districts, only cities with asking-rent data. A gmina name resolves to its county (shown in the answer); a name shared by gminas in several counties returns candidates. Aggregates exclude fractional shares and non-market deeds.

Input Schema

NameRequiredDescriptionDefault
terytNoTERYT: 4 digits = county (1465 = Warszawa); 6 digits = a Warszawa district (146510 = Śródmieście); other longer codes truncate to the county. Wins over location.
locationNoCounty-level city name (a miasto na prawach powiatu or a catalog entry, e.g. 'Warszawa', 'Gdańsk'); a Warszawa district ('Mokotów') narrows to it, 'Kraków-Podgórze' resolves to its parent county; an osiedle 404s - use teryt. This OR teryt.
areaBucketNoApartment area range in m², restricting both sides (all = whole stock, default). Buckets are not additive.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / areaBucket / description
      Previous value: -"Apartment area range in m² (all = whole stock, default). Buckets are not additive."New value: +"Apartment area range in m², restricting both sides (all = whole stock, default). Buckets are not additive."
    • changedInput schema / properties / location / description
      Previous value: -"County-level city name (a miasto na prawach powiatu or a catalog entry, e.g. 'Warszawa', 'Gdańsk'); a Warszawa district ('Mokotów') narrows to it, 'Kraków-Podgórze' resolves to its parent county. A gmina name resolves to its county (candidates if shared by gminas in several counties); an osiedle 404s - use teryt. This OR teryt."New value: +"County-level city name (a miasto na prawach powiatu or a catalog entry, e.g. 'Warszawa', 'Gdańsk'); a Warszawa district ('Mokotów') narrows to it, 'Kraków-Podgórze' resolves to its parent county; an osiedle 404s - use teryt. This OR teryt."
  2. Changed1 schema field changed
    • changedInput schema / properties / location / description
      Previous value: -"County-level city name (a miasto na prawach powiatu or a catalog entry, e.g. 'Warszawa', 'Gdańsk'); a Warszawa district ('Mokotów') narrows to it, 'Kraków-Podgórze' resolves to its parent county. A town in a larger powiat or an osiedle 404s - check the catalog or use teryt. This OR teryt."New value: +"County-level city name (a miasto na prawach powiatu or a catalog entry, e.g. 'Warszawa', 'Gdańsk'); a Warszawa district ('Mokotów') narrows to it, 'Kraków-Podgórze' resolves to its parent county. A gmina name resolves to its county (candidates if shared by gminas in several counties); an osiedle 404s - use teryt. This OR teryt."
  3. Changed3 schema fields changed
    • changedInput schema / properties / areaBucket / description
      Previous value: -"Apartment area range in m2: all (default, whole stock), 0-30, 30-40, 40-50, 50-60, 60-80, 80+. Bucket values are not additive."New value: +"Apartment area range in m² (all = whole stock, default). Buckets are not additive."
    • changedInput schema / properties / location / description
      Previous value: -"County-level city name — a miasto na prawach powiatu or a catalog entry from list_rental_yield_locations (e.g. 'Warszawa', 'Kraków', 'Gdańsk'). A Warszawa district name (e.g. 'Mokotów') narrows to that district; another city's delegatura (e.g. 'Kraków-Podgórze') resolves to its parent county. A town within a larger powiat or an osiedle will 404 — check the catalog or use teryt first. Use this OR teryt."New value: +"County-level city name (a miasto na prawach powiatu or a catalog entry, e.g. 'Warszawa', 'Gdańsk'); a Warszawa district ('Mokotów') narrows to it, 'Kraków-Podgórze' resolves to its parent county. A town in a larger powiat or an osiedle 404s - check the catalog or use teryt. This OR teryt."
    • changedInput schema / properties / teryt / description
      Previous value: -"TERYT code. 4 digits = county (e.g. 1465 = Warszawa). 6 digits = dzielnica where available (today: Warszawa's 18 districts, e.g. 146510 = Śródmieście) → yield for that district. Other longer codes (gmina/precinct) are truncated to the county. Wins over location when both are provided."New value: +"TERYT: 4 digits = county (1465 = Warszawa); 6 digits = a Warszawa district (146510 = Śródmieście); other longer codes truncate to the county. Wins over location."
  4. Changed1 schema field changed
    • changedInput schema / properties / location / description
      Previous value: -"County-level city name — must be a miasto na prawach powiatu or a catalog entry from list_rental_yield_locations (e.g. 'Warszawa', 'Kraków', 'Gdańsk'). A town within a larger powiat, a non-Warszawa district, or an osiedle will 404 — check the catalog or use teryt first. Use this OR teryt."New value: +"County-level city name — a miasto na prawach powiatu or a catalog entry from list_rental_yield_locations (e.g. 'Warszawa', 'Kraków', 'Gdańsk'). A Warszawa district name (e.g. 'Mokotów') narrows to that district; another city's delegatura (e.g. 'Kraków-Podgórze') resolves to its parent county. A town within a larger powiat or an osiedle will 404 — check the catalog or use teryt first. Use this OR teryt."
  5. Changed1 schema field changed
    • changedInput schema / properties / location / description
      Previous value: -"City name, resolves to a county (e.g. 'Warszawa', 'Kraków', 'Gdańsk'). Use this OR teryt."New value: +"County-level city name — must be a miasto na prawach powiatu or a catalog entry from list_rental_yield_locations (e.g. 'Warszawa', 'Kraków', 'Gdańsk'). A town within a larger powiat, a non-Warszawa district, or an osiedle will 404 — check the catalog or use teryt first. Use this OR teryt."
  6. Changed1 schema field changed
    • changedInput schema / properties / teryt / description
      Previous value: -"TERYT county code (4 digits, e.g. 1465 = Warszawa). Longer codes (gmina/precinct) are truncated to the county. Wins over location when both are provided."New value: +"TERYT code. 4 digits = county (e.g. 1465 = Warszawa). 6 digits = dzielnica where available (today: Warszawa's 18 districts, e.g. 146510 = Śródmieście) → yield for that district. Other longer codes (gmina/precinct) are truncated to the county. Wins over location when both are provided."
  7. Added
  8. Removed
  9. Changed1 schema field changed
    • addedInput schema / properties / areaBucket
      Added value: +{
      +  "description": "Apartment area range in m2: all (default, whole stock), 0-30, 30-40, 40-50, 50-60, 60-80, 80+. Bucket values are not additive.",
      +  "enum": [
      +    "all",
      +    "0-30",
      +    "30-40",
      +    "40-50",
      +    "50-60",
      +    "60-80",
      +    "80+"
      +  ],
      +  "type": "string"
      +}
  10. Added

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false and a beta title, so the safety profile is covered. The description goes further by disclosing the suppression rule (min 5 samples on both sides), the approximation caveat from mismatched sources, the top-line exclusions (vacancy, management, tax, maintenance), and that aggregates exclude fractional shares and non-market deeds — solid extra context, though the response shape is only vaguely gestured at ('shown in the answer').

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The beta warning is correctly front-loaded, then the definition, then caveats and coverage rules. Almost every sentence carries operational information, but it reads as a dense paragraph without breaks, and the final sentence about fractional shares/non-market deeds is a niche detail buried at the end.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description must carry the interpretive load, and it mostly does: it names the metric components, unit basis, caveats, and that the resolved county is echoed back. It stops short of describing the actual response fields (as_of dates, sample counts, yield units) that an agent would need to consume the result correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning about resolution behavior beyond the schema: a gmina name resolves to its county, ambiguous names shared across counties return a candidate list rather than failing, and the area bucket restricts both sides of the ratio. It still doesn't explain how areaBucket interacts with suppression or which parameters win in conflicts beyond what the schema already says.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific named metric (gross rental yield) for a specific scope (Polish city or county) and spells out the exact formula — annualized median asking rent divided by median RCN transaction price per m². This is immediately distinguishable from siblings like get_price_statistics, get_market_overview, or get_price_distribution.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It sets clear boundaries on when the output is meaningful: experimental/beta status, indicative not investment advice, not comparable across cities with different as_of dates, suppression under 5 samples, and coverage limited to counties plus Warszawa districts with asking-rent data. What's missing is explicit routing to siblings — notably list_rental_yield_locations, which an agent would need to find a valid location name, is never mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources