Skip to main content
Glama

Suomiatlas — Finnish area statistics

Transit stops and services inside a Finnish postal area, or within a few km of it

get_nearby_places
Read-only

What is physically inside one Finnish postal area: public transport stops (bus, tram, metro, train, ferry) from Digitransit; daycare centres from the Suomi.fi service catalogue (PTV), with OpenStreetMap adding only those with no PTV daycare within 250 m; and schools, higher and further education, health clinics, pharmacies, supermarkets and libraries from OpenStreetMap; and swimming pools and beaches from LIPAS, the national register of sports facilities. Answers "what is there in Tikkurila?" or "is there a school in 99980?" with counts and names. With withinKm (up to 5) it also looks beyond the area: places within that straight-line distance of the area's boundary, nearest first per category with their distance — one call for "is there a pool or a beach near 00250?". Postal areas only; a city name returns its areas to choose from. Transit counts are platforms (most stops have one per direction); names groups platforms by stop name. A zero for an OpenStreetMap category means none is mapped there, not that none exists; a null count means that source has not been loaded; a null name is a place its source has no name for. This says nothing about travel times or service frequency. Free for everyone. Licensed per source: the OpenStreetMap places and the daycare layer are ODbL 1.0, the pools and beaches CC BY 4.0; credit "© OpenStreetMap contributors", Digitransit, the Suomi.fi service catalogue and "Jyväskylän yliopisto, Lipas Liikuntapaikat.fi" when reproducing it.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
placeYesPostal area name or 5-digit code, e.g. "Tikkurila", "00530"
withinKmNoAlso look this many km beyond the area's boundary (straight-line, 0.1 to 5), and answer with the nearest places and their distance.
categoriesNoOnly these categories; defaults to all fourteen.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / place / description
      Previous value: -"Postal area name or 5-digit code, e.g. \"Kallio\", \"00530\""New value: +"Postal area name or 5-digit code, e.g. \"Tikkurila\", \"00530\""
  2. Changed1 schema field changed
    • addedInput schema / properties / withinKm
      Added value: +{
      +  "description": "Also look this many km beyond the area's boundary (straight-line, 0.1 to 5), and answer with the nearest places and their distance.",
      +  "maximum": 5,
      +  "minimum": 0.1,
      +  "type": "number"
      +}
  3. Changed2 schema fields changed
    • changedInput schema / properties / categories / description
      Previous value: -"Only these categories; defaults to all twelve."New value: +"Only these categories; defaults to all fourteen."
    • changedInput schema / properties / categories / items / enum
      Previous value: -[
      -  "bus",
      -  "tram",
      -  "metro",
      -  "train",
      -  "ferry",
      -  "kindergarten",
      -  "school",
      -  "higher_education",
      -  "health_clinic",
      -  "pharmacy",
      -  "supermarket",
      -  "library"
      -]New value: +[
      +  "bus",
      +  "tram",
      +  "metro",
      +  "train",
      +  "ferry",
      +  "kindergarten",
      +  "school",
      +  "higher_education",
      +  "health_clinic",
      +  "pharmacy",
      +  "supermarket",
      +  "library",
      +  "swimming_pool",
      +  "beach"
      +]
  4. Changed2 schema fields changed
    • changedInput schema / properties / categories / description
      Previous value: -"Only these categories; defaults to all ten."New value: +"Only these categories; defaults to all twelve."
    • changedInput schema / properties / categories / items / enum
      Previous value: -[
      -  "bus",
      -  "tram",
      -  "metro",
      -  "train",
      -  "ferry",
      -  "kindergarten",
      -  "school",
      -  "health_clinic",
      -  "pharmacy",
      -  "supermarket"
      -]New value: +[
      +  "bus",
      +  "tram",
      +  "metro",
      +  "train",
      +  "ferry",
      +  "kindergarten",
      +  "school",
      +  "higher_education",
      +  "health_clinic",
      +  "pharmacy",
      +  "supermarket",
      +  "library"
      +]
  5. Added

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare readOnlyHint and openWorldHint; the description adds substantial non-obvious behavior: transit counts are platforms, names groups platforms, zero means unmapped-not-absent, null count means source not loaded, null name means un-named source. It also states limits (nothing about travel times/frequency), cost, and per-source licensing.

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?

It is long but a single front-loaded paragraph where most sentences carry load-bearing semantics or licensing. The one redundancy is re-listing all fourteen categories that the schema enum already enumerates verbatim, which costs some compactness.

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 explicitly explains the return shape (counts and names, distances under withinKm) and the meaning of null/zero values. For a multi-source, three-parameter tool this is complete enough to call 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 meaning beyond the schema: withinKm looks beyond the boundary (straight-line) and returns nearest-first per category with distances, and names groups platforms by stop name. The categories default to all fourteen is also clarified.

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?

Opens with a precise scope statement: what is physically inside one Finnish postal area, with specific categories and named sources (Digitransit, PTV, OpenStreetMap, LIPAS). This clearly distinguishes it from siblings like get_area_report, get_place_stats and search_places.

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?

Gives concrete triggering questions ("what is there in Tikkurila?", "is there a school in 99980?") and the condition that selects the withinKm behavior. It also routes city-name queries correctly ("a city name returns its areas to choose from"). It stops short of explicitly naming alternative sibling tools, so not a full 5.

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