Skip to main content
Glama

find_parking

Read-onlyIdempotent

Parking near a place, a coordinate or along one motorway: lorry parks, car parks, P+R and disabled-badge bays, with total spaces, stated amenities (WC, shower) and published free spaces. Use when asked where to park or leave the car for the train ("Parkhaus in Köln", "Rastplatz A3", "P+R"). Do NOT use for fuel (find_cheapest_fuel) or EV charging (find_charging_station). Radius ≤ 25 km, ≤ 10 sites per list; ODbL and CC BY-SA sources are separate lists (up to three). No "free now" means no published count, not full. No prices: for "was kostet" say so, no call. Show each source's attribution.

Input Schema

NameRequiredDescriptionDefault
latNoLatitude in WGS 84, e.g. 48.137. Use with lon when the caller already holds coordinates; otherwise use place.
lonNoLongitude in WGS 84, e.g. 11.576. Use with lat; otherwise use place.
kindNoWhich kind of parking: "car_park" = public car park (Parkhaus/Parkplatz), "park_and_ride" = P+R beside a station, "truck" = lorry parking, "any" = all of them. Default "any". "disabled_badge" = on-street bays reserved for a disabled parking permit (Behindertenparkplatz, Schwerbehindertenparkplatz), where a municipality publishes them, with a sensor's free/occupied where one is fitted — pass it only when such a bay was asked for; it is never part of "any" and takes place or lat+lon, not road. Rest areas are NOT a kind we can filter: no source we hold classifies them, so for "Rastanlage"/"Raststätte"/"rest area" leave kind out ("truck" when lorry spaces were asked for); "rest_area" is still accepted and answered as "any", with a sentence saying why. Pass a kind only when the person named one — a lorry driver asking for a break wants "truck", someone leaving the car for the train wants "park_and_ride". A camper, a caravan or a coach is none of these: leave the argument out rather than filtering a tourist into lorry bays.any
roadNoA single motorway number to list parking along, e.g. "A3" ("A 3" and "a3" are the same road). Use this when the person named a road and no town — "Rastplatz auf der A7". Give road OR place OR lat+lon, never two of them: a road is a 900 km line and a place is a point, so the two answer different questions. When the question names BOTH — "Parkhaus in Köln an der A3" — use the place: a person parks at a point, and the radius already covers the motorway beside it. A road list is in name order and cannot follow a direction of travel: for "A4 Richtung Görlitz" ask with place for the destination or the next town on the way instead, which answers nearest first.
limitNoHow many facilities to return, nearest first (1–10, default 5).
placeNoWhere to look, as free text: a city ("München", "Munich"), a district or Kreis ("Kreis Fulda"), a Bundesland, a station or stop ("Hamburg Hbf"), a motorway junction ("AK Neufahrn"), or a street address with a house number ("Bahnhofstraße 12, 36037 Fulda"). A motorway number alone ("A7") resolves to the road, which has no single point — name a town or junction on it instead. Use this instead of coordinates whenever the person named a place. An address needs its town or postcode — a street and a number alone exist in many towns. A place or lat+lon is required (unless the tool names another way in, such as a road): when the person named neither, ask them for a town, a postcode or their position before calling. Given both, the answer is about lat+lon with the place as its label, and is refused only when the two lie further apart than the search reaches.
languageNoSet this on every call to the language the person is writing in: "en" if they wrote English, "de" if they wrote German. Do not leave it out: it defaults to German ("de"), which is only the fallback when the language is genuinely unclear, so an English question sent without it is answered in German — a wrong answer. Place names, station names and road numbers are never translated in either language; in English the German term is kept in parentheses so the person recognises it on signs and in local apps.de
radius_kmNoSearch radius around place or lat+lon in kilometres (1–25, default 10). Ignored when you pass road, which covers the whole motorway. Start small in a city and widen if the answer is empty.
facilitiesNoKeep only sites whose own publisher states ALL of these amenities: "toilet", "shower", "restaurant", "snack", "cafe", "shop", "fuel", "charging", "drinking_water", "picnic", "playground", "wifi", "security", "accessible_toilet". Pass it only when the person asks for one — "Rastplatz mit Dusche an der A7" → road "A7", facilities ["shower"]; "car park with a toilet near Köln Hbf" → facilities ["toilet"]. Many publishers state no amenities, so the filter can narrow the answer to little; an amenity nobody stated is unknown, not absent, and the answer says how many sites state any. A toilet, restaurant or charger merely NEAR a site (listed beside it, from OpenStreetMap or the charging register) never satisfies the filter. Leave it out otherwise: every listed site already carries its amenity line.
only_with_free_spacesNoSet true only when the person asks whether spaces are free right now. It keeps just the facilities whose operator publishes live occupancy AND currently reports a space, and the result says how many were dropped for publishing nothing — most German parking publishes no occupancy at all, so true usually narrows the answer to very little. Default false.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / place / description
      Previous value: -"Where to look, as free text: a city (\"München\", \"Munich\"), a district or Kreis (\"Kreis Fulda\"), a Bundesland, a station or stop (\"Hamburg Hbf\"), a motorway junction (\"AK Neufahrn\"), or a street address with a house number (\"Bahnhofstraße 12, 36037 Fulda\"). A motorway number alone (\"A7\") resolves to the road, which has no single point — name a town or junction on it instead. Use this instead of coordinates whenever the person named a place. An address needs its town or postcode — a street and a number alone exist in many towns. Give either place OR lat+lon, never both."New value: +"Where to look, as free text: a city (\"München\", \"Munich\"), a district or Kreis (\"Kreis Fulda\"), a Bundesland, a station or stop (\"Hamburg Hbf\"), a motorway junction (\"AK Neufahrn\"), or a street address with a house number (\"Bahnhofstraße 12, 36037 Fulda\"). A motorway number alone (\"A7\") resolves to the road, which has no single point — name a town or junction on it instead. Use this instead of coordinates whenever the person named a place. An address needs its town or postcode — a street and a number alone exist in many towns. A place or lat+lon is required (unless the tool names another way in, such as a road): when the person named neither, ask them for a town, a postcode or their position before calling. Given both, the answer is about lat+lon with the place as its label, and is refused only when the two lie further apart than the search reaches."
  2. Changed1 schema field changed
    • addedInput schema / properties / facilities
      Added value: +{
      +  "description": "Keep only sites whose own publisher states ALL of these amenities: \"toilet\", \"shower\", \"restaurant\", \"snack\", \"cafe\", \"shop\", \"fuel\", \"charging\", \"drinking_water\", \"picnic\", \"playground\", \"wifi\", \"security\", \"accessible_toilet\". Pass it only when the person asks for one — \"Rastplatz mit Dusche an der A7\" → road \"A7\", facilities [\"shower\"]; \"car park with a toilet near Köln Hbf\" → facilities [\"toilet\"]. Many publishers state no amenities, so the filter can narrow the answer to little; an amenity nobody stated is unknown, not absent, and the answer says how many sites state any. A toilet, restaurant or charger merely NEAR a site (listed beside it, from OpenStreetMap or the charging register) never satisfies the filter. Leave it out otherwise: every listed site already carries its amenity line.",
      +  "items": {
      +    "enum": [
      +      "toilet",
      +      "accessible_toilet",
      +      "shower",
      +      "restaurant",
      +      "snack",
      +      "cafe",
      +      "shop",
      +      "fuel",
      +      "charging",
      +      "drinking_water",
      +      "picnic",
      +      "playground",
      +      "wifi",
      +      "security"
      +    ],
      +    "type": "string"
      +  },
      +  "maxItems": 5,
      +  "minItems": 1,
      +  "type": "array"
      +}
  3. Changed2 schema fields changed
    • changedInput schema / properties / kind / description
      Previous value: -"Which kind of parking: \"car_park\" = public car park (Parkhaus/Parkplatz), \"park_and_ride\" = P+R beside a station, \"truck\" = lorry parking, \"any\" = all of them. Default \"any\". Rest areas are NOT a kind we can filter: no source we hold classifies them, so for \"Rastanlage\"/\"Raststätte\"/\"rest area\" leave kind out (\"truck\" when lorry spaces were asked for); \"rest_area\" is still accepted and answered as \"any\", with a sentence saying why. Pass a kind only when the person named one — a lorry driver asking for a break wants \"truck\", someone leaving the car for the train wants \"park_and_ride\". A camper, a caravan or a coach is none of these: leave the argument out rather than filtering a tourist into lorry bays."New value: +"Which kind of parking: \"car_park\" = public car park (Parkhaus/Parkplatz), \"park_and_ride\" = P+R beside a station, \"truck\" = lorry parking, \"any\" = all of them. Default \"any\". \"disabled_badge\" = on-street bays reserved for a disabled parking permit (Behindertenparkplatz, Schwerbehindertenparkplatz), where a municipality publishes them, with a sensor's free/occupied where one is fitted — pass it only when such a bay was asked for; it is never part of \"any\" and takes place or lat+lon, not road. Rest areas are NOT a kind we can filter: no source we hold classifies them, so for \"Rastanlage\"/\"Raststätte\"/\"rest area\" leave kind out (\"truck\" when lorry spaces were asked for); \"rest_area\" is still accepted and answered as \"any\", with a sentence saying why. Pass a kind only when the person named one — a lorry driver asking for a break wants \"truck\", someone leaving the car for the train wants \"park_and_ride\". A camper, a caravan or a coach is none of these: leave the argument out rather than filtering a tourist into lorry bays."
    • changedInput schema / properties / kind / enum
      Previous value: -[
      -  "any",
      -  "rest_area",
      -  "car_park",
      -  "park_and_ride",
      -  "truck"
      -]New value: +[
      +  "any",
      +  "rest_area",
      +  "car_park",
      +  "park_and_ride",
      +  "truck",
      +  "disabled_badge"
      +]
  4. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare a safe read operation; the description adds substantive behavior beyond that: results arrive as separate per-source lists (ODbL vs CC BY-SA, up to three), radius ≤ 25 km, ≤ 10 sites per list, and a critical semantic caveat that a missing "free now" means no published count rather than full. It also states the attribution obligation, which is a post-call requirement not derivable from structured fields.

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?

Front-loaded with capability, then usage, then caveats and output quirks in priority order. It is dense and the sentences are long, but every clause adds a fact an agent would otherwise get wrong; only the parenthetical example triplets verge on redundancy.

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?

For a 10-parameter, enum-heavy, no-output-schema tool, the description covers the gaps structured data cannot: source-list splitting, the free-spaces ambiguity, absence of pricing, and the attribution duty. Nothing an agent needs in order to call it correctly and interpret the response is missing.

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 and the schema carries param definitions. The description still adds cross-parameter rules that are easy to miss: road OR place OR lat+lon but never two, and that the per-source split means up to three lists. These constraints reinforce rather than merely repeat the schema, warranting a point above baseline.

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 verb+resource (parking search) with explicit scope: kinds covered (lorry parks, car parks, P+R, disabled bays) and attributes returned (spaces, amenities, free spaces). It names two siblings it is not (find_cheapest_fuel, find_charging_station), so an agent can route without opening a schema.

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?

Gives both when-to-use and when-not-to-use with concrete trigger phrases ("Parkhaus in Köln", "Rastplatz A3", "P+R") and explicit exclusions routed to named alternatives. It even specifies the fallback behavior for price questions ("say so, no call"), which is a real decision rule.

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