Endpoints: 28,729MCP servers: 18,414Payout addresses: 2,071Paid calls: 1,564Letters: 14Defects: 1,338counted 5 min ago
teppi

Server definition

Hash
sha256:2ce2e2869461aba779df8023ffa0be12a358680000e5ee0f673995fa768c51e8
What it is
What a remote MCP server returned when asked what it offers: 68 tools

The blob, as servednamed by its sha256

{ "instructions": "Read/Link only. Standalone maps MCP for ikeytz (maps.ikeytz.com). 52 service-area maps, not www prices. No forms. ai-train=no. initialize serverInfo.version 1.0.0 is protocol identity — not the catalog. Official registry com.ikeytz/maps; npm @ikeytz/maps-mcp is the CLI.", "tools": [ { "description": "WHAT: Returns mailto:[email protected] and mapsEmail [email protected] (mapsHref). Call with {}. USE for email CTAs. Prefer compose_whatsapp or compose_tel_mobile when the user wants chat or a phone call instead. DOES NOT send mail.", "inputSchema": { "additionalProperties": false, "description": "This tool takes no arguments. Call tools/call with arguments: {}. Extra keys are ignored.", "properties": {}, "type": "object" }, "name": "compose_mailto", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "href": { "description": "mailto:[email protected]", "type": "string" }, "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" }, "mapsEmail": { "description": "[email protected]", "type": "string" }, "mapsHref": { "description": "mailto:[email protected]", "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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" } }, { "description": "WHAT: tel: href for the public landline. Call with {}. RETURNS href + display. USE as secondary call CTA. NEXT: compose_tel_mobile.", "inputSchema": { "additionalProperties": false, "description": "This tool takes no arguments. Call tools/call with arguments: {}. Extra keys are ignored.", "properties": {}, "type": "object" }, "name": "compose_tel_landline", "outputSchema": { "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" }, "display": { "description": "Human display number", "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "href": { "description": "tel:+49…", "type": "string" }, "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" }, "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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" } }, { "description": "WHAT: tel: href for the public mobile number. Call with {}. RETURNS href + display. USE as the primary call CTA. DOES NOT place the call. NEXT: compose_tel_landline, list_whatsapp_options.", "inputSchema": { "additionalProperties": false, "description": "This tool takes no arguments. Call tools/call with arguments: {}. Extra keys are ignored.", "properties": {}, "type": "object" }, "name": "compose_tel_mobile", "outputSchema": { "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" }, "display": { "description": "Human display number", "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "href": { "description": "tel:+49…", "type": "string" }, "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" }, "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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" } }, { "description": "WHAT: wa.me link. Optional option=zugefallen|abgeschlossen|zylinder (list_whatsapp_options ids). Unknown option → ok:false unknown_option + hint ids. Link only — no form. USE to open WhatsApp with a prefab. NEXT: compose_mailto, get_contact.", "inputSchema": { "properties": { "option": { "description": "Optional situation id from list_whatsapp_options (zugefallen|abgeschlossen|zylinder). Unknown → ok:false.", "type": "string" } }, "type": "object" }, "name": "compose_whatsapp", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "href": { "description": "https://wa.me/…", "format": "uri", "type": "string" }, "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" }, "note": { "description": "Link only. Kein Formular.", "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" }, "option": { "description": "Echoed option (null if omitted)", "type": [ "string", "null" ] }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" } }, { "description": "WHAT: Air distance (km) from a Gebiet (slug|plz|name) or lat/lng/icbm to the Gewerbesitz. walkIn=false. RETURNS from, office, distance_km. USE for rough proximity — not driving time. DOES NOT route via OSRM. NEXT: get_geo_office, find_by_geo.", "inputSchema": { "properties": { "icbm": { "description": "Optional 'lat, lng' instead of place lookup", "type": "string" }, "lat": { "description": "Optional query latitude instead of place lookup", "type": "number" }, "lng": { "description": "Optional query longitude", "type": "number" }, "name": { "description": "German place name substring (case-insensitive, umlauts ok), e.g. Grünbühl, Pattonville. Used when slug/plz omitted.", "type": "string" }, "plz": { "description": "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.", "type": "string" }, "slug": { "description": "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.", "type": "string" } }, "type": "object" }, "name": "distance_to_office", "outputSchema": { "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" }, "distance_km": { "description": "Air distance kilometres", "type": "number" }, "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" }, "from": { "description": "Origin {lat,lng}", "properties": { "lat": { "type": "number" }, "lng": { "type": "number" } }, "type": "object" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "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" }, "office": { "description": "Office {lat,lng,icbm}", "type": "object" }, "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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "slug": { "description": "Resolved slug if from place lookup", "type": [ "string", "null" ] }, "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" }, "walkIn": { "description": "Always false", "type": "boolean" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: Multi-match Einsatzgebiete by q, name, or slug (substring, umlauts ok). RETURNS all matching point cards. Same match rules as find_by_gebiet — prefer this name when the agent thinks in 'area' wording. USE for fuzzy place names. DOES NOT require an exact slug. Prefer find_by_plz for postcode-only queries. NEXT: get_service_area, get_embed_map.", "inputSchema": { "properties": { "name": { "description": "German place name substring (case-insensitive, umlauts ok), e.g. Grünbühl, Pattonville. Used when slug/plz omitted.", "type": "string" }, "q": { "description": "Name or slug query", "type": "string" }, "slug": { "description": "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.", "type": "string" } }, "type": "object" }, "name": "find_by_area", "outputSchema": { "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" }, "count": { "type": "number" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "items": { "items": { "additionalProperties": true, "description": "One Einsatzgebiet point card (not a polygon).", "properties": { "distance_km": { "description": "Present on geo-ranked results: air distance from query point", "type": "number" }, "embed_map": { "description": "https://maps.ikeytz.com/{slug}", "format": "uri", "type": "string" }, "geo_api": { "description": "https://maps.ikeytz.com/api/v1/embed/ort/{slug}", "format": "uri", "type": "string" }, "google_maps": { "description": "Paste-ready 'lat, lng'", "type": "string" }, "icbm": { "description": "ICBM 'lat, lng' (same as google_maps)", "type": "string" }, "kind": { "description": "stadtteil | ort", "type": "string" }, "lat": { "description": "WGS84 latitude of THIS place", "type": "number" }, "lng": { "description": "WGS84 longitude of THIS place", "type": "number" }, "maps_mcp": { "const": "https://maps.ikeytz.com/mcp", "description": "maps MCP endpoint", "format": "uri", "type": "string" }, "name": { "description": "German place name", "type": "string" }, "parent": { "description": "Ludwigsburg or Landkreis Ludwigsburg", "type": "string" }, "plz": { "description": "Postcode", "type": "string" }, "slug": { "description": "maps slug", "type": "string" }, "url": { "description": "Keyword/www page URL when present", "type": "string" } }, "type": "object" }, "type": "array" }, "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" }, "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" }, "q": { "type": "string" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" } }, { "description": "WHAT: Multi-match Gebiete by q, name, or slug (substring, umlauts ok). RETURNS all matching point cards. USE for fuzzy place names. DOES NOT require exact slug. NEXT: get_service_area for one, or get_grenze.", "inputSchema": { "properties": { "name": { "description": "German place name substring (case-insensitive, umlauts ok), e.g. Grünbühl, Pattonville. Used when slug/plz omitted.", "type": "string" }, "q": { "description": "Name or slug query (preferred)", "type": "string" }, "slug": { "description": "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.", "type": "string" } }, "type": "object" }, "name": "find_by_gebiet", "outputSchema": { "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" }, "count": { "type": "number" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "items": { "items": { "additionalProperties": true, "description": "One Einsatzgebiet point card (not a polygon).", "properties": { "distance_km": { "description": "Present on geo-ranked results: air distance from query point", "type": "number" }, "embed_map": { "description": "https://maps.ikeytz.com/{slug}", "format": "uri", "type": "string" }, "geo_api": { "description": "https://maps.ikeytz.com/api/v1/embed/ort/{slug}", "format": "uri", "type": "string" }, "google_maps": { "description": "Paste-ready 'lat, lng'", "type": "string" }, "icbm": { "description": "ICBM 'lat, lng' (same as google_maps)", "type": "string" }, "kind": { "description": "stadtteil | ort", "type": "string" }, "lat": { "description": "WGS84 latitude of THIS place", "type": "number" }, "lng": { "description": "WGS84 longitude of THIS place", "type": "number" }, "maps_mcp": { "const": "https://maps.ikeytz.com/mcp", "description": "maps MCP endpoint", "format": "uri", "type": "string" }, "name": { "description": "German place name", "type": "string" }, "parent": { "description": "Ludwigsburg or Landkreis Ludwigsburg", "type": "string" }, "plz": { "description": "Postcode", "type": "string" }, "slug": { "description": "maps slug", "type": "string" }, "url": { "description": "Keyword/www page URL when present", "type": "string" } }, "type": "object" }, "type": "array" }, "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" }, "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" }, "q": { "description": "Resolved query", "type": "string" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" } }, { "description": "WHAT: Rank Einsatzgebiete by lat/lng (or icbm). Optional radius_km; else nearest N (limit, default 5). (0,0) and far points → ok=false outside_service_area. RETURNS items with distance_km. USE for 'near this coordinate'. DOES NOT route or drive-time. NEXT: get_service_area, get_grenze, distance_to_office.", "inputSchema": { "properties": { "icbm": { "description": "ICBM or paste 'lat, lng' (comma-separated). Alternative to lat+lng.", "type": "string" }, "lat": { "description": "WGS84 latitude. Required with lng unless icbm is set. (0,0) → outside_service_area.", "type": "number" }, "limit": { "description": "Maximum items or lines to return after offset. Omit = all remaining in the window (subject to tool-specific clamps). For geo near-search default is often 5 without radius_km, up to 52 with radius.", "minimum": 1, "type": "integer" }, "lng": { "description": "WGS84 longitude. Required with lat unless icbm is set.", "type": "number" }, "radius_km": { "description": "Optional air-radius filter in km. Omit = return nearest N (limit). Far points / (0,0) → outside_service_area.", "type": "number" } }, "type": "object" }, "name": "find_by_geo", "outputSchema": { "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" }, "count": { "type": "number" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "icbm": { "description": "Query ICBM", "type": "string" }, "items": { "description": "Ranked Gebiete with distance_km", "items": { "additionalProperties": true, "description": "One Einsatzgebiet point card (not a polygon).", "properties": { "distance_km": { "description": "Present on geo-ranked results: air distance from query point", "type": "number" }, "embed_map": { "description": "https://maps.ikeytz.com/{slug}", "format": "uri", "type": "string" }, "geo_api": { "description": "https://maps.ikeytz.com/api/v1/embed/ort/{slug}", "format": "uri", "type": "string" }, "google_maps": { "description": "Paste-ready 'lat, lng'", "type": "string" }, "icbm": { "description": "ICBM 'lat, lng' (same as google_maps)", "type": "string" }, "kind": { "description": "stadtteil | ort", "type": "string" }, "lat": { "description": "WGS84 latitude of THIS place", "type": "number" }, "lng": { "description": "WGS84 longitude of THIS place", "type": "number" }, "maps_mcp": { "const": "https://maps.ikeytz.com/mcp", "description": "maps MCP endpoint", "format": "uri", "type": "string" }, "name": { "description": "German place name", "type": "string" }, "parent": { "description": "Ludwigsburg or Landkreis Ludwigsburg", "type": "string" }, "plz": { "description": "Postcode", "type": "string" }, "slug": { "description": "maps slug", "type": "string" }, "url": { "description": "Keyword/www page URL when present", "type": "string" } }, "type": "object" }, "type": "array" }, "lat": { "description": "Query latitude", "type": "number" }, "lng": { "description": "Query longitude", "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" }, "nearest_km": { "description": "On outside_service_area failures: nearest distance if any", "type": [ "number", "null" ] }, "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" }, "radius_km": { "description": "Applied radius or null", "type": [ "number", "null" ] }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" } }, { "description": "WHAT: Paste Google Maps / ICBM coordinates (q or icbm or lat/lng) → nearest ikeytz Gebiete (same ranking as find_by_geo). (0,0) → outside_service_area. USE when the user pastes a Maps pin. NEXT: get_service_area, get_embed_map.", "inputSchema": { "properties": { "icbm": { "description": "ICBM or paste 'lat, lng' (comma-separated). Alternative to lat+lng.", "type": "string" }, "lat": { "description": "WGS84 latitude. Required with lng unless icbm is set. (0,0) → outside_service_area.", "type": "number" }, "limit": { "description": "Maximum items or lines to return after offset. Omit = all remaining in the window (subject to tool-specific clamps). For geo near-search default is often 5 without radius_km, up to 52 with radius.", "minimum": 1, "type": "integer" }, "lng": { "description": "WGS84 longitude. Required with lat unless icbm is set.", "type": "number" }, "q": { "description": "Paste string containing 'lat, lng'", "type": "string" }, "radius_km": { "description": "Optional air-radius filter in km. Omit = return nearest N (limit). Far points / (0,0) → outside_service_area.", "type": "number" } }, "type": "object" }, "name": "find_by_google_maps", "outputSchema": { "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" }, "count": { "type": "number" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "icbm": { "type": "string" }, "items": { "items": { "additionalProperties": true, "description": "One Einsatzgebiet point card (not a polygon).", "properties": { "distance_km": { "description": "Present on geo-ranked results: air distance from query point", "type": "number" }, "embed_map": { "description": "https://maps.ikeytz.com/{slug}", "format": "uri", "type": "string" }, "geo_api": { "description": "https://maps.ikeytz.com/api/v1/embed/ort/{slug}", "format": "uri", "type": "string" }, "google_maps": { "description": "Paste-ready 'lat, lng'", "type": "string" }, "icbm": { "description": "ICBM 'lat, lng' (same as google_maps)", "type": "string" }, "kind": { "description": "stadtteil | ort", "type": "string" }, "lat": { "description": "WGS84 latitude of THIS place", "type": "number" }, "lng": { "description": "WGS84 longitude of THIS place", "type": "number" }, "maps_mcp": { "const": "https://maps.ikeytz.com/mcp", "description": "maps MCP endpoint", "format": "uri", "type": "string" }, "name": { "description": "German place name", "type": "string" }, "parent": { "description": "Ludwigsburg or Landkreis Ludwigsburg", "type": "string" }, "plz": { "description": "Postcode", "type": "string" }, "slug": { "description": "maps slug", "type": "string" }, "url": { "description": "Keyword/www page URL when present", "type": "string" } }, "type": "object" }, "type": "array" }, "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" }, "nearest_km": { "type": [ "number", "null" ] }, "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" }, "radius_km": { "type": [ "number", "null" ] }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" } }, { "description": "WHAT: Rank Einsatzgebiete by an ICBM 'lat, lng' string (optional lat/lng, radius_km, limit). RETURNS items with distance_km. USE when the user pastes ICBM metadata. Prefer find_by_geo instead for plain lat/lng without an ICBM string. (0,0) and far points → ok=false outside_service_area. DOES NOT route or drive-time. NEXT: get_service_area, get_embed_map, get_grenze.", "inputSchema": { "properties": { "icbm": { "description": "ICBM or paste 'lat, lng' (comma-separated). Alternative to lat+lng.", "type": "string" }, "lat": { "description": "WGS84 latitude. Required with lng unless icbm is set. (0,0) → outside_service_area.", "type": "number" }, "limit": { "description": "Maximum items or lines to return after offset. Omit = all remaining in the window (subject to tool-specific clamps). For geo near-search default is often 5 without radius_km, up to 52 with radius.", "minimum": 1, "type": "integer" }, "lng": { "description": "WGS84 longitude. Required with lat unless icbm is set.", "type": "number" }, "radius_km": { "description": "Optional air-radius filter in km. Omit = return nearest N (limit). Far points / (0,0) → outside_service_area.", "type": "number" } }, "type": "object" }, "name": "find_by_icbm", "outputSchema": { "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" }, "count": { "type": "number" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "icbm": { "type": "string" }, "items": { "items": { "additionalProperties": true, "description": "One Einsatzgebiet point card (not a polygon).", "properties": { "distance_km": { "description": "Present on geo-ranked results: air distance from query point", "type": "number" }, "embed_map": { "description": "https://maps.ikeytz.com/{slug}", "format": "uri", "type": "string" }, "geo_api": { "description": "https://maps.ikeytz.com/api/v1/embed/ort/{slug}", "format": "uri", "type": "string" }, "google_maps": { "description": "Paste-ready 'lat, lng'", "type": "string" }, "icbm": { "description": "ICBM 'lat, lng' (same as google_maps)", "type": "string" }, "kind": { "description": "stadtteil | ort", "type": "string" }, "lat": { "description": "WGS84 latitude of THIS place", "type": "number" }, "lng": { "description": "WGS84 longitude of THIS place", "type": "number" }, "maps_mcp": { "const": "https://maps.ikeytz.com/mcp", "description": "maps MCP endpoint", "format": "uri", "type": "string" }, "name": { "description": "German place name", "type": "string" }, "parent": { "description": "Ludwigsburg or Landkreis Ludwigsburg", "type": "string" }, "plz": { "description": "Postcode", "type": "string" }, "slug": { "description": "maps slug", "type": "string" }, "url": { "description": "Keyword/www page URL when present", "type": "string" } }, "type": "object" }, "type": "array" }, "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" }, "nearest_km": { "type": [ "number", "null" ] }, "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" }, "radius_km": { "type": [ "number", "null" ] }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" } }, { "description": "WHAT: Search maps llms-keywords.txt (keyword → maps URL). q required. RETURNS matching keyword/url rows (clamped limit). USE for SEO/keyword → Gebiet page. DOES NOT search www keywords. NEXT: get_service_area / get_embed_map with the slug from the URL.", "inputSchema": { "properties": { "limit": { "description": "Maximum items or lines to return after offset. Omit = all remaining in the window (subject to tool-specific clamps). For geo near-search default is often 5 without radius_km, up to 52 with radius.", "minimum": 1, "type": "integer" }, "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" }, "q": { "description": "Required search string matched against keyword and URL (substring, case-insensitive).", "type": "string" } }, "required": [ "q" ], "type": "object" }, "name": "find_by_keyword", "outputSchema": { "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" }, "count": { "description": "Returned hits", "type": "number" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "items": { "description": "keyword + url rows", "items": { "properties": { "keyword": { "type": "string" }, "url": { "format": "uri", "type": "string" } }, "type": "object" }, "type": "array" }, "lines": { "description": "Raw TSV lines", "items": { "type": "string" }, "type": "array" }, "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" }, "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" }, "q": { "description": "Query echoed", "type": "string" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" }, "total": { "description": "Total matches before limit", "type": "number" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: All Einsatzgebiete with this PLZ (not only the first). plz required (or q as PLZ). RETURNS items[] point cards + count. USE when several Stadtteile share a postcode. NEXT: get_service_area(slug) for one card.", "inputSchema": { "properties": { "plz": { "description": "Required German postcode.", "type": "string" }, "q": { "description": "Alias for plz if plz omitted", "type": "string" } }, "required": [ "plz" ], "type": "object" }, "name": "find_by_plz", "outputSchema": { "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" }, "count": { "description": "Number of Gebiete", "type": "number" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "items": { "description": "All matches", "items": { "additionalProperties": true, "description": "One Einsatzgebiet point card (not a polygon).", "properties": { "distance_km": { "description": "Present on geo-ranked results: air distance from query point", "type": "number" }, "embed_map": { "description": "https://maps.ikeytz.com/{slug}", "format": "uri", "type": "string" }, "geo_api": { "description": "https://maps.ikeytz.com/api/v1/embed/ort/{slug}", "format": "uri", "type": "string" }, "google_maps": { "description": "Paste-ready 'lat, lng'", "type": "string" }, "icbm": { "description": "ICBM 'lat, lng' (same as google_maps)", "type": "string" }, "kind": { "description": "stadtteil | ort", "type": "string" }, "lat": { "description": "WGS84 latitude of THIS place", "type": "number" }, "lng": { "description": "WGS84 longitude of THIS place", "type": "number" }, "maps_mcp": { "const": "https://maps.ikeytz.com/mcp", "description": "maps MCP endpoint", "format": "uri", "type": "string" }, "name": { "description": "German place name", "type": "string" }, "parent": { "description": "Ludwigsburg or Landkreis Ludwigsburg", "type": "string" }, "plz": { "description": "Postcode", "type": "string" }, "slug": { "description": "maps slug", "type": "string" }, "url": { "description": "Keyword/www page URL when present", "type": "string" } }, "type": "object" }, "type": "array" }, "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" }, "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": { "description": "Queried PLZ", "type": "string" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" } }, { "description": "WHAT: Search maps llms-serp.txt blocks by q, path, url, or slug. RETURNS path/url/snippet items. USE for title/H1/description SERP cards on maps. DOES NOT scrape live HTML. NEXT: get_serp_snippet for one full block.", "inputSchema": { "properties": { "limit": { "description": "Maximum items or lines to return after offset. Omit = all remaining in the window (subject to tool-specific clamps). For geo near-search default is often 5 without radius_km, up to 52 with radius.", "minimum": 1, "type": "integer" }, "path": { "description": "maps path fragment, e.g. /pattonville", "type": "string" }, "q": { "description": "Free-text search in SERP blocks", "type": "string" }, "slug": { "description": "Gebiet slug", "type": "string" }, "url": { "description": "Full https://maps.ikeytz.com/… URL", "type": "string" } }, "type": "object" }, "name": "find_by_serp", "outputSchema": { "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" }, "count": { "type": "number" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "items": { "description": "SERP hits", "items": { "properties": { "path": { "type": "string" }, "snippet": { "type": "string" }, "url": { "type": "string" } }, "type": "object" }, "type": "array" }, "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" }, "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" }, "q": { "description": "Resolved query", "type": "string" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" }, "total": { "type": "number" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: About maps.ikeytz.com (same core card as site_overview — 52 maps, not www Über-uns corpus). USE for 'what is this host'. DOES NOT return www about body. NEXT: site_overview, get_links, get_business_identity.", "inputSchema": { "properties": { "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" } }, "type": "object" }, "name": "get_about", "outputSchema": { "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" }, "brand": { "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" }, "count": { "type": "number" }, "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" }, "h1": { "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" }, "legalName": { "type": "string" }, "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" }, "mcp": { "format": "uri", "type": "string" }, "note": { "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" }, "owner": { "type": "string" }, "registry": { "type": "string" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "sister": { "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" }, "title": { "type": "string" }, "tool": { "description": "Echo of the tool name that produced this object (e.g. get_service_area).", "type": "string" }, "walkIn": { "type": "boolean" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: Returns only a URL to www.ikeytz.com/agb — not AGB clause text. USE when the user asks for AGB while on maps and you only need the link. Prefer www MCP get_legal(doc=agb) or www get_agb when you need the legal corpus. DOES NOT invent legal clauses.", "inputSchema": { "additionalProperties": false, "description": "This tool takes no arguments. Call tools/call with arguments: {}. Extra keys are ignored.", "properties": {}, "type": "object" }, "name": "get_agb", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "description": "Absolute www.ikeytz.com URL — open there or call @ikeytz/mcp", "format": "uri", "type": "string" }, "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" }, "note": { "description": "maps only points; Volltext/Preise/FAQ live on www", "type": "string" }, "npm": { "description": "www CLI package @ikeytz/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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "requested_locale": { "description": "Locale the caller asked for; maps still returns locale=de", "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" }, "www_mcp": { "description": "https://www.ikeytz.com/mcp — sister machine for prices/FAQ/corpus", "format": "uri", "type": "string" }, "www_tool": { "description": "Same tool name on www MCP that holds the real payload", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "Reads maps /ai-pages/de/{slug}.txt when the path is a maps Gebiet/ai-page; otherwise returns a www HTML hand-off for non-maps paths. path or slug. USE for agent-ready maps Gebiet prose — not for site-wide crawl policy (that is get_ai_txt). DOES NOT invent page bodies. NEXT: get_service_area, get_lage, get_ai_txt.", "inputSchema": { "properties": { "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" }, "path": { "description": "Path or ai-pages path fragment", "type": "string" }, "slug": { "description": "Gebiet or ai-page slug", "type": "string" } }, "type": "object" }, "name": "get_ai_page", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "description": "When www pointer", "type": "string" }, "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" }, "note": { "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" }, "path": { "description": "/ai-pages/de/{slug}.txt", "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" }, "text": { "description": "Full ai-page UTF-8 text", "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" } }, { "description": "WHAT: Alias get_discovery(which=ai-txt) — maps /.well-known/ai.txt 1:1. USE for crawl/train policy (ai-train=no). NEXT: get_llms_txt.", "inputSchema": { "properties": { "limit": { "description": "Maximum items or lines to return after offset. Omit = all remaining in the window (subject to tool-specific clamps). For geo near-search default is often 5 without radius_km, up to 52 with radius.", "minimum": 1, "type": "integer" }, "offset": { "default": 0, "description": "0-based index into a list or discovery file lines (split on \\n). 0 = first. Omit = 0. Combine with limit to page. Use nextOffset / offset+limit from a previous result when present.", "minimum": 0, "type": "integer" } }, "type": "object" }, "name": "get_ai_txt", "outputSchema": { "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" }, "bytesReturned": { "description": "UTF-8 length of text window", "type": "number" }, "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" }, "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" }, "fetchTruncated": { "description": "true if a load cap cut the file before paging (www Cap). maps reads full from disk → always false.", "type": "boolean" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "limit": { "description": "Applied line limit, or null if omitted", "type": [ "number", "null" ] }, "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" }, "missing": { "description": "true if the discovery file was not found on disk", "type": "boolean" }, "nextOffset": { "description": "Pass as next offset when truncated; else null. Also in # MCP-META.", "type": [ "number", "null" ] }, "offset": { "description": "Applied 0-based line offset", "type": "number" }, "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" }, "path": { "description": "Public relative path of the file on maps", "type": "string" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "returnedLines": { "description": "Lines in this window (before # MCP-META)", "type": "number" }, "returnedUrls": { "description": "http(s) lines in this window", "type": "number" }, "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" }, "text": { "description": "UTF-8 line window (file body before # MCP-META). Same bytes as summary without meta trailer.", "type": "string" }, "tool": { "description": "Echo of the tool name that produced this object (e.g. get_service_area).", "type": "string" }, "totalBytes": { "description": "Full discovery file size in bytes (UTF-8). Also in trailing # MCP-META.", "type": "number" }, "totalChars": { "description": "Full discovery file character length before offset/limit. Also in # MCP-META.", "type": "number" }, "totalLines": { "description": "Alias of total_lines", "type": "number" }, "totalUrls": { "description": "http(s) lines in the full file", "type": "number" }, "total_lines": { "description": "Line count of the full file", "type": "number" }, "truncated": { "description": "true if offset+limit left more lines. Also in trailing # MCP-META.", "type": "boolean" }, "which": { "description": "Resolved discovery id (ard, ai-catalog, llms, robots, sitemap-txt, llms-mcp-server, …).", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: Returns only a URL to www /auswahl/{slug} — not the Auswahl article body. slug required. USE when the user names a specific Auswahl slug on maps. Prefer list_auswahl for the hub link; prefer www MCP get_auswahl_item({slug}) when you need the full article. DOES NOT return article text.", "inputSchema": { "properties": { "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" }, "slug": { "description": "Required Auswahl slug on www", "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "get_auswahl_item", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "description": "Absolute www.ikeytz.com URL — open there or call @ikeytz/mcp", "format": "uri", "type": "string" }, "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" }, "note": { "description": "maps only points; Volltext/Preise/FAQ live on www", "type": "string" }, "npm": { "description": "www CLI package @ikeytz/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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "requested_locale": { "description": "Locale the caller asked for; maps still returns locale=de", "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" }, "www_mcp": { "description": "https://www.ikeytz.com/mcp — sister machine for prices/FAQ/corpus", "format": "uri", "type": "string" }, "www_tool": { "description": "Same tool name on www MCP that holds the real payload", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: Returns Inhaber, brand, legalName, hours, NAP, and office coords for LocalBusiness / impressum-grade facts on maps. Call with {} or locale=de. walkIn=false — mobile locksmith only. USE when you need the identity card (who owns the business, hours, legal name). Prefer get_contact for phone/email/WhatsApp CTAs; prefer get_geo_office for the /buero pin and embed; prefer get_impressum for the full imprint text file. DOES NOT update records or accept walk-in bookings.", "inputSchema": { "properties": { "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" } }, "type": "object" }, "name": "get_business_identity", "outputSchema": { "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" }, "brand": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "hours": { "type": "string" }, "legalName": { "type": "string" }, "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" }, "maps": { "format": "uri", "type": "string" }, "nap": { "description": "Public NAP payload", "type": "object" }, "note": { "type": "string" }, "office": { "description": "lat/lng/google_maps/icbm", "type": "object" }, "office_note": { "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" }, "owner": { "description": "Mahmud Reza Kashani", "type": "string" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" }, "walkIn": { "description": "Always false", "type": "boolean" }, "www": { "format": "uri", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: Public NAP — mobile, landline, fax, email, mapsEmail ([email protected]), WhatsApp, address, office coords. walkIn=false. USE for call/WhatsApp/mail CTAs. DOES NOT open tickets or send messages. NEXT: compose_tel_mobile, compose_whatsapp, compose_mailto, list_whatsapp_options.", "inputSchema": { "properties": { "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" } }, "type": "object" }, "name": "get_contact", "outputSchema": { "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": { "address": { "description": "Structured address block", "type": "object" }, "addressLine": { "description": "Single-line address", "type": "string" }, "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" }, "email": { "description": "[email protected]", "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" }, "fax": { "description": "Fax display", "type": "string" }, "google_maps": { "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" }, "icbm": { "type": "string" }, "landline": { "description": "Landline display", "type": "string" }, "lat": { "description": "Office lat", "type": "number" }, "lng": { "description": "Office 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" }, "mapsEmail": { "description": "[email protected]", "type": "string" }, "mobile": { "description": "Mobile display", "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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" }, "walkIn": { "description": "Always false", "type": "boolean" }, "whatsapp": { "description": "wa.me URL", "format": "uri", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: English map copyright text from maps /llms-copyright.txt. Optional offset/limit. USE for EN citations of map authorship. NEXT: get_urheberrecht.", "inputSchema": { "properties": { "limit": { "description": "Maximum items or lines to return after offset. Omit = all remaining in the window (subject to tool-specific clamps). For geo near-search default is often 5 without radius_km, up to 52 with radius.", "minimum": 1, "type": "integer" }, "offset": { "default": 0, "description": "0-based index into a list or discovery file lines (split on \\n). 0 = first. Omit = 0. Combine with limit to page. Use nextOffset / offset+limit from a previous result when present.", "minimum": 0, "type": "integer" } }, "type": "object" }, "name": "get_copyright", "outputSchema": { "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" }, "body": { "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" }, "doc": { "const": "copyright", "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "type": "string" }, "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" }, "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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" }, "which": { "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: Returns only a URL to www Datenschutz — not the privacy-policy body. USE when the user asks for Datenschutz while on maps and you only need the link. Prefer www MCP get_datenschutz or get_legal for the corpus. DOES NOT invent privacy clauses.", "inputSchema": { "additionalProperties": false, "description": "This tool takes no arguments. Call tools/call with arguments: {}. Extra keys are ignored.", "properties": {}, "type": "object" }, "name": "get_datenschutz", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "description": "Absolute www.ikeytz.com URL — open there or call @ikeytz/mcp", "format": "uri", "type": "string" }, "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" }, "note": { "description": "maps only points; Volltext/Preise/FAQ live on www", "type": "string" }, "npm": { "description": "www CLI package @ikeytz/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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "requested_locale": { "description": "Locale the caller asked for; maps still returns locale=de", "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" }, "www_mcp": { "description": "https://www.ikeytz.com/mcp — sister machine for prices/FAQ/corpus", "format": "uri", "type": "string" }, "www_tool": { "description": "Same tool name on www MCP that holds the real payload", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: 1:1 mirror of a maps discovery file (UTF-8 text/JSON). summary ≡ line window + trailing # MCP-META (truncated, totalUrls, nextOffset) — not a one-line stub. which is required — common ids: ard, ai-catalog, ai-txt, ai-plugin, answer-engine, agent-skills, llms, llms-full, llms-index, llms-keywords, llms-serp, llms-impressum-kontakt, llms-orte-geo, llms-urheberrecht, llms-copyright, llms-mcp-server, llms-mcp-web, robots, sitemap-txt, sitemap-xml. Optional offset/limit line window. USE for agent-ready catalogs and robots/sitemap. DOES NOT invent missing files (missing=true). NEXT: find_by_keyword / find_by_serp for structured search; get_llms_txt / get_ai_txt aliases.", "inputSchema": { "properties": { "limit": { "description": "Maximum items or lines to return after offset. Omit = all remaining in the window (subject to tool-specific clamps). For geo near-search default is often 5 without radius_km, up to 52 with radius.", "minimum": 1, "type": "integer" }, "offset": { "default": 0, "description": "0-based index into a list or discovery file lines (split on \\n). 0 = first. Omit = 0. Combine with limit to page. Use nextOffset / offset+limit from a previous result when present.", "minimum": 0, "type": "integer" }, "which": { "description": "Required discovery id. Examples: ard, ai-catalog, ai-txt, ai-plugin, answer-engine, agent-skills, llms, llms-full, llms-index, llms-keywords, llms-serp, llms-impressum-kontakt, llms-orte-geo, llms-urheberrecht, llms-copyright, llms-mcp-server, llms-mcp-web, robots, sitemap-txt, sitemap-xml.", "type": "string" } }, "required": [ "which" ], "type": "object" }, "name": "get_discovery", "outputSchema": { "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" }, "bytesReturned": { "description": "UTF-8 length of text window", "type": "number" }, "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" }, "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" }, "fetchTruncated": { "description": "true if a load cap cut the file before paging (www Cap). maps reads full from disk → always false.", "type": "boolean" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "limit": { "description": "Applied line limit, or null if omitted", "type": [ "number", "null" ] }, "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" }, "missing": { "description": "true if the discovery file was not found on disk", "type": "boolean" }, "nextOffset": { "description": "Pass as next offset when truncated; else null. Also in # MCP-META.", "type": [ "number", "null" ] }, "offset": { "description": "Applied 0-based line offset", "type": "number" }, "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" }, "path": { "description": "Public relative path of the file on maps", "type": "string" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "returnedLines": { "description": "Lines in this window (before # MCP-META)", "type": "number" }, "returnedUrls": { "description": "http(s) lines in this window", "type": "number" }, "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" }, "text": { "description": "UTF-8 line window (file body before # MCP-META). Same bytes as summary without meta trailer.", "type": "string" }, "tool": { "description": "Echo of the tool name that produced this object (e.g. get_service_area).", "type": "string" }, "totalBytes": { "description": "Full discovery file size in bytes (UTF-8). Also in trailing # MCP-META.", "type": "number" }, "totalChars": { "description": "Full discovery file character length before offset/limit. Also in # MCP-META.", "type": "number" }, "totalLines": { "description": "Alias of total_lines", "type": "number" }, "totalUrls": { "description": "http(s) lines in the full file", "type": "number" }, "total_lines": { "description": "Line count of the full file", "type": "number" }, "truncated": { "description": "true if offset+limit left more lines. Also in trailing # MCP-META.", "type": "boolean" }, "which": { "description": "Resolved discovery id (ard, ai-catalog, llms, robots, sitemap-txt, llms-mcp-server, …).", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: Canonical map page URL https://maps.ikeytz.com/{slug} for iframe/src and Visitenkarte. Lookup slug|plz|name. RETURNS area card + maps_nav + neighbors (MAPS-IL1/IL2) + canonicalUrl. USE for embedding or linking a Gebiet map. NEXT: get_geo_api, get_grenze, get_lage, get_service_area.", "inputSchema": { "properties": { "name": { "description": "German place name substring (case-insensitive, umlauts ok), e.g. Grünbühl, Pattonville. Used when slug/plz omitted.", "type": "string" }, "plz": { "description": "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.", "type": "string" }, "slug": { "description": "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.", "type": "string" } }, "type": "object" }, "name": "get_embed_map", "outputSchema": { "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" }, "maps_nav": { "description": "MAPS-IL1 mini-chrome URLs", "properties": { "buero": { "format": "uri", "type": "string" }, "hub": { "format": "uri", "type": "string" }, "mcp_hub": { "format": "uri", "type": "string" } }, "type": "object" }, "name": { "type": "string" }, "neighbors": { "description": "Up to 5 nearest Gebiete", "items": { "properties": { "embed_map": { "format": "uri", "type": "string" }, "name": { "type": "string" }, "slug": { "type": "string" } }, "type": "object" }, "type": "array" }, "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" } }, { "description": "WHAT: Returns only a URL to the www Notfall-Türöffnung page — not a dispatch. USE for emergency lockout context on maps when you only need the link. Prefer maps get_contact or compose_tel_mobile for phone CTAs here; prefer www MCP get_emergency for the full Notfall body. Optional locale selects the www URL language only. DOES NOT dispatch technicians or claim a van was sent.", "inputSchema": { "properties": { "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" } }, "type": "object" }, "name": "get_emergency", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "description": "Absolute www.ikeytz.com URL — open there or call @ikeytz/mcp", "format": "uri", "type": "string" }, "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" }, "note": { "description": "maps only points; Volltext/Preise/FAQ live on www", "type": "string" }, "npm": { "description": "www CLI package @ikeytz/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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "requested_locale": { "description": "Locale the caller asked for; maps still returns locale=de", "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" }, "www_mcp": { "description": "https://www.ikeytz.com/mcp — sister machine for prices/FAQ/corpus", "format": "uri", "type": "string" }, "www_tool": { "description": "Same tool name on www MCP that holds the real payload", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "Returns only a maps HTML hand-off to www /faq (optional id/q are for www symmetry, not answered here). Does not return the FAQ answer body. USE when the user asks one FAQ while on maps; use list_faq for the hub. Prefer www MCP get_faq({id}|{q}) for the real answer. NEXT: www get_faq.", "inputSchema": { "properties": { "id": { "description": "FAQ id on www", "type": "string" }, "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" }, "q": { "description": "FAQ question search on www", "type": "string" } }, "type": "object" }, "name": "get_faq", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "description": "Absolute www.ikeytz.com URL — open there or call @ikeytz/mcp", "format": "uri", "type": "string" }, "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" }, "note": { "description": "maps only points; Volltext/Preise/FAQ live on www", "type": "string" }, "npm": { "description": "www CLI package @ikeytz/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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "requested_locale": { "description": "Locale the caller asked for; maps still returns locale=de", "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" }, "www_mcp": { "description": "https://www.ikeytz.com/mcp — sister machine for prices/FAQ/corpus", "format": "uri", "type": "string" }, "www_tool": { "description": "Same tool name on www MCP that holds the real payload", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: Public embed JSON URL https://maps.ikeytz.com/api/v1/embed/ort/{slug} (point + Grenze on that endpoint). Lookup slug|plz|name. RETURNS URL pointer + area card; note that the MCP payload itself is not the polygon. USE to fetch/open the public JSON. NEXT: get_grenze for GeoJSON polygon inside MCP.", "inputSchema": { "properties": { "name": { "description": "German place name substring (case-insensitive, umlauts ok), e.g. Grünbühl, Pattonville. Used when slug/plz omitted.", "type": "string" }, "plz": { "description": "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.", "type": "string" }, "slug": { "description": "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.", "type": "string" } }, "type": "object" }, "name": "get_geo_api", "outputSchema": { "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" } }, { "description": "WHO/WHAT: Gewerbesitz (registered office) pin on maps.ikeytz.com/buero. walkIn=false always — mobile locksmith, not a shop counter. RETURNS street, postal, city, lat, lng, google_maps/icbm (same 'lat, lng' string), embed_map, geo_api (/api/v1/embed/office), note, walkIn. USE for NAP/schema or Footer iframe. DOES NOT accept walk-in customers or bookings. NEXT: get_contact, distance_to_office, get_business_identity.", "inputSchema": { "properties": { "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" } }, "type": "object" }, "name": "get_geo_office", "outputSchema": { "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" }, "city": { "description": "City", "type": "string" }, "embed_map": { "description": "https://maps.ikeytz.com/buero", "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": { "description": "https://maps.ikeytz.com/api/v1/embed/office", "format": "uri", "type": "string" }, "google_maps": { "description": "'lat, lng'", "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" }, "icbm": { "description": "ICBM string (same as google_maps)", "type": "string" }, "lat": { "description": "Office latitude", "type": "number" }, "lng": { "description": "Office longitude", "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" }, "note": { "description": "Büro · kein Kundenverkehr vor Ort", "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" }, "postal": { "description": "Postal code", "type": "string" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "street": { "description": "Office street", "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" }, "walkIn": { "description": "Always false — no shop counter", "type": "boolean" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: Geschichte (history) text for one Einsatzgebiet Visitenkarte. Lookup slug|plz|name. RETURNS slug, name, geschichte. USE for place history prose on the map page. NEXT: get_lage, get_ai_page.", "inputSchema": { "properties": { "name": { "description": "German place name substring (case-insensitive, umlauts ok), e.g. Grünbühl, Pattonville. Used when slug/plz omitted.", "type": "string" }, "plz": { "description": "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.", "type": "string" }, "slug": { "description": "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.", "type": "string" } }, "type": "object" }, "name": "get_geschichte", "outputSchema": { "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" }, "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" }, "geschichte": { "description": "Geschichte prose (may be empty)", "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" }, "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" }, "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" }, "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" } }, { "description": "WHAT: OSM Gebietspolygon for one Einsatzgebiet as GeoJSON FeatureCollection inside the MCP result. Lookup slug|plz|name. RETURNS hasPolygon, polygon, point, osmRelationId/osmWayId, via. USE when the agent needs the boundary geometry. DOES NOT replace get_geo_api (URL pointer) or get_grenze_koordinaten (full embed blob). NEXT: get_grenze_koordinaten, get_lage, get_embed_map.", "inputSchema": { "properties": { "name": { "description": "German place name substring (case-insensitive, umlauts ok), e.g. Grünbühl, Pattonville. Used when slug/plz omitted.", "type": "string" }, "plz": { "description": "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.", "type": "string" }, "slug": { "description": "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.", "type": "string" } }, "type": "object" }, "name": "get_grenze", "outputSchema": { "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" }, "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" }, "hasPolygon": { "description": "true if polygon.features length > 0", "type": "boolean" }, "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" }, "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" }, "osmRelationId": { "description": "OSM relation id if any", "type": [ "number", "null" ] }, "osmWayId": { "description": "OSM way id if any", "type": [ "number", "null" ] }, "plz": { "type": "string" }, "point": { "description": "Point feature or null", "type": [ "object", "null" ] }, "polygon": { "description": "GeoJSON FeatureCollection (may be empty)", "type": "object" }, "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" }, "via": { "description": "Fetch path hint", "type": [ "string", "null" ] } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: Full public Ort-Embed JSON for one Einsatzgebiet — same fields as GET https://maps.ikeytz.com/api/v1/embed/ort/{slug} (part=full): phone/NAP, style, point, points, polygon, featureCollection, OSM ids, embed paths, iframe. Lookup slug|plz|name. USE when the agent needs coordinates+boundary+NAP in one MCP call. DOES NOT change the HTTP embed API. DOES NOT replace slim get_grenze (polygon-only) or get_geo_api (URL only). NEXT: get_grenze, get_contact, get_embed_map.", "inputSchema": { "properties": { "name": { "description": "German place name substring (case-insensitive, umlauts ok), e.g. Grünbühl, Pattonville. Used when slug/plz omitted.", "type": "string" }, "plz": { "description": "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.", "type": "string" }, "slug": { "description": "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.", "type": "string" } }, "type": "object" }, "name": "get_grenze_koordinaten", "outputSchema": { "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" }, "color": { "type": "string" }, "countPoints": { "type": "number" }, "countPolygons": { "type": "number" }, "embed": { "description": "Relative fn embed path", "type": "string" }, "embedGrenze": { "type": "string" }, "embedPublic": { "type": "string" }, "embedPunkt": { "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" }, "featureCollection": { "description": "Polygon + point FeatureCollection", "type": "object" }, "geoPosition": { "description": "lat;lng", "type": "string" }, "gruppe": { "type": "string" }, "hasPolygon": { "type": "boolean" }, "hasPolygonKnown": { "type": "boolean" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "href": { "description": "www keyword page", "format": "uri", "type": "string" }, "icbm": { "type": "string" }, "iframe": { "format": "uri", "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" }, "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" }, "osmRelationId": { "type": [ "number", "null" ] }, "osmWayId": { "type": [ "number", "null" ] }, "part": { "description": "Always full", "type": "string" }, "phone": { "description": "NAP block (mobile, landline, fax, email, address, …)", "type": "object" }, "plz": { "type": "string" }, "point": { "type": [ "object", "null" ] }, "points": { "description": "GeoJSON FeatureCollection", "type": "object" }, "polygon": { "description": "GeoJSON FeatureCollection (polygons only)", "type": "object" }, "purpose": { "type": "string" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "slug": { "type": "string" }, "store": { "type": "string" }, "style": { "description": "MapLibre-ish style colors", "type": "object" }, "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" }, "via": { "type": [ "string", "null" ] } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: maps hub card https://maps.ikeytz.com/ — title/h1 + 52 Gebiet links (not a single Visitenkarte). Call with {}. USE as the maps landing overview. DOES NOT include www prices. NEXT: get_service_area, list_service_areas.", "inputSchema": { "additionalProperties": false, "description": "This tool takes no arguments. Call tools/call with arguments: {}. Extra keys are ignored.", "properties": {}, "type": "object" }, "name": "get_hub", "outputSchema": { "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" }, "count": { "description": "52", "type": "number" }, "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" }, "h1": { "description": "Hub H1", "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" }, "items": { "description": "slug/name/embed_map rows", "items": { "properties": { "embed_map": { "format": "uri", "type": "string" }, "name": { "type": "string" }, "slug": { "type": "string" } }, "type": "object" }, "type": "array" }, "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" }, "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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" }, "title": { "description": "Hub title", "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" } }, { "description": "WHAT: Impressum/Kontakt text from maps /llms-impressum-kontakt.txt. Optional offset/limit. USE for NAP/legal imprint on maps. NEXT: get_contact, get_business_identity; www /impressum for HTML.", "inputSchema": { "properties": { "limit": { "description": "Maximum items or lines to return after offset. Omit = all remaining in the window (subject to tool-specific clamps). For geo near-search default is often 5 without radius_km, up to 52 with radius.", "minimum": 1, "type": "integer" }, "offset": { "default": 0, "description": "0-based index into a list or discovery file lines (split on \\n). 0 = first. Omit = 0. Combine with limit to page. Use nextOffset / offset+limit from a previous result when present.", "minimum": 0, "type": "integer" } }, "type": "object" }, "name": "get_impressum", "outputSchema": { "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" }, "body": { "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" }, "doc": { "const": "impressum", "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "description": "www /impressum", "type": "string" }, "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" }, "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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" }, "which": { "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: www pointer only — invoice line items are computed on www MCP. maps accepts situationKey/whenKey/breakdown for symmetry but returns html link to /preise, not totals. DOES NOT return totalEur. NEXT: @ikeytz/mcp get_invoice_line_items; get_ort_datetime here for Berlin clock/whenKey.", "inputSchema": { "properties": { "breakdown": { "description": "www flag; ignored for maps pointer payload.", "type": "boolean" }, "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" }, "situationKey": { "description": "Required for www. Situation id (opening_slam, opening_locked, pkg_key_*, cylinder_only, cylinder_mount, aliases).", "type": "string" }, "whenKey": { "description": "day|night|now — used on www; maps only points.", "type": "string" } }, "required": [ "situationKey" ], "type": "object" }, "name": "get_invoice_line_items", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "description": "Absolute www.ikeytz.com URL — open there or call @ikeytz/mcp", "format": "uri", "type": "string" }, "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" }, "note": { "description": "maps only points; Volltext/Preise/FAQ live on www", "type": "string" }, "npm": { "description": "www CLI package @ikeytz/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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "requested_locale": { "description": "Locale the caller asked for; maps still returns locale=de", "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" }, "www_mcp": { "description": "https://www.ikeytz.com/mcp — sister machine for prices/FAQ/corpus", "format": "uri", "type": "string" }, "www_tool": { "description": "Same tool name on www MCP that holds the real payload", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: Returns Lage (location description) prose for one Einsatzgebiet Visitenkarte. Lookup slug|plz|name. RETURNS slug, name, lage. USE for human-readable geography prose. Prefer get_geschichte for place history; prefer get_service_area for the full point card/embed. DOES NOT return polygons.", "inputSchema": { "properties": { "name": { "description": "German place name substring (case-insensitive, umlauts ok), e.g. Grünbühl, Pattonville. Used when slug/plz omitted.", "type": "string" }, "plz": { "description": "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.", "type": "string" }, "slug": { "description": "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.", "type": "string" } }, "type": "object" }, "name": "get_lage", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "lage": { "description": "Lage prose (may be empty)", "type": "string" }, "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" }, "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" }, "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" } }, { "description": "WHAT: Legal doc router. doc enum: urheberrecht|copyright|impressum (maps text via discovery) or agb|nutzungsbedingungen|datenschutz|widerruf (www URL pointer only). Optional offset/limit for maps text. USE for citations. DOES NOT serve www legal HTML body on maps. NEXT: get_urheberrecht / get_impressum shortcuts; www for AGB body.", "inputSchema": { "properties": { "doc": { "description": "Required. maps corpus: urheberrecht|copyright|impressum. www links only: agb|nutzungsbedingungen|datenschutz|widerruf.", "enum": [ "urheberrecht", "copyright", "impressum", "agb", "nutzungsbedingungen", "datenschutz", "widerruf" ], "type": "string" }, "limit": { "description": "Maximum items or lines to return after offset. Omit = all remaining in the window (subject to tool-specific clamps). For geo near-search default is often 5 without radius_km, up to 52 with radius.", "minimum": 1, "type": "integer" }, "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" }, "offset": { "default": 0, "description": "0-based index into a list or discovery file lines (split on \\n). 0 = first. Omit = 0. Combine with limit to page. Use nextOffset / offset+limit from a previous result when present.", "minimum": 0, "type": "integer" } }, "required": [ "doc" ], "type": "object" }, "name": "get_legal", "outputSchema": { "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" }, "body": { "description": "maps text window when applicable", "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" }, "doc": { "description": "Resolved doc id", "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "description": "www HTML URL when applicable", "type": "string" }, "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" }, "note": { "description": "Host split note", "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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" }, "which": { "description": "Discovery id for maps text docs", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: Returns the maps machine bookmark set of discovery URLs (hub, mcp, server-card, agent-skills, llms, registry search, npm @ikeytz/maps-mcp). USE to open known well-known endpoints by URL. Prefer get_discovery when you need file contents or line windows; prefer get_llms_txt for the primary llms index body. DOES NOT fetch discovery file bodies.", "inputSchema": { "properties": { "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" } }, "type": "object" }, "name": "get_links", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "items": { "description": "Named absolute URLs", "properties": { "card": { "format": "uri", "type": "string" }, "hub": { "format": "uri", "type": "string" }, "llms": { "format": "uri", "type": "string" }, "mcp": { "format": "uri", "type": "string" }, "npm": { "format": "uri", "type": "string" }, "registry": { "format": "uri", "type": "string" }, "skills": { "format": "uri", "type": "string" } }, "type": "object" }, "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" }, "note": { "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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" } }, { "description": "WHAT: Alias of get_discovery(which=llms-mcp-server) — machine/catalog text for the maps MCP server. Optional offset/limit. USE when an agent needs the server-side llms MCP catalog. NEXT: get_llms_mcp_web, get_links.", "inputSchema": { "properties": { "limit": { "description": "Maximum items or lines to return after offset. Omit = all remaining in the window (subject to tool-specific clamps). For geo near-search default is often 5 without radius_km, up to 52 with radius.", "minimum": 1, "type": "integer" }, "offset": { "default": 0, "description": "0-based index into a list or discovery file lines (split on \\n). 0 = first. Omit = 0. Combine with limit to page. Use nextOffset / offset+limit from a previous result when present.", "minimum": 0, "type": "integer" } }, "type": "object" }, "name": "get_llms_mcp_server", "outputSchema": { "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" }, "bytesReturned": { "description": "UTF-8 length of text window", "type": "number" }, "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" }, "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" }, "fetchTruncated": { "description": "true if a load cap cut the file before paging (www Cap). maps reads full from disk → always false.", "type": "boolean" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "limit": { "description": "Applied line limit, or null if omitted", "type": [ "number", "null" ] }, "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" }, "missing": { "description": "true if the discovery file was not found on disk", "type": "boolean" }, "nextOffset": { "description": "Pass as next offset when truncated; else null. Also in # MCP-META.", "type": [ "number", "null" ] }, "offset": { "description": "Applied 0-based line offset", "type": "number" }, "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" }, "path": { "description": "Public relative path of the file on maps", "type": "string" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "returnedLines": { "description": "Lines in this window (before # MCP-META)", "type": "number" }, "returnedUrls": { "description": "http(s) lines in this window", "type": "number" }, "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" }, "text": { "description": "UTF-8 line window (file body before # MCP-META). Same bytes as summary without meta trailer.", "type": "string" }, "tool": { "description": "Echo of the tool name that produced this object (e.g. get_service_area).", "type": "string" }, "totalBytes": { "description": "Full discovery file size in bytes (UTF-8). Also in trailing # MCP-META.", "type": "number" }, "totalChars": { "description": "Full discovery file character length before offset/limit. Also in # MCP-META.", "type": "number" }, "totalLines": { "description": "Alias of total_lines", "type": "number" }, "totalUrls": { "description": "http(s) lines in the full file", "type": "number" }, "total_lines": { "description": "Line count of the full file", "type": "number" }, "truncated": { "description": "true if offset+limit left more lines. Also in trailing # MCP-META.", "type": "boolean" }, "which": { "description": "Resolved discovery id (ard, ai-catalog, llms, robots, sitemap-txt, llms-mcp-server, …).", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: Returns the web/UI-oriented MCP catalog text on maps (alias of get_discovery(which=llms-mcp-web)). Optional offset/limit. USE for browser/agent web discovery copy. Prefer get_llms_mcp_server for the server-side catalog; prefer get_llms_txt for the primary maps index. DOES NOT replace the live /mcp tools/list.", "inputSchema": { "properties": { "limit": { "description": "Maximum items or lines to return after offset. Omit = all remaining in the window (subject to tool-specific clamps). For geo near-search default is often 5 without radius_km, up to 52 with radius.", "minimum": 1, "type": "integer" }, "offset": { "default": 0, "description": "0-based index into a list or discovery file lines (split on \\n). 0 = first. Omit = 0. Combine with limit to page. Use nextOffset / offset+limit from a previous result when present.", "minimum": 0, "type": "integer" } }, "type": "object" }, "name": "get_llms_mcp_web", "outputSchema": { "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" }, "bytesReturned": { "description": "UTF-8 length of text window", "type": "number" }, "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" }, "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" }, "fetchTruncated": { "description": "true if a load cap cut the file before paging (www Cap). maps reads full from disk → always false.", "type": "boolean" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "limit": { "description": "Applied line limit, or null if omitted", "type": [ "number", "null" ] }, "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" }, "missing": { "description": "true if the discovery file was not found on disk", "type": "boolean" }, "nextOffset": { "description": "Pass as next offset when truncated; else null. Also in # MCP-META.", "type": [ "number", "null" ] }, "offset": { "description": "Applied 0-based line offset", "type": "number" }, "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" }, "path": { "description": "Public relative path of the file on maps", "type": "string" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "returnedLines": { "description": "Lines in this window (before # MCP-META)", "type": "number" }, "returnedUrls": { "description": "http(s) lines in this window", "type": "number" }, "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" }, "text": { "description": "UTF-8 line window (file body before # MCP-META). Same bytes as summary without meta trailer.", "type": "string" }, "tool": { "description": "Echo of the tool name that produced this object (e.g. get_service_area).", "type": "string" }, "totalBytes": { "description": "Full discovery file size in bytes (UTF-8). Also in trailing # MCP-META.", "type": "number" }, "totalChars": { "description": "Full discovery file character length before offset/limit. Also in # MCP-META.", "type": "number" }, "totalLines": { "description": "Alias of total_lines", "type": "number" }, "totalUrls": { "description": "http(s) lines in the full file", "type": "number" }, "total_lines": { "description": "Line count of the full file", "type": "number" }, "truncated": { "description": "true if offset+limit left more lines. Also in trailing # MCP-META.", "type": "boolean" }, "which": { "description": "Resolved discovery id (ard, ai-catalog, llms, robots, sitemap-txt, llms-mcp-server, …).", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: Alias get_discovery(which=llms) — maps /llms.txt 1:1 with optional offset/limit. USE as the primary maps machine index. NEXT: get_ai_txt, get_sitemap_txt, get_links.", "inputSchema": { "properties": { "limit": { "description": "Maximum items or lines to return after offset. Omit = all remaining in the window (subject to tool-specific clamps). For geo near-search default is often 5 without radius_km, up to 52 with radius.", "minimum": 1, "type": "integer" }, "offset": { "default": 0, "description": "0-based index into a list or discovery file lines (split on \\n). 0 = first. Omit = 0. Combine with limit to page. Use nextOffset / offset+limit from a previous result when present.", "minimum": 0, "type": "integer" } }, "type": "object" }, "name": "get_llms_txt", "outputSchema": { "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" }, "bytesReturned": { "description": "UTF-8 length of text window", "type": "number" }, "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" }, "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" }, "fetchTruncated": { "description": "true if a load cap cut the file before paging (www Cap). maps reads full from disk → always false.", "type": "boolean" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "limit": { "description": "Applied line limit, or null if omitted", "type": [ "number", "null" ] }, "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" }, "missing": { "description": "true if the discovery file was not found on disk", "type": "boolean" }, "nextOffset": { "description": "Pass as next offset when truncated; else null. Also in # MCP-META.", "type": [ "number", "null" ] }, "offset": { "description": "Applied 0-based line offset", "type": "number" }, "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" }, "path": { "description": "Public relative path of the file on maps", "type": "string" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "returnedLines": { "description": "Lines in this window (before # MCP-META)", "type": "number" }, "returnedUrls": { "description": "http(s) lines in this window", "type": "number" }, "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" }, "text": { "description": "UTF-8 line window (file body before # MCP-META). Same bytes as summary without meta trailer.", "type": "string" }, "tool": { "description": "Echo of the tool name that produced this object (e.g. get_service_area).", "type": "string" }, "totalBytes": { "description": "Full discovery file size in bytes (UTF-8). Also in trailing # MCP-META.", "type": "number" }, "totalChars": { "description": "Full discovery file character length before offset/limit. Also in # MCP-META.", "type": "number" }, "totalLines": { "description": "Alias of total_lines", "type": "number" }, "totalUrls": { "description": "http(s) lines in the full file", "type": "number" }, "total_lines": { "description": "Line count of the full file", "type": "number" }, "truncated": { "description": "true if offset+limit left more lines. Also in trailing # MCP-META.", "type": "boolean" }, "which": { "description": "Resolved discovery id (ard, ai-catalog, llms, robots, sitemap-txt, llms-mcp-server, …).", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "Returns only a maps HTML hand-off to www Nutzungsbedingungen. Does not return the terms body. USE when the user asks for Nutzungsbedingungen on maps; prefer www MCP for the corpus. DOES NOT invent clauses. NEXT: www get_nutzungsbedingungen / get_legal.", "inputSchema": { "additionalProperties": false, "description": "This tool takes no arguments. Call tools/call with arguments: {}. Extra keys are ignored.", "properties": {}, "type": "object" }, "name": "get_nutzungsbedingungen", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "description": "Absolute www.ikeytz.com URL — open there or call @ikeytz/mcp", "format": "uri", "type": "string" }, "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" }, "note": { "description": "maps only points; Volltext/Preise/FAQ live on www", "type": "string" }, "npm": { "description": "www CLI package @ikeytz/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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "requested_locale": { "description": "Locale the caller asked for; maps still returns locale=de", "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" }, "www_mcp": { "description": "https://www.ikeytz.com/mcp — sister machine for prices/FAQ/corpus", "format": "uri", "type": "string" }, "www_tool": { "description": "Same tool name on www MCP that holds the real payload", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: Europe/Berlin wall clock to the second (stand YYYY-MM-DD HH:MM:SS CEST|CET) for pricing whenKey context. Optional slug|plz|name like get_service_area; omit = all 52 places with the same clock. RETURNS timezone, stand, iso, unix, date, time, tz, and whenKey day|night for www invoicing. USE before quoting via www get_invoice_line_items. DOES NOT return euro amounts (no price matrix on maps). NEXT: www @ikeytz/mcp get_invoice_line_items({situationKey, whenKey}) or get_prices.", "inputSchema": { "properties": { "name": { "description": "German place name substring (case-insensitive, umlauts ok), e.g. Grünbühl, Pattonville. Used when slug/plz omitted.", "type": "string" }, "plz": { "description": "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.", "type": "string" }, "slug": { "description": "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.", "type": "string" } }, "type": "object" }, "name": "get_ort_datetime", "outputSchema": { "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" }, "count": { "description": "52 when listing all places", "type": "number" }, "date": { "description": "YYYY-MM-DD in Berlin", "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "iso": { "description": "ISO-8601 with Berlin offset", "type": "string" }, "items": { "description": "All 52 slug/name/plz + clock when called without lookup", "items": { "additionalProperties": true, "properties": { "date": { "description": "YYYY-MM-DD in Berlin", "type": "string" }, "iso": { "description": "ISO-8601 with Berlin offset", "type": "string" }, "name": { "type": "string" }, "plz": { "type": "string" }, "slug": { "type": "string" }, "stand": { "description": "Human clock 'YYYY-MM-DD HH:MM:SS CEST|CET' Europe/Berlin to the second", "type": "string" }, "time": { "description": "HH:MM:SS in Berlin (24h)", "type": "string" }, "timezone": { "const": "Europe/Berlin", "description": "Always Europe/Berlin", "type": "string" }, "tz": { "description": "Abbreviation", "enum": [ "CET", "CEST" ], "type": "string" }, "unix": { "description": "Unix timestamp seconds", "type": "number" }, "whenKey": { "description": "Price bucket for www get_invoice_line_items. day = Mo–Fr 08:00–17:59 Berlin except BW holidays; else night. Pass to www MCP — maps has no euro matrix.", "enum": [ "day", "night" ], "type": "string" } }, "type": "object" }, "type": "array" }, "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": { "description": "Place name when resolved", "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": { "description": "PLZ when resolved", "type": "string" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "slug": { "description": "Present when a place was resolved", "type": "string" }, "stand": { "description": "Human clock 'YYYY-MM-DD HH:MM:SS CEST|CET' Europe/Berlin to the second", "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" }, "time": { "description": "HH:MM:SS in Berlin (24h)", "type": "string" }, "timezone": { "const": "Europe/Berlin", "description": "Always Europe/Berlin", "type": "string" }, "tool": { "description": "Echo of the tool name that produced this object (e.g. get_service_area).", "type": "string" }, "tz": { "description": "Abbreviation", "enum": [ "CET", "CEST" ], "type": "string" }, "unix": { "description": "Unix timestamp seconds", "type": "number" }, "whenKey": { "description": "Price bucket for www get_invoice_line_items. day = Mo–Fr 08:00–17:59 Berlin except BW holidays; else night. Pass to www MCP — maps has no euro matrix.", "enum": [ "day", "night" ], "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: Short summary for a maps Gebiet (path/slug → area card) or www pointer for non-maps paths. path required (or slug). USE to decide maps vs www. NEXT: get_ai_page, get_service_area.", "inputSchema": { "properties": { "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" }, "path": { "description": "Required. maps path (/pattonville) or www path for pointer fallback.", "type": "string" }, "slug": { "description": "Alias for path/slug", "type": "string" } }, "required": [ "path" ], "type": "object" }, "name": "get_page_summary", "outputSchema": { "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "description": "When www pointer", "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": { "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" } }, { "description": "Returns only a maps HTML hand-off to www Partner-werden (/partner-werden). Does not return partnerEmail corpus or submit the partner form. USE when the user asks about becoming a partner while on maps. Prefer www MCP get_partner_info if already connected to www. formSubmit=false — never claim a form was sent. NEXT: www get_partner_info; or maps compose_mailto after opening www.", "inputSchema": { "properties": { "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" } }, "type": "object" }, "name": "get_partner_info", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "description": "Absolute www.ikeytz.com URL — open there or call @ikeytz/mcp", "format": "uri", "type": "string" }, "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" }, "note": { "description": "maps only points; Volltext/Preise/FAQ live on www", "type": "string" }, "npm": { "description": "www CLI package @ikeytz/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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "requested_locale": { "description": "Locale the caller asked for; maps still returns locale=de", "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" }, "www_mcp": { "description": "https://www.ikeytz.com/mcp — sister machine for prices/FAQ/corpus", "format": "uri", "type": "string" }, "www_tool": { "description": "Same tool name on www MCP that holds the real payload", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: Returns only a URL/note pointing to the Festpreis matrix on www.ikeytz.com/preise — no euro rows. USE to hand the agent from maps to www pricing. Prefer www MCP get_prices for the real matrix; call maps get_ort_datetime first if you need whenKey (day|night) for a later www invoice. DOES NOT invent prices or return totalEur.", "inputSchema": { "properties": { "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" } }, "type": "object" }, "name": "get_prices", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "description": "Absolute www.ikeytz.com URL — open there or call @ikeytz/mcp", "format": "uri", "type": "string" }, "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" }, "note": { "description": "maps only points; Volltext/Preise/FAQ live on www", "type": "string" }, "npm": { "description": "www CLI package @ikeytz/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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "requested_locale": { "description": "Locale the caller asked for; maps still returns locale=de", "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" }, "www_mcp": { "description": "https://www.ikeytz.com/mcp — sister machine for prices/FAQ/corpus", "format": "uri", "type": "string" }, "www_tool": { "description": "Same tool name on www MCP that holds the real payload", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: Returns only a URL to www /ratgeber/{slug} — not the article body. slug required. USE when the user names a Ratgeber slug on maps. Prefer list_ratgeber for the hub link when the slug is unknown; prefer www MCP get_ratgeber for fulltext. DOES NOT return article text.", "inputSchema": { "properties": { "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" }, "slug": { "description": "Required Ratgeber slug", "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "get_ratgeber", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "description": "Absolute www.ikeytz.com URL — open there or call @ikeytz/mcp", "format": "uri", "type": "string" }, "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" }, "note": { "description": "maps only points; Volltext/Preise/FAQ live on www", "type": "string" }, "npm": { "description": "www CLI package @ikeytz/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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "requested_locale": { "description": "Locale the caller asked for; maps still returns locale=de", "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" }, "www_mcp": { "description": "https://www.ikeytz.com/mcp — sister machine for prices/FAQ/corpus", "format": "uri", "type": "string" }, "www_tool": { "description": "Same tool name on www MCP that holds the real payload", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: Returns only a URL to www.ikeytz.com/review (Google-review entry page) — not a review payload. USE when the user asks where to leave a Google review while already on maps. Prefer www MCP get_review_url when connected to www for the canonical review-link payload. DOES NOT post a review.", "inputSchema": { "properties": { "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" } }, "type": "object" }, "name": "get_review_url", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "description": "Absolute www.ikeytz.com URL — open there or call @ikeytz/mcp", "format": "uri", "type": "string" }, "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" }, "note": { "description": "maps only points; Volltext/Preise/FAQ live on www", "type": "string" }, "npm": { "description": "www CLI package @ikeytz/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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "requested_locale": { "description": "Locale the caller asked for; maps still returns locale=de", "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" }, "www_mcp": { "description": "https://www.ikeytz.com/mcp — sister machine for prices/FAQ/corpus", "format": "uri", "type": "string" }, "www_tool": { "description": "Same tool name on www MCP that holds the real payload", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: One SERP block from maps llms-serp.txt via path, url, slug, or q. RETURNS path, url, matchContext (full block). USE for a single page's SERP copy. DOES NOT invent meta tags. NEXT: get_ai_page or get_page_summary for body.", "inputSchema": { "properties": { "path": { "description": "maps path, e.g. /pattonville", "type": "string" }, "q": { "description": "Fallback search string", "type": "string" }, "slug": { "description": "Gebiet slug", "type": "string" }, "url": { "description": "Full maps URL", "type": "string" } }, "type": "object" }, "name": "get_serp_snippet", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "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" }, "matchContext": { "description": "Full SERP markdown block", "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" }, "path": { "description": "Matched path", "type": "string" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" }, "url": { "description": "Matched maps URL", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: One Einsatzgebiet by slug → plz (first match) → name substring. RETURNS point card + maps_nav (hub/buero/mcp-hub) + neighbors (5 nearest by airline, MAPS-IL2) + optional Lage texts (h1, kicker, blurb, lage, geschichte) unless compact=true. fields= filters keys. USE when the user names a town/district in Landkreis Ludwigsburg. DOES NOT geocode free addresses outside the 52; unknown → ok=false unknown_place. NEXT: get_lage, get_geschichte, get_grenze, get_embed_map, distance_to_office.", "inputSchema": { "properties": { "compact": { "description": "If true, omit h1/kicker/blurb/lage/geschichte — coords + URLs + neighbors still present.", "type": "boolean" }, "fields": { "description": "Optional field filter: comma-separated names or array. Keeps envelope keys (ok, tool, summary, canonicalUrl, attribution, locale, related, count, total, offset, limit, compact) plus listed fields. Example: slug,name,plz,lat,lng.", "type": "string" }, "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" }, "name": { "description": "German place name substring (case-insensitive, umlauts ok), e.g. Grünbühl, Pattonville. Used when slug/plz omitted.", "type": "string" }, "plz": { "description": "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.", "type": "string" }, "slug": { "description": "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.", "type": "string" } }, "type": "object" }, "name": "get_service_area", "outputSchema": { "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" }, "blurb": { "description": "Short blurb when not compact", "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" }, "compact": { "description": "Whether compact mode was applied", "type": "boolean" }, "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" }, "geschichte": { "description": "Geschichte text when not compact", "type": "string" }, "google_maps": { "description": "'lat, lng'", "type": "string" }, "h1": { "description": "Visitenkarte H1 when not compact", "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" }, "icbm": { "description": "ICBM string", "type": "string" }, "kicker": { "description": "Kicker when not compact", "type": "string" }, "kind": { "description": "stadtteil | ort", "type": "string" }, "lage": { "description": "Lage text when not compact", "type": "string" }, "lat": { "description": "Place latitude", "type": "number" }, "lng": { "description": "Place longitude", "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" }, "maps_nav": { "description": "MAPS-IL1 mini-chrome URLs", "properties": { "buero": { "format": "uri", "type": "string" }, "hub": { "format": "uri", "type": "string" }, "mcp_hub": { "format": "uri", "type": "string" } }, "type": "object" }, "name": { "description": "German name", "type": "string" }, "neighbors": { "description": "Up to 5 nearest Gebiete (slug/name/embed_map)", "items": { "properties": { "embed_map": { "format": "uri", "type": "string" }, "name": { "type": "string" }, "slug": { "type": "string" } }, "type": "object" }, "type": "array" }, "office_lat": { "description": "Gewerbesitz lat", "type": "number" }, "office_lng": { "description": "Gewerbesitz lng", "type": "number" }, "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" }, "parent": { "description": "Parent label", "type": "string" }, "plz": { "description": "Postcode", "type": "string" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "slug": { "description": "Resolved 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" }, "walkIn": { "description": "Always false", "type": "boolean" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: Reads maps /sitemap.txt 1:1 (alias of get_discovery(which=sitemap-txt)); summary is a line window plus trailing # MCP-META. Optional offset/limit. USE to list public maps embed URLs including /buero. Prefer get_discovery for other discovery ids; prefer site_overview for the brand card, not a URL list. NEXT: resolve_maps_url, get_embed_map, get_geo_office.", "inputSchema": { "properties": { "limit": { "description": "Maximum items or lines to return after offset. Omit = all remaining in the window (subject to tool-specific clamps). For geo near-search default is often 5 without radius_km, up to 52 with radius.", "minimum": 1, "type": "integer" }, "offset": { "default": 0, "description": "0-based index into a list or discovery file lines (split on \\n). 0 = first. Omit = 0. Combine with limit to page. Use nextOffset / offset+limit from a previous result when present.", "minimum": 0, "type": "integer" } }, "type": "object" }, "name": "get_sitemap_txt", "outputSchema": { "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" }, "bytesReturned": { "description": "UTF-8 length of text window", "type": "number" }, "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" }, "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" }, "fetchTruncated": { "description": "true if a load cap cut the file before paging (www Cap). maps reads full from disk → always false.", "type": "boolean" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "limit": { "description": "Applied line limit, or null if omitted", "type": [ "number", "null" ] }, "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" }, "missing": { "description": "true if the discovery file was not found on disk", "type": "boolean" }, "nextOffset": { "description": "Pass as next offset when truncated; else null. Also in # MCP-META.", "type": [ "number", "null" ] }, "offset": { "description": "Applied 0-based line offset", "type": "number" }, "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" }, "path": { "description": "Public relative path of the file on maps", "type": "string" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "returnedLines": { "description": "Lines in this window (before # MCP-META)", "type": "number" }, "returnedUrls": { "description": "http(s) lines in this window", "type": "number" }, "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" }, "text": { "description": "UTF-8 line window (file body before # MCP-META). Same bytes as summary without meta trailer.", "type": "string" }, "tool": { "description": "Echo of the tool name that produced this object (e.g. get_service_area).", "type": "string" }, "totalBytes": { "description": "Full discovery file size in bytes (UTF-8). Also in trailing # MCP-META.", "type": "number" }, "totalChars": { "description": "Full discovery file character length before offset/limit. Also in # MCP-META.", "type": "number" }, "totalLines": { "description": "Alias of total_lines", "type": "number" }, "totalUrls": { "description": "http(s) lines in the full file", "type": "number" }, "total_lines": { "description": "Line count of the full file", "type": "number" }, "truncated": { "description": "true if offset+limit left more lines. Also in trailing # MCP-META.", "type": "boolean" }, "which": { "description": "Resolved discovery id (ard, ai-catalog, llms, robots, sitemap-txt, llms-mcp-server, …).", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: Returns Karten-Urheberrecht plain text from maps /llms-urheberrecht.txt (attribution: Mahmud Reza Kashani · ikeytz). Optional offset/limit. USE when citing map copyright in German. Prefer get_copyright for the English citation file; prefer get_legal(doc=urheberrecht) for the legal-doc router. DOES NOT return www HTML body.", "inputSchema": { "properties": { "limit": { "description": "Maximum items or lines to return after offset. Omit = all remaining in the window (subject to tool-specific clamps). For geo near-search default is often 5 without radius_km, up to 52 with radius.", "minimum": 1, "type": "integer" }, "offset": { "default": 0, "description": "0-based index into a list or discovery file lines (split on \\n). 0 = first. Omit = 0. Combine with limit to page. Use nextOffset / offset+limit from a previous result when present.", "minimum": 0, "type": "integer" } }, "type": "object" }, "name": "get_urheberrecht", "outputSchema": { "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" }, "body": { "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" }, "doc": { "const": "urheberrecht", "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "description": "www /urheberrecht", "type": "string" }, "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" }, "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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" }, "which": { "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: Returns only a URL to www Widerruf — not withdrawal-policy text. USE when the user asks for Widerruf while on maps and you only need the link. Prefer www MCP get_widerruf or get_legal for the corpus. DOES NOT invent clauses.", "inputSchema": { "additionalProperties": false, "description": "This tool takes no arguments. Call tools/call with arguments: {}. Extra keys are ignored.", "properties": {}, "type": "object" }, "name": "get_widerruf", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "description": "Absolute www.ikeytz.com URL — open there or call @ikeytz/mcp", "format": "uri", "type": "string" }, "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" }, "note": { "description": "maps only points; Volltext/Preise/FAQ live on www", "type": "string" }, "npm": { "description": "www CLI package @ikeytz/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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "requested_locale": { "description": "Locale the caller asked for; maps still returns locale=de", "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" }, "www_mcp": { "description": "https://www.ikeytz.com/mcp — sister machine for prices/FAQ/corpus", "format": "uri", "type": "string" }, "www_tool": { "description": "Same tool name on www MCP that holds the real payload", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "Returns only a maps HTML hand-off to www /wissen/{id}. id required. Does not return the Wissen article body. USE when the user names a Wissen id on maps; use list_wissen for the hub. Prefer www MCP get_wissen_entry for fulltext. NEXT: www get_wissen_entry({id}).", "inputSchema": { "properties": { "id": { "description": "Required Wissen entry id", "type": "string" }, "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "get_wissen_entry", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "description": "Absolute www.ikeytz.com URL — open there or call @ikeytz/mcp", "format": "uri", "type": "string" }, "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" }, "note": { "description": "maps only points; Volltext/Preise/FAQ live on www", "type": "string" }, "npm": { "description": "www CLI package @ikeytz/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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "requested_locale": { "description": "Locale the caller asked for; maps still returns locale=de", "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" }, "www_mcp": { "description": "https://www.ikeytz.com/mcp — sister machine for prices/FAQ/corpus", "format": "uri", "type": "string" }, "www_tool": { "description": "Same tool name on www MCP that holds the real payload", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: Returns only a URL to the www Auswahl hub (/auswahl) — not Auswahl items. USE when the user asks for the Auswahl overview on maps. Prefer www MCP list_auswahl for the real item list; prefer maps get_auswahl_item({slug}) only when a slug is known (still URL-only). Optional locale (de|en|fr|ru|fa|ar|tr, default de) selects the www URL language only — it does not list items. DOES NOT list items.", "inputSchema": { "properties": { "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" } }, "type": "object" }, "name": "list_auswahl", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "description": "Absolute www.ikeytz.com URL — open there or call @ikeytz/mcp", "format": "uri", "type": "string" }, "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" }, "note": { "description": "maps only points; Volltext/Preise/FAQ live on www", "type": "string" }, "npm": { "description": "www CLI package @ikeytz/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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "requested_locale": { "description": "Locale the caller asked for; maps still returns locale=de", "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" }, "www_mcp": { "description": "https://www.ikeytz.com/mcp — sister machine for prices/FAQ/corpus", "format": "uri", "type": "string" }, "www_tool": { "description": "Same tool name on www MCP that holds the real payload", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "Returns only a maps HTML hand-off to www /faq. Does not return FAQ question rows or answers. USE for the FAQ hub on maps; use get_faq when an id/q is known (still a hand-off). Prefer www MCP list_faq / get_faq for real FAQ data. NEXT: www list_faq; maps get_faq.", "inputSchema": { "properties": { "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" } }, "type": "object" }, "name": "list_faq", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "description": "Absolute www.ikeytz.com URL — open there or call @ikeytz/mcp", "format": "uri", "type": "string" }, "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" }, "note": { "description": "maps only points; Volltext/Preise/FAQ live on www", "type": "string" }, "npm": { "description": "www CLI package @ikeytz/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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "requested_locale": { "description": "Locale the caller asked for; maps still returns locale=de", "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" }, "www_mcp": { "description": "https://www.ikeytz.com/mcp — sister machine for prices/FAQ/corpus", "format": "uri", "type": "string" }, "www_tool": { "description": "Same tool name on www MCP that holds the real payload", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: maps footer links (Hub, MCP-Hub, MCP, mapsEmail mailto, Urheberrecht, Copyright, Impressum-Kontakt) plus www HTML legal links (no price corpus). RETURNS maps[], html_www[], email, mapsEmail. USE for footer/legal discovery. NEXT: get_legal, compose_mailto.", "inputSchema": { "properties": { "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" } }, "type": "object" }, "name": "list_footer", "outputSchema": { "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" }, "email": { "description": "[email protected]", "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html_www": { "description": "www HTML footer links (host=www)", "type": "array" }, "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" }, "maps": { "description": "maps-hosted footer links", "type": "array" }, "mapsEmail": { "description": "[email protected]", "type": "string" }, "note": { "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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" } }, { "description": "WHAT: Locales on maps — only de (MAPS-E8: no /en). Call with {}. RETURNS items[{locale,url}]. USE before resolve_locale_url. DOES NOT list www's seven locales — use @ikeytz/mcp list_locales for those.", "inputSchema": { "additionalProperties": false, "description": "This tool takes no arguments. Call tools/call with arguments: {}. Extra keys are ignored.", "properties": {}, "type": "object" }, "name": "list_locales", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "items": { "description": "Only de", "items": { "properties": { "locale": { "const": "de", "type": "string" }, "url": { "format": "uri", "type": "string" } }, "type": "object" }, "type": "array" }, "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" }, "note": { "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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" } }, { "description": "WHAT: maps navigation links — Hub, MCP, Urheberrecht, plus all 52 Gebiet URLs. USE to pick a maps page. DOES NOT include www header hubs (Preise/FAQ). NEXT: get_embed_map, get_page_summary.", "inputSchema": { "properties": { "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" } }, "type": "object" }, "name": "list_nav", "outputSchema": { "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" }, "count": { "type": "number" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "items": { "description": "Nav links {label,url,slug?}", "items": { "additionalProperties": true, "properties": { "label": { "type": "string" }, "slug": { "type": "string" }, "url": { "format": "uri", "type": "string" } }, "type": "object" }, "type": "array" }, "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" }, "note": { "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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" } }, { "description": "WHAT: PLZ → slugs map for the 52 Gebiete (shared postcodes visible). Call with {}. RETURNS items[{plz,count,slugs}]. USE to see multi-Gebiet PLZ. NEXT: find_by_plz.", "inputSchema": { "additionalProperties": false, "description": "This tool takes no arguments. Call tools/call with arguments: {}. Extra keys are ignored.", "properties": {}, "type": "object" }, "name": "list_plz", "outputSchema": { "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" }, "count": { "description": "Distinct PLZ count", "type": "number" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "items": { "description": "PLZ groups", "items": { "properties": { "count": { "type": "number" }, "plz": { "type": "string" }, "slugs": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "type": "array" }, "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" }, "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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" } }, { "description": "WHAT: Returns only a URL to the www Ratgeber hub (/ratgeber) — not titles or article bodies. USE when the user asks for the Ratgeber overview on maps. Prefer www MCP list_ratgeber for the real list; prefer maps get_ratgeber({slug}) only when a slug is known (still URL-only). Optional locale (de|en|fr|ru|fa|ar|tr, default de) selects the www URL language only. DOES NOT list Ratgeber entries.", "inputSchema": { "properties": { "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" } }, "type": "object" }, "name": "list_ratgeber", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "description": "Absolute www.ikeytz.com URL — open there or call @ikeytz/mcp", "format": "uri", "type": "string" }, "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" }, "note": { "description": "maps only points; Volltext/Preise/FAQ live on www", "type": "string" }, "npm": { "description": "www CLI package @ikeytz/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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "requested_locale": { "description": "Locale the caller asked for; maps still returns locale=de", "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" }, "www_mcp": { "description": "https://www.ikeytz.com/mcp — sister machine for prices/FAQ/corpus", "format": "uri", "type": "string" }, "www_tool": { "description": "Same tool name on www MCP that holds the real payload", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: List all 52 ikeytz Einsatzgebiete on maps.ikeytz.com as point cards (slug, name, plz, lat/lng, embed_map, geo_api) — not polygons. RETURNS items[], count, total, offset, limit. Optional fields= comma filter; limit/offset page the list. USE to enumerate the service area or build a picker. DOES NOT return OSM boundaries (use get_grenze per slug) or prices. NEXT: get_service_area, get_embed_map, get_grenze, find_by_plz.", "inputSchema": { "properties": { "fields": { "description": "Optional field filter: comma-separated names or array. Keeps envelope keys (ok, tool, summary, canonicalUrl, attribution, locale, related, count, total, offset, limit, compact) plus listed fields. Example: slug,name,plz,lat,lng.", "type": "string" }, "limit": { "description": "Maximum items or lines to return after offset. Omit = all remaining in the window (subject to tool-specific clamps). For geo near-search default is often 5 without radius_km, up to 52 with radius.", "minimum": 1, "type": "integer" }, "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" }, "offset": { "default": 0, "description": "0-based index into a list or discovery file lines (split on \\n). 0 = first. Omit = 0. Combine with limit to page. Use nextOffset / offset+limit from a previous result when present.", "minimum": 0, "type": "integer" } }, "type": "object" }, "name": "list_service_areas", "outputSchema": { "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" }, "count": { "description": "Items in this page", "type": "number" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "items": { "description": "Service-area point cards", "items": { "additionalProperties": true, "description": "One Einsatzgebiet point card (not a polygon).", "properties": { "distance_km": { "description": "Present on geo-ranked results: air distance from query point", "type": "number" }, "embed_map": { "description": "https://maps.ikeytz.com/{slug}", "format": "uri", "type": "string" }, "geo_api": { "description": "https://maps.ikeytz.com/api/v1/embed/ort/{slug}", "format": "uri", "type": "string" }, "google_maps": { "description": "Paste-ready 'lat, lng'", "type": "string" }, "icbm": { "description": "ICBM 'lat, lng' (same as google_maps)", "type": "string" }, "kind": { "description": "stadtteil | ort", "type": "string" }, "lat": { "description": "WGS84 latitude of THIS place", "type": "number" }, "lng": { "description": "WGS84 longitude of THIS place", "type": "number" }, "maps_mcp": { "const": "https://maps.ikeytz.com/mcp", "description": "maps MCP endpoint", "format": "uri", "type": "string" }, "name": { "description": "German place name", "type": "string" }, "parent": { "description": "Ludwigsburg or Landkreis Ludwigsburg", "type": "string" }, "plz": { "description": "Postcode", "type": "string" }, "slug": { "description": "maps slug", "type": "string" }, "url": { "description": "Keyword/www page URL when present", "type": "string" } }, "type": "object" }, "type": "array" }, "limit": { "description": "Applied limit", "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" }, "offset": { "description": "Applied offset", "type": "number" }, "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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" }, "total": { "description": "Total Gebiete (52)", "type": "number" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: Returns only a URL to www /leistungen — not Leistungs rows or prices. USE when the user asks for services while on maps and you only need the link. Prefer www MCP list_services for the real catalog. Optional locale (de|en|fr|ru|fa|ar|tr, default de) selects the www URL language only — it does not load service rows. DOES NOT invent service rows.", "inputSchema": { "properties": { "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" } }, "type": "object" }, "name": "list_services", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "description": "Absolute www.ikeytz.com URL — open there or call @ikeytz/mcp", "format": "uri", "type": "string" }, "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" }, "note": { "description": "maps only points; Volltext/Preise/FAQ live on www", "type": "string" }, "npm": { "description": "www CLI package @ikeytz/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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "requested_locale": { "description": "Locale the caller asked for; maps still returns locale=de", "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" }, "www_mcp": { "description": "https://www.ikeytz.com/mcp — sister machine for prices/FAQ/corpus", "format": "uri", "type": "string" }, "www_tool": { "description": "Same tool name on www MCP that holds the real payload", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: All 52 maps slugs as a flat string array. Call with {}. USE for validation or autocomplete. NEXT: get_service_area(slug), get_embed_map(slug).", "inputSchema": { "additionalProperties": false, "description": "This tool takes no arguments. Call tools/call with arguments: {}. Extra keys are ignored.", "properties": {}, "type": "object" }, "name": "list_slugs", "outputSchema": { "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" }, "count": { "description": "52", "type": "number" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "items": { "description": "Slug strings", "items": { "type": "string" }, "type": "array" }, "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" }, "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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" } }, { "description": "WHAT: WhatsApp situation options (link only — zugefallen/abgeschlossen/zylinder/beratung style ids). No form submit. USE before compose_whatsapp. DOES NOT send a message. NEXT: compose_whatsapp(option), compose_tel_mobile.", "inputSchema": { "properties": { "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" } }, "type": "object" }, "name": "list_whatsapp_options", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "items": { "description": "Options {id,label,href}", "items": { "properties": { "href": { "format": "uri", "type": "string" }, "id": { "type": "string" }, "label": { "type": "string" } }, "type": "object" }, "type": "array" }, "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" }, "note": { "description": "Link only; Festpreis SSOT remains www", "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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "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" } }, { "description": "WHAT: Returns only a URL to the www Wissen hub (/wissen) — not lexicon entries or article text. USE when the user asks for the Wissen overview on maps. Prefer www MCP list_wissen for the real index; prefer maps get_wissen_entry({id}) only as a URL hand-off for one id. DOES NOT list entries.", "inputSchema": { "properties": { "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" } }, "type": "object" }, "name": "list_wissen", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "description": "Absolute www.ikeytz.com URL — open there or call @ikeytz/mcp", "format": "uri", "type": "string" }, "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" }, "note": { "description": "maps only points; Volltext/Preise/FAQ live on www", "type": "string" }, "npm": { "description": "www CLI package @ikeytz/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" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "requested_locale": { "description": "Locale the caller asked for; maps still returns locale=de", "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" }, "www_mcp": { "description": "https://www.ikeytz.com/mcp — sister machine for prices/FAQ/corpus", "format": "uri", "type": "string" }, "www_tool": { "description": "Same tool name on www MCP that holds the real payload", "type": "string" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } }, { "description": "WHAT: path + locale → maps URL. maps is de-only: non-de requested still yields https://maps.ikeytz.com{path} with locale=de. Known Gebiet paths resolve to maps; unknown paths may www-pointer. REQUIRED path and locale. DOES NOT create /en on maps. NEXT: get_embed_map, www resolve_locale_url for marketing locales.", "inputSchema": { "properties": { "locale": { "description": "Required. Only de is meaningful on maps; others ignored with a note.", "type": "string" }, "path": { "description": "Required. Path starting with / (e.g. /pattonville) or a maps URL.", "type": "string" } }, "required": [ "path", "locale" ], "type": "object" }, "name": "resolve_locale_url", "outputSchema": { "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" }, "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "html": { "description": "Present when falling through to www pointer", "type": "string" }, "locale": { "const": "de", "type": "string" }, "note": { "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" }, "path": { "description": "Normalized path", "type": "string" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "requested_locale": { "type": "string" }, "slug": { "description": "When a Gebiet matched", "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" } }, { "description": "WHAT: Resolve a maps.ikeytz.com url/path/q to hub or Gebiet. RETURNS kind=hub|ort (+ area fields when ort). USE to normalize pasted maps links. Prefer get_service_area when you already have a known slug; prefer resolve_locale_url for locale rewriting. DOES NOT accept www hosts (not_maps_host). When multiple of url/path/q are set, url wins then path then q.", "inputSchema": { "properties": { "path": { "description": "Path e.g. /pattonville", "type": "string" }, "q": { "description": "URL or path alias", "type": "string" }, "url": { "description": "Full https://maps.ikeytz.com/… URL", "type": "string" } }, "type": "object" }, "name": "resolve_maps_url", "outputSchema": { "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" }, "hint": { "description": "Present when ok=false. Absolute URL or short recovery hint the agent should open or pass to another tool.", "type": "string" }, "kind": { "description": "Resolved kind", "enum": [ "hub", "ort" ], "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": { "description": "Place name when ort", "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": { "description": "null for hub", "type": [ "string", "null" ] }, "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" } }, { "description": "WHO/WHAT: What maps.ikeytz.com is — 52 Einsatzgebiet maps for Schlüsseldienst Ludwigsburg ikeytz, not the www price site. RETURNS brand, owner, count, mcp, registry, walkIn=false, sister www MCP note. USE as the maps brand card. DOES NOT quote euro. NEXT: get_business_identity, list_service_areas, get_links.", "inputSchema": { "properties": { "locale": { "default": "de", "description": "maps is German-only (de). Omit or pass de. Other values are ignored; URLs stay https://maps.ikeytz.com/… with no locale prefix. Not a www multi-locale switch — use @ikeytz/mcp list_locales on www for en|fr|ru|fa|ar|tr.", "enum": [ "de" ], "type": "string" } }, "type": "object" }, "name": "site_overview", "outputSchema": { "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" }, "brand": { "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" }, "count": { "description": "52", "type": "number" }, "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" }, "h1": { "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" }, "legalName": { "type": "string" }, "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" }, "mcp": { "format": "uri", "type": "string" }, "note": { "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" }, "owner": { "type": "string" }, "registry": { "description": "com.ikeytz/maps", "type": "string" }, "related": { "description": "Always includes https://maps.ikeytz.com/llms.txt.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "requested_locale": { "type": "string" }, "sister": { "description": "www MCP / npm hint", "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" }, "title": { "type": "string" }, "tool": { "description": "Echo of the tool name that produced this object (e.g. get_service_area).", "type": "string" }, "walkIn": { "type": "boolean" } }, "required": [ "ok", "tool", "attribution" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:2ce2e2869461aba779df8023ffa0be12a358680000e5ee0f673995fa768c51e8 | sha256sum