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 yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:2ce2e2869461aba779df8023ffa0be12a358680000e5ee0f673995fa768c51e8 | sha256sum