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

TableJSON 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

TableJSON 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.

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses the exact lookup precedence (slug before plz before substring), case-insensitive matching, the absence of a silent fallback, and the exact unknown-place error shape including ok=false, error=unknown_place, and hint=/einsatzgebiet.

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 description is dense but well-labeled with WHAT, RETURNS, USE, NOT, and NEXT sections. Every segment carries operational meaning, though some implementation jargon like 'getOrt' and 'ORTE' makes it slightly less crisp than it could be.

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?

Given the rich input schema, readOnlyHint annotation, and presence of an output schema, the description covers everything needed to invoke correctly: lookup rules, error behavior, return fields, use-case trigger, and a suggested next step. No critical operational gap remains.

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?

The schema already covers all four parameters at 100% coverage, so the baseline is 3. The description adds value above the schema by explaining how the parameters interact in the lookup order and by warning about the concrete 'plz 71638 → pattonville' first-match behavior.

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 description starts with 'WHAT: One service-area place', which states a specific verb, resource, and singular scope. It distinguishes itself from sibling list_service_areas by emphasizing it returns one place, and it explicitly warns against nonexistent verify_zip_code/verify_coordinates tools.

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 condition. The 'NOT verify_zip_code / verify_coordinates' warning and 'maps MCP is a second machine' note help prevent misrouting, though the description does not explicitly contrast with list_service_areas or other related siblings.

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.

TDQS

A3.9/5.0
Disambiguation3/5

Many tools have clearly distinct roles, but there is real overlap: get_discovery duplicates get_llms_txt/get_llms_mcp_server/get_sitemap_txt, get_it and get_mcp_hub describe the same machines, and get_page_summary is a stub that competes with get_ai_page/get_serp_snippet. The detailed descriptions help, but an agent could still misselect among the discovery and pointer tools.

Naming Consistency4/5

The overwhelming majority follow a consistent snake_case verb-noun pattern: get_*, list_*, compose_*, resolve_*. Minor deviations like site_overview, get_it, and find_by_keyword are readable but break the dominant convention.

Tool Count2/5

45 tools for a single small-business website is excessive and well above the 25+ threshold. Many tools are pointer/list aliases or discovery-file accessors that could be consolidated without losing capability.

Completeness4/5

Core workflows are well covered: identity, contact, emergency info, pricing, invoicing, service areas, FAQs, legal pages, and generic page content via get_ai_page. Minor gaps exist around explicit opening-hours details, existing customer reviews, and maps-domain functionality, but these are mostly declared out of scope rather than dead ends.

Resources