Skip to main content
Glama

ikeytz - Schlüsseldienst Ludwigsburg

Get Service Area

get_service_area
Read-only

WHAT: One service-area place. Lookup order: slug (exact getOrt), else first ORTE with plz === args.plz, else first name substring (lowercase). No silent Pattonville fallback — unknown → ok=false error=unknown_place hint=/einsatzgebiet. RETURNS that place's own lat/lng (52 unique pairs), google_maps, icbm, embed_map, geo_api, maps_mcp, kind, parent. USE when the user names a town or PLZ. NOT verify_zip_code / verify_coordinates (those names do not exist). maps MCP is a second machine. NEXT: get_ai_page path=/schluesseldienst-ludwigsburg-{slug}.

Input Schema

NameRequiredDescriptionDefault
plzNo5-digit German PLZ. First matching place wins (71638 → pattonville). Use slug if you already know it.
nameNoGerman name substring, case-insensitive (e.g. 'Vaihingen'). First includes() match. Prefer slug.
slugNoPreferred. Exact orte slug: pattonville, asperg, bietigheim-bissingen, kornwestheim, … (52). Not 'ludwigsburg' as a catch-all unless that slug exists.
localeNoHTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).de

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.
latNoWGS84 latitude of THIS place or the office. Unique per slug — never a silent Pattonville fallback. Example Pattonville ≈ 48.863.
lngNoWGS84 longitude of THIS place or the office. Example Pattonville ≈ 9.185.
plzNoGerman postcode. First match wins if several places share a PLZ (e.g. 71638 → pattonville).
urlNowww keyword page https://www.ikeytz.com[/locale]/schluesseldienst-ludwigsburg-{slug}
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
icbmNoICBM 'lat, lng' string (same as google_maps).
kindNoPlace kind from orte SSOT (stadtteil / gemeinde / …).
nameNoGerman place name as on the website.
slugNoURL slug of a service-area place, e.g. pattonville, bietigheim-bissingen, walheim. Matches maps.ikeytz.com/{slug} and www /schluesseldienst-ludwigsburg-{slug}.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
parentNoParent place name when this is a district; else empty/omit.
geo_apiNohttps://maps.ikeytz.com/api/v1/embed/ort/{slug} JSON for the embed.
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
maps_mcpNomaps machine MCP endpoint. www /mcp does not proxy this.
embed_mapNoiframe/src and maps page: https://maps.ikeytz.com/{slug} (German host, no /en/).
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
google_mapsNoPaste-ready 'lat, lng' for Google Maps search (same digits as lat/lng).
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only supply readOnlyHint=true; the description carries the rest of the burden and does so well, disclosing that there is no silent Pattonville fallback, the exact failure shape (ok=false, error=unknown_place, hint=/einsatzgebiet), and that each place returns its own unique lat/lng. That is meaningful behavioral context an agent could not get from the schema.

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?

Labeled, front-loaded, and free of filler sentences; the WHAT/USE/NEXT structure scans quickly. It is dense to the point of jargon ('52 unique pairs', 'maps MCP is a second machine') and the latter phrase is unclear, but nothing is truly wasted.

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 an output schema present the return fields need not be enumerated, yet the description lists them anyway; more importantly it covers lookup order, error behavior, and the follow-up tool, which is what an agent actually needs. The one gap is that it never explains when to prefer this over list_service_areas.

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 cross-parameter precedence semantics (slug exact match, else plz match, else name substring) that no individual schema field states. The precedence ordering is genuinely useful for choosing among the three lookup keys.

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 specific verb+resource ('One service-area place') and implicitly separates itself from the sibling list_service_areas by returning a single place. The stated lookup precedence and the enumerated return fields make it unambiguous what the tool fetches.

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?

'USE when the user names a town or PLZ' gives a clear trigger, and the NEXT pointer to get_ai_page chains the workflow. It warns against non-existent tool names, but never explicitly contrasts with the real sibling list_service_areas, so routing between the two 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