Skip to main content
Glama

ikeytz Einsatzgebiet-Karten

Get Geo Api

get_geo_api
Read-only

WHAT: Public Geo-API URL pointers for one Einsatzgebiet. Ort JSON: https://maps.ikeytz.com/api/v1/embed/ort/{slug}. Grenze GeoJSON: …/grenze. Punkt GeoJSON: …/punkt. Sammel: /api/v1/embed/orte · /orte/grenzen · /orte/punkte. Lookup slug|plz|name. RETURNS geo_api, grenze_api, punkt_api, Sammel URLs + area card; MCP payload is not the polygon. USE to fetch/open public JSON/GeoJSON. NEXT: get_grenze for polygon inside MCP, or GET grenze_api / punkt_api.

Input Schema

NameRequiredDescriptionDefault
plzNoGerman postcode (PLZ). Several Gebiete can share one PLZ (e.g. 71638). For single lookup first match wins; use find_by_plz for all matches.
nameNoGerman place name substring (case-insensitive, umlauts ok), e.g. Grünbühl, Pattonville. Used when slug/plz omitted.
slugNoURL slug of one of the 52 Einsatzgebiete, e.g. pattonville, bietigheim-bissingen, walheim, gruenbuehl. Matches https://maps.ikeytz.com/{slug}. Lookup order when combined with plz/name: slug first.

Output Schema

NameRequiredDescriptionDefault
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
latNo
lngNo
plzNo
hintNoPresent when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.
nameNo
noteNoPublic JSON/GeoJSON pointers; use get_grenze for polygon in MCP
slugNo
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_place, unknown_discovery, unknown_doc, q_required, plz_required, coords_required, outside_service_area, url_required, not_maps_host, bad_url, path_or_url_required, serp_not_found, slug_or_coords_required, path_required.
localeNoLocale actually used for URLs. maps is German-only: always de (MAPS-E8 — no /en on maps). Requested non-de is ignored; payload locale=de.
geo_apiNo
relatedNoAlways includes https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window. For list tools a compact one-liner. Quote with attribution.
orte_apiNo
embed_mapNo
punkt_apiNo
grenze_apiNo
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://maps.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://maps.ikeytz.com… page, public embed JSON, tel:+49…, mailto:…, https://wa.me/…, or a www pointer. Prefer this over constructing URLs.
orte_punkte_apiNo
orte_grenzen_apiNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • addedOutput schema / properties / grenze_api
      Added value: +{
      +  "format": "uri",
      +  "type": "string"
      +}
    • changedOutput schema / properties / note / description
      Previous value: -"Public JSON pointer; use get_grenze for polygon in MCP"New value: +"Public JSON/GeoJSON pointers; use get_grenze for polygon in MCP"
    • addedOutput schema / properties / orte_api
      Added value: +{
      +  "format": "uri",
      +  "type": "string"
      +}
    • addedOutput schema / properties / orte_grenzen_api
      Added value: +{
      +  "format": "uri",
      +  "type": "string"
      +}
    • addedOutput schema / properties / orte_punkte_api
      Added value: +{
      +  "format": "uri",
      +  "type": "string"
      +}
    • addedOutput schema / properties / punkt_api
      Added value: +{
      +  "format": "uri",
      +  "type": "string"
      +}
  2. Changed4 schema fields changed
    • addedInput schema / properties / name / description
      Added value: +"German place name substring (case-insensitive, umlauts ok), e.g. Grünbühl, Pattonville. Used when slug/plz omitted."
    • addedInput schema / properties / plz / description
      Added value: +"German postcode (PLZ). Several Gebiete can share one PLZ (e.g. 71638). For single lookup first match wins; use find_by_plz for all matches."
    • addedInput schema / properties / slug / description
      Added value: +"URL slug of one of the 52 Einsatzgebiete, e.g. pattonville, bietigheim-bissingen, walheim, gruenbuehl. Matches https://maps.ikeytz.com/{slug}. Lookup order when combined with plz/name: slug first."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "description": "Always the same envelope. tools/call returns content[0].text = summary (or JSON) AND structuredContent = this object. On success ok=true with summary + canonicalUrl + extra fields. On failure ok=false with error (snake_case code) and hint (recovery URL). Never writes, never submits forms, never books. Attribution must be kept when quoting. Policy: ai-input yes with attribution; ai-train=no. Host is maps.ikeytz.com (geo/Einsatzgebiet). Prices/FAQ/legal HTML live on www — maps only points.",
      +  "properties": {
      +    "attribution": {
      +      "description": "Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://maps.ikeytz.com/.well-known/ai.txt'",
      +      "type": "string"
      +    },
      +    "canonicalUrl": {
      +      "description": "Best URL to show the user: https://maps.ikeytz.com… page, public embed JSON, tel:+49…, mailto:…, https://wa.me/…, or a www pointer. Prefer this over constructing URLs.",
      +      "type": "string"
      +    },
      +    "embed_map": {
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    "error": {
      +      "description": "Present when ok=false. Codes include: unknown_place, unknown_discovery, unknown_doc, q_required, plz_required, coords_required, outside_service_area, url_required, not_maps_host, bad_url, path_or_url_required, serp_not_found, slug_or_coords_required, path_required.",
      +      "type": "string"
      +    },
      +    "geo_api": {
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    "hint": {
      +      "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.",
      +      "type": "string"
      +    },
      +    "lat": {
      +      "type": "number"
      +    },
      +    "lng": {
      +      "type": "number"
      +    },
      +    "locale": {
      +      "description": "Locale actually used for URLs. maps is German-only: always de (MAPS-E8 — no /en on maps). Requested non-de is ignored; payload locale=de.",
      +      "enum": [
      +        "de"
      +      ],
      +      "type": "string"
      +    },
      +    "name": {
      +      "type": "string"
      +    },
      +    "note": {
      +      "description": "Public JSON pointer; use get_grenze for polygon in MCP",
      +      "type": "string"
      +    },
      +    "ok": {
      +      "description": "true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.",
      +      "type": "boolean"
      +    },
      +    "plz": {
      +      "type": "string"
      +    },
      +    "related": {
      +      "description": "Always includes https://maps.ikeytz.com/llms.txt.",
      +      "items": {
      +        "format": "uri",
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "slug": {
      +      "type": "string"
      +    },
      +    "summary": {
      +      "description": "Primary text for the model. For discovery tools this is the file window. For list tools a compact one-liner. Quote with attribution.",
      +      "type": "string"
      +    },
      +    "tool": {
      +      "description": "Echo of the tool name that produced this object (e.g. get_service_area).",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "ok",
      +    "tool",
      +    "attribution"
      +  ],
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=true, so the description carries the weight of explaining that the return is URL pointers rather than spatial data, and that the MCP payload is not the polygon. It also discloses the slug|plz|name lookup order. It stops short of noting auth/rate-limit traits of the public endpoints, keeping it below a 5.

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 WHAT/RETURNS/USE/NEXT structure front-loads the essential fact and is scannable, though the inline URL templates and Sammel path listings are somewhat dense and partly redundant with the return description.

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?

An output schema exists, so return values needn't be spelled out, yet the description still clarifies the URL-vs-data distinction and next-step routing that the schema cannot convey. It is complete enough for the agent to call it correctly, with only minor gaps around the public endpoints' access characteristics.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents plz, name, and slug in detail. The description's 'Lookup slug|plz|name' only echoes that ordering and adds no format or semantics beyond the schema. Baseline 3 applies.

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 resource and outcome: public Geo-API URL pointers for one Einsatzgebiet, and explicitly says the payload is not the polygon. It distinguishes itself from sibling get_grenze by routing polygon-in-MCP access there, so an agent can tell the two apart without opening schemas.

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?

'USE to fetch/open public JSON/GeoJSON' defines the trigger, and 'NEXT: get_grenze for polygon inside MCP, or GET grenze_api / punkt_api' names the explicit alternatives and when to prefer each. Little is left to inference.

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