Skip to main content
Glama
cenogram-mcp-server

cenogram-mcp-server

Official

list_locations

Read-only

Resolve Polish place names to TERYT codes or browse the administrative hierarchy, so you can pass the correct code to transaction searches.

Instructions

Resolve a place name to TERYT codes, or browse the TERYT hierarchy - the first step before search_transactions (pass the returned code as teryt=).

  • search (a name): looks it up across all levels (voivodeship, county, municipality, precinct); each match carries its TERYT code, parent unit and the exact follow-up calls; exact and prefix matches come first under 'Best matches'. Rows flagged rcn_district also accept the name in search_transactions(location=) and compare_locations; RCN district names with no TERYT code are listed separately. RCN district matches also show their transaction count and date range, with a warning when the label covers only part of a gmina.

  • parent (a code): browse children - no parent = 16 voivodeships, 2-digit = counties, 4-digit = municipalities, 6-digit = precincts. parent wins when both are given. Returns administrative units, never streets: for parcels on a street pass the name to list_parcels_in_area as street=. Prefer teryt where a name is ambiguous ('Wałcz' is both a county and a municipality).

Input Schema

NameRequiredDescriptionDefault
parentNoTERYT parent code to browse children: 2-digit (voivodeship → counties), 4-digit (county → municipalities), 6-digit (municipality → precincts). Omit for all voivodeships.
searchNoPlace name, case- and diacritics-insensitive partial match (e.g. 'wejher' for Wejherowo). Returns TERYT codes plus, where applicable, RCN district names. Ignored when parent is set.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.18.0
    • changedInput schema / properties / parent / description
      Previous value: -"TERYT parent code to browse children. 2-digit (voivodeship → counties), 4-digit (county → municipalities), 6-digit (municipality → precincts). Omit for all voivodeships."New value: +"TERYT parent code to browse children: 2-digit (voivodeship → counties), 4-digit (county → municipalities), 6-digit (municipality → precincts). Omit for all voivodeships."
    • changedInput schema / properties / search / description
      Previous value: -"Look up a place by name (case-insensitive, diacritics-insensitive partial match, e.g. 'wejher' for Wejherowo). Returns TERYT codes plus, where applicable, RCN district names. Ignored when parent is set."New value: +"Place name, case- and diacritics-insensitive partial match (e.g. 'wejher' for Wejherowo). Returns TERYT codes plus, where applicable, RCN district names. Ignored when parent is set."
  2. Changed1 schema field changedv0.12.0
    • changedInput schema / properties / search / description
      Previous value: -"Filter locations by name (case-insensitive partial match, e.g. 'Krak' for Kraków districts). Ignored when parent is set."New value: +"Look up a place by name (case-insensitive, diacritics-insensitive partial match, e.g. 'wejher' for Wejherowo). Returns TERYT codes plus, where applicable, RCN district names. Ignored when parent is set."
  3. First observedv0.5.0

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint/non-destructive, yet the description adds substantial behavioral detail: ordering ('Best matches' with exact/prefix first), RCN district flagging and separate listing of code-less districts, transaction count and date range on RCN matches, a partial-gmina warning, and the precedence rule. These are non-obvious traits not derivable from the schema or annotations.

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?

Purpose and the search_transactions follow-up are front-loaded, and every remaining clause carries operational content rather than filler. It is dense and somewhat sprawling in the dash-clause structure, but nothing is purely redundant — a minor trim would make it a 5.

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

Completeness5/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 explain return shape, and it does: matches carry TERYT code, parent unit, and exact follow-up calls; RCN district matches add counts and date ranges. Combined with the two fully-documented params and read-only annotations, an agent has everything needed to call and interpret it.

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

Parameters5/5

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

Schema coverage is 100% and already documents both params, but the description still adds meaning beyond it: the code-depth-to-hierarchy-level mapping is restated with the practical consequence, the 'parent wins when both are given' override resolves a real ambiguity the schema only hints at ('Ignored when parent is set'), and it clarifies that results are administrative units, never streets.

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?

The opening sentence states a specific verb and resource ('Resolve a place name to TERYT codes, or browse the TERYT hierarchy') and immediately positions the tool relative to siblings by naming search_transactions and the teryt= follow-up. The two modes (search vs parent) are explicitly enumerated so the agent can tell this apart from search_parcels/resolve_parcel.

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

Usage Guidelines5/5

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

It states when to use this tool ('the first step before search_transactions'), how each mode selects behavior, precedence ('parent wins when both are given'), a disambiguation rule ('Prefer teryt where a name is ambiguous', with the Wałcz example), and an explicit exclusion routing to list_parcels_in_area for streets/parcels. Alternatives and exclusions are both covered.

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