_ registry / mcp http-sse · checked 9m ago

ikeytz-maps

https://maps.ikeytz.com

Registry code: 3619b41fc3ee82e4

api record

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.

endpoint
https://maps.ikeytz.com/mcp
protocol
http-sse ·2025-11-25
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is ikeytz-maps live?
Yes — it answered the hub's last check (checked 9m ago). It answered 100% of checks over the last 30 days.
Is ikeytz-maps free to use?
Yes — the hub reached it with no key and no payment.
What tools does ikeytz-maps have?
68 tools: get_urheberrecht, list_ratgeber, list_whatsapp_options, list_nav, get_agb, get_ai_page, get_lage, get_service_area, ….
Is ikeytz-maps safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
99.8%

90 days 99.6%· all time 99.6%

latency
347ms

last good check

priced tools
0

of 68 tools

_ answered our checks, 90 days 685 checks · signed record
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
_ what it is for
used for
  • find a locksmith service area map
  • get locksmith contact links
  • get business identity and imprint
takes → gives
text → data, text
tools
25 reads
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 68 tools
68 open 68 of 68 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • get_urheberrecht open 40h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 10000,
          "minimum": 1,
          "description": "Maximum number of lines to return after offset. Omit or null = if remaining payload ≤~30KB return all remaining lines; if larger, return first ~30KB window + nextOffset (O9). Explicit limit keeps 1..10000 line window (MCP caps unchanged — not forced to 30KB). Meta also as trailing # MCP-META lines in summary."
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "minimum": 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."
        }
      }
    }
    arguments 17 lines
  • list_ratgeber reads open 18h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 13 lines
  • list_whatsapp_options open 9h ago

    WHAT: WhatsApp situation options (link only). Same 12 contactOption ids as www: opening_slam_day|opening_slam_night|opening_locked_day|opening_locked_night|pkg_key_slam_day|pkg_key_slam_night|pkg_key_locked_day|pkg_key_locked_night|cylinder_only_day|cylinder_only_night|cylinder_mount|beratung. Deprecated aliases zugefallen|abgeschlossen|zylinder → *day* invoices. No form submit. USE before compose_whatsapp. DOES NOT send a message. NEXT: compose_whatsapp(option), compose_tel_mobile.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 13 lines
  • list_nav open 24h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 13 lines
  • get_agb open 24h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "description": "This tool takes no arguments. Call tools/call with arguments: {}. Extra keys are ignored.",
      "additionalProperties": false
    }
    arguments 6 lines
  • get_ai_page reads open 24h ago

    WHAT: 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. DOCS/API: https://maps.ikeytz.com/ai-pages/de/{slug}.txt (plain text corpus) and https://maps.ikeytz.com/{slug} (HTML). 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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "path": {
          "type": "string",
          "description": "Path or ai-pages path fragment"
        },
        "slug": {
          "type": "string",
          "description": "Gebiet or ai-page slug"
        },
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 21 lines
  • get_lage reads open 3h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "plz": {
          "type": "string",
          "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."
        },
        "name": {
          "type": "string",
          "description": "German place name substring (case-insensitive, umlauts ok), e.g. Grünbühl, Pattonville. Used when slug/plz omitted."
        },
        "slug": {
          "type": "string",
          "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."
        }
      }
    }
    arguments 17 lines
  • get_service_area open 46h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "plz": {
          "type": "string",
          "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."
        },
        "name": {
          "type": "string",
          "description": "German place name substring (case-insensitive, umlauts ok), e.g. Grünbühl, Pattonville. Used when slug/plz omitted."
        },
        "slug": {
          "type": "string",
          "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."
        },
        "fields": {
          "type": "string",
          "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."
        },
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        },
        "compact": {
          "type": "boolean",
          "description": "If true, omit h1/kicker/blurb/lage/geschichte — coords + URLs + neighbors still present."
        }
      }
    }
    arguments 33 lines
  • get_ort_datetime open 2d ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "plz": {
          "type": "string",
          "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."
        },
        "name": {
          "type": "string",
          "description": "German place name substring (case-insensitive, umlauts ok), e.g. Grünbühl, Pattonville. Used when slug/plz omitted."
        },
        "slug": {
          "type": "string",
          "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."
        }
      }
    }
    arguments 17 lines
  • get_contact open 18d ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 13 lines
  • get_discovery open 18d ago

    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-jsonld, llms-navigation, llms-impressum-kontakt, llms-orte-geo, llms-grenzen-koordinaten, llms-urheberrecht, llms-copyright, llms-mcp-server, llms-mcp-web, robots, sitemap-txt, sitemap-xml. Omit limit: if remaining >~30KB → first ~30KB window + nextOffset (O9); explicit limit keeps line window 1..10000 (not forced to 30KB). 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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "which"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 10000,
          "minimum": 1,
          "description": "Maximum number of lines to return after offset. Omit or null = if remaining payload ≤~30KB return all remaining lines; if larger, return first ~30KB window + nextOffset (O9). Explicit limit keeps 1..10000 line window (MCP caps unchanged — not forced to 30KB). Meta also as trailing # MCP-META lines in summary."
        },
        "which": {
          "type": "string",
          "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-jsonld, llms-navigation, llms-impressum-kontakt, llms-orte-geo, llms-grenzen-koordinaten, llms-urheberrecht, llms-copyright, llms-mcp-server, llms-mcp-web, robots, sitemap-txt, sitemap-xml."
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "minimum": 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."
        }
      }
    }
    arguments 24 lines
  • find_by_keyword reads open 18d ago

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "q"
      ],
      "properties": {
        "q": {
          "type": "string",
          "description": "Required search string matched against keyword and URL (substring, case-insensitive)."
        },
        "limit": {
          "type": "integer",
          "minimum": 1,
          "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."
        },
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 25 lines
  • get_serp_snippet reads open 46h ago

    WHAT: One SERP block from maps llms-serp.txt via path, url, slug, or q. RETURNS path, url, matchContext (full block). DOCS/API: https://maps.ikeytz.com/llms-serp.txt (one block from that file). USE for a single page's SERP copy. DOES NOT invent meta tags. NEXT: get_ai_page or get_page_summary for body.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "q": {
          "type": "string",
          "description": "Fallback search string"
        },
        "url": {
          "type": "string",
          "description": "Full maps URL"
        },
        "path": {
          "type": "string",
          "description": "maps path, e.g. /pattonville"
        },
        "slug": {
          "type": "string",
          "description": "Gebiet slug"
        }
      }
    }
    arguments 21 lines
  • get_geo_api open 12h ago

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

    mcp-tool

    {
      "type": "object",
      "properties": {
        "plz": {
          "type": "string",
          "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."
        },
        "name": {
          "type": "string",
          "description": "German place name substring (case-insensitive, umlauts ok), e.g. Grünbühl, Pattonville. Used when slug/plz omitted."
        },
        "slug": {
          "type": "string",
          "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."
        }
      }
    }
    arguments 17 lines
  • get_grenze open 9h ago

    WHAT: OSM Gebietspolygon for one Einsatzgebiet as GeoJSON FeatureCollection inside the MCP result. Same geometry as public GET https://maps.ikeytz.com/api/v1/embed/ort/{slug}/grenze (application/geo+json). Lookup slug|plz|name. RETURNS hasPolygon, polygon, point, osmRelationId/osmWayId, via, grenze_api, punkt_api. USE when the agent needs the boundary geometry. DOES NOT replace get_geo_api (URL pointers) or get_grenze_koordinaten (full embed blob). NEXT: get_grenze_koordinaten, get_lage, get_embed_map.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "plz": {
          "type": "string",
          "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."
        },
        "name": {
          "type": "string",
          "description": "German place name substring (case-insensitive, umlauts ok), e.g. Grünbühl, Pattonville. Used when slug/plz omitted."
        },
        "slug": {
          "type": "string",
          "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."
        }
      }
    }
    arguments 17 lines
  • get_geschichte reads open 9h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "plz": {
          "type": "string",
          "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."
        },
        "name": {
          "type": "string",
          "description": "German place name substring (case-insensitive, umlauts ok), e.g. Grünbühl, Pattonville. Used when slug/plz omitted."
        },
        "slug": {
          "type": "string",
          "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."
        }
      }
    }
    arguments 17 lines
  • resolve_maps_url open 3h ago

    WHAT: Resolve a maps.ikeytz.com url/path/q to hub or Gebiet. RETURNS kind=hub|ort (+ area fields when ort). DOCS/API: https://maps.ikeytz.com/sitemap.txt (public URL list) and https://maps.ikeytz.com/{slug} (Gebiet pages). 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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "q": {
          "type": "string",
          "description": "URL or path alias"
        },
        "url": {
          "type": "string",
          "description": "Full https://maps.ikeytz.com/… URL"
        },
        "path": {
          "type": "string",
          "description": "Path e.g. /pattonville"
        }
      }
    }
    arguments 17 lines
  • get_legal open 18d ago

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "doc"
      ],
      "properties": {
        "doc": {
          "enum": [
            "urheberrecht",
            "copyright",
            "impressum",
            "agb",
            "nutzungsbedingungen",
            "datenschutz",
            "widerruf"
          ],
          "type": "string",
          "description": "Required. maps corpus: urheberrecht|copyright|impressum. www links only: agb|nutzungsbedingungen|datenschutz|widerruf."
        },
        "limit": {
          "type": "integer",
          "minimum": 1,
          "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."
        },
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "minimum": 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."
        }
      }
    }
    arguments 40 lines
  • get_copyright reads open 18h ago

    WHAT: English map copyright text from maps /llms-copyright.txt. Optional offset/limit. USE for EN citations of map authorship. NEXT: get_urheberrecht.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 10000,
          "minimum": 1,
          "description": "Maximum number of lines to return after offset. Omit or null = if remaining payload ≤~30KB return all remaining lines; if larger, return first ~30KB window + nextOffset (O9). Explicit limit keeps 1..10000 line window (MCP caps unchanged — not forced to 30KB). Meta also as trailing # MCP-META lines in summary."
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "minimum": 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."
        }
      }
    }
    arguments 17 lines
  • get_datenschutz open 18h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "description": "This tool takes no arguments. Call tools/call with arguments: {}. Extra keys are ignored.",
      "additionalProperties": false
    }
    arguments 6 lines
  • get_business_identity reads open 21h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 13 lines
  • resolve_locale_url open 19d ago

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "path",
        "locale"
      ],
      "properties": {
        "path": {
          "type": "string",
          "description": "Required. Path starting with / (e.g. /pattonville) or a maps URL."
        },
        "locale": {
          "type": "string",
          "description": "Required. Only de is meaningful on maps; others ignored with a note."
        }
      }
    }
    arguments 17 lines
  • get_prices open 19d ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 13 lines
  • get_invoice_line_items open 18d ago

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "situationKey"
      ],
      "properties": {
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        },
        "whenKey": {
          "type": "string",
          "description": "day|night|now — used on www; maps only points."
        },
        "breakdown": {
          "type": "boolean",
          "description": "www flag; ignored for maps pointer payload."
        },
        "situationKey": {
          "type": "string",
          "description": "Required for www. Situation id (opening_slam, opening_locked, pkg_key_*, cylinder_only, cylinder_mount, aliases)."
        }
      }
    }
    arguments 28 lines
  • get_auswahl_item open 18d ago

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "slug"
      ],
      "properties": {
        "slug": {
          "type": "string",
          "description": "Required Auswahl slug on www"
        },
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 20 lines
  • get_about reads open 18d ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 13 lines
  • get_links open 3h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 13 lines
  • get_review_url open 46h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 13 lines
  • list_faq reads open 19d ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 13 lines
  • get_faq open 19d ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "q": {
          "type": "string",
          "description": "FAQ question search on www"
        },
        "id": {
          "type": "string",
          "description": "FAQ id on www"
        },
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 21 lines
  • get_wissen_entry open 19d ago

    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}).

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Required Wissen entry id"
        },
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 20 lines
  • get_ratgeber reads open 18d ago

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "slug"
      ],
      "properties": {
        "slug": {
          "type": "string",
          "description": "Required Ratgeber slug"
        },
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 20 lines
  • get_page_summary reads open 18d ago

    WHAT: Short summary for a maps Gebiet (path/slug → area card) or www pointer for non-maps paths. path required (or slug). DOCS/API: https://maps.ikeytz.com/{slug} (HTML Visitenkarte) and https://maps.ikeytz.com/api/v1/embed/ort/{slug} (public embed JSON). USE to decide maps vs www. NEXT: get_ai_page, get_service_area.

    mcp-tool

    {
      "type": "object",
      "required": [
        "path"
      ],
      "properties": {
        "path": {
          "type": "string",
          "description": "Required. maps path (/pattonville) or www path for pointer fallback."
        },
        "slug": {
          "type": "string",
          "description": "Alias for path/slug"
        },
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 24 lines
  • get_llms_txt open 2d ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 10000,
          "minimum": 1,
          "description": "Maximum number of lines to return after offset. Omit or null = if remaining payload ≤~30KB return all remaining lines; if larger, return first ~30KB window + nextOffset (O9). Explicit limit keeps 1..10000 line window (MCP caps unchanged — not forced to 30KB). Meta also as trailing # MCP-META lines in summary."
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "minimum": 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."
        }
      }
    }
    arguments 17 lines
  • find_by_geo open 30h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "lat": {
          "type": "number",
          "description": "WGS84 latitude. Required with lng unless icbm is set. (0,0) → outside_service_area."
        },
        "lng": {
          "type": "number",
          "description": "WGS84 longitude. Required with lat unless icbm is set."
        },
        "icbm": {
          "type": "string",
          "description": "ICBM or paste 'lat, lng' (comma-separated). Alternative to lat+lng."
        },
        "limit": {
          "type": "integer",
          "minimum": 1,
          "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."
        },
        "radius_km": {
          "type": "number",
          "description": "Optional air-radius filter in km. Omit = return nearest N (limit). Far points / (0,0) → outside_service_area."
        }
      }
    }
    arguments 26 lines
  • find_by_google_maps open 30h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "q": {
          "type": "string",
          "description": "Paste string containing 'lat, lng'"
        },
        "lat": {
          "type": "number",
          "description": "WGS84 latitude. Required with lng unless icbm is set. (0,0) → outside_service_area."
        },
        "lng": {
          "type": "number",
          "description": "WGS84 longitude. Required with lat unless icbm is set."
        },
        "icbm": {
          "type": "string",
          "description": "ICBM or paste 'lat, lng' (comma-separated). Alternative to lat+lng."
        },
        "limit": {
          "type": "integer",
          "minimum": 1,
          "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."
        },
        "radius_km": {
          "type": "number",
          "description": "Optional air-radius filter in km. Omit = return nearest N (limit). Far points / (0,0) → outside_service_area."
        }
      }
    }
    arguments 30 lines
  • get_widerruf reads open 37h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "description": "This tool takes no arguments. Call tools/call with arguments: {}. Extra keys are ignored.",
      "additionalProperties": false
    }
    arguments 6 lines
  • compose_whatsapp open 37h ago

    WHAT: wa.me link with prefab. option = one of 12 www contactOption ids (opening_slam_day … cylinder_only_night, cylinder_mount, beratung). Deprecated aliases zugefallen|abgeschlossen|zylinder map to *day* and set ambiguous=true — prefer explicit day/night ids. Omit → bare wa.me. Unknown → ok:false unknown_option + hint ids. Link only — no form. USE to open WhatsApp with a prefab. NEXT: compose_mailto, get_contact.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "option": {
          "type": "string",
          "description": "Optional situation id from list_whatsapp_options (12 www ids; aliases deprecated). Unknown → ok:false."
        }
      }
    }
    arguments 9 lines
  • distance_to_office open 37h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "lat": {
          "type": "number",
          "description": "Optional query latitude instead of place lookup"
        },
        "lng": {
          "type": "number",
          "description": "Optional query longitude"
        },
        "plz": {
          "type": "string",
          "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."
        },
        "icbm": {
          "type": "string",
          "description": "Optional 'lat, lng' instead of place lookup"
        },
        "name": {
          "type": "string",
          "description": "German place name substring (case-insensitive, umlauts ok), e.g. Grünbühl, Pattonville. Used when slug/plz omitted."
        },
        "slug": {
          "type": "string",
          "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."
        }
      }
    }
    arguments 29 lines
  • list_plz open 21h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "description": "This tool takes no arguments. Call tools/call with arguments: {}. Extra keys are ignored.",
      "additionalProperties": false
    }
    arguments 6 lines
  • find_by_plz open 18d ago

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "plz"
      ],
      "properties": {
        "q": {
          "type": "string",
          "description": "Alias for plz if plz omitted"
        },
        "plz": {
          "type": "string",
          "description": "Required German postcode."
        }
      }
    }
    arguments 16 lines
  • get_llms_mcp_web open 9m ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 10000,
          "minimum": 1,
          "description": "Maximum number of lines to return after offset. Omit or null = if remaining payload ≤~30KB return all remaining lines; if larger, return first ~30KB window + nextOffset (O9). Explicit limit keeps 1..10000 line window (MCP caps unchanged — not forced to 30KB). Meta also as trailing # MCP-META lines in summary."
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "minimum": 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."
        }
      }
    }
    arguments 17 lines
  • list_service_areas open 15h ago

    WHAT: List all 52 ikeytz Einsatzgebiete on maps.ikeytz.com as point cards (slug, name, plz, lat/lng, embed_map, geo_api, grenze_api, punkt_api) — not polygons. Also public Sammel: /api/v1/embed/orte · /orte/grenzen · /orte/punkte. 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 in the list (use get_grenze or GET grenze_api per slug) or prices. NEXT: get_service_area, get_embed_map, get_grenze, find_by_plz.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "limit": {
          "type": "integer",
          "minimum": 1,
          "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."
        },
        "fields": {
          "type": "string",
          "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."
        },
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "minimum": 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."
        }
      }
    }
    arguments 28 lines
  • get_embed_map reads open 15h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "plz": {
          "type": "string",
          "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."
        },
        "name": {
          "type": "string",
          "description": "German place name substring (case-insensitive, umlauts ok), e.g. Grünbühl, Pattonville. Used when slug/plz omitted."
        },
        "slug": {
          "type": "string",
          "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."
        }
      }
    }
    arguments 17 lines
  • get_emergency open 15h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 13 lines
  • get_hub open 6h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "description": "This tool takes no arguments. Call tools/call with arguments: {}. Extra keys are ignored.",
      "additionalProperties": false
    }
    arguments 6 lines
  • site_overview open 9m ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 13 lines
  • get_llms_mcp_server reads open 9m ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 10000,
          "minimum": 1,
          "description": "Maximum number of lines to return after offset. Omit or null = if remaining payload ≤~30KB return all remaining lines; if larger, return first ~30KB window + nextOffset (O9). Explicit limit keeps 1..10000 line window (MCP caps unchanged — not forced to 30KB). Meta also as trailing # MCP-META lines in summary."
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "minimum": 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."
        }
      }
    }
    arguments 17 lines
  • get_sitemap_txt open 43h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 10000,
          "minimum": 1,
          "description": "Maximum number of lines to return after offset. Omit or null = if remaining payload ≤~30KB return all remaining lines; if larger, return first ~30KB window + nextOffset (O9). Explicit limit keeps 1..10000 line window (MCP caps unchanged — not forced to 30KB). Meta also as trailing # MCP-META lines in summary."
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "minimum": 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."
        }
      }
    }
    arguments 17 lines
  • compose_mailto reads open 43h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "description": "This tool takes no arguments. Call tools/call with arguments: {}. Extra keys are ignored.",
      "additionalProperties": false
    }
    arguments 6 lines
  • get_grenze_koordinaten open 43h ago

    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, featureCollection (Polygon+Punkt), OSM ids, embed paths (ort/grenze/punkt), iframe. Separate GeoJSON also at …/grenze and …/punkt; Sammel /api/v1/embed/orte/grenzen and /orte/punkte. No separate polygon/points keys (L-16). 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 pointers). NEXT: get_grenze, get_contact, get_embed_map.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "plz": {
          "type": "string",
          "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."
        },
        "name": {
          "type": "string",
          "description": "German place name substring (case-insensitive, umlauts ok), e.g. Grünbühl, Pattonville. Used when slug/plz omitted."
        },
        "slug": {
          "type": "string",
          "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."
        }
      }
    }
    arguments 17 lines
  • get_nutzungsbedingungen reads open 2d ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "description": "This tool takes no arguments. Call tools/call with arguments: {}. Extra keys are ignored.",
      "additionalProperties": false
    }
    arguments 6 lines
  • compose_tel_landline reads open 40h ago

    WHAT: tel: href for the public landline. Call with {}. RETURNS href + display. USE as secondary call CTA. NEXT: compose_tel_mobile.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "description": "This tool takes no arguments. Call tools/call with arguments: {}. Extra keys are ignored.",
      "additionalProperties": false
    }
    arguments 6 lines
  • list_wissen reads open 6h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 13 lines
  • get_impressum reads open 6h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 10000,
          "minimum": 1,
          "description": "Maximum number of lines to return after offset. Omit or null = if remaining payload ≤~30KB return all remaining lines; if larger, return first ~30KB window + nextOffset (O9). Explicit limit keeps 1..10000 line window (MCP caps unchanged — not forced to 30KB). Meta also as trailing # MCP-META lines in summary."
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "minimum": 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."
        }
      }
    }
    arguments 17 lines
  • list_auswahl open 34h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 13 lines
  • find_by_area reads open 34h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "q": {
          "type": "string",
          "description": "Name or slug query"
        },
        "name": {
          "type": "string",
          "description": "German place name substring (case-insensitive, umlauts ok), e.g. Grünbühl, Pattonville. Used when slug/plz omitted."
        },
        "slug": {
          "type": "string",
          "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."
        }
      }
    }
    arguments 17 lines
  • find_by_gebiet reads open 34h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "q": {
          "type": "string",
          "description": "Name or slug query (preferred)"
        },
        "name": {
          "type": "string",
          "description": "German place name substring (case-insensitive, umlauts ok), e.g. Grünbühl, Pattonville. Used when slug/plz omitted."
        },
        "slug": {
          "type": "string",
          "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."
        }
      }
    }
    arguments 17 lines
  • get_geo_office reads open 12h ago

    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, and einsatzgebiete (the same 52 name/slug/url links as the HTML list on /buero). USE for NAP/schema or Footer iframe. DOES NOT accept walk-in customers or bookings. The office is not a 53rd place. NEXT: get_contact, distance_to_office, get_business_identity, list_service_areas.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 13 lines
  • list_slugs open 12h ago

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

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "description": "This tool takes no arguments. Call tools/call with arguments: {}. Extra keys are ignored.",
      "additionalProperties": false
    }
    arguments 6 lines
  • list_footer open 30h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 13 lines
  • list_services reads open 19d ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 13 lines
  • list_locales reads open 27h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "description": "This tool takes no arguments. Call tools/call with arguments: {}. Extra keys are ignored.",
      "additionalProperties": false
    }
    arguments 6 lines
  • get_partner_info open 2d ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "locale": {
          "enum": [
            "de"
          ],
          "type": "string",
          "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."
        }
      }
    }
    arguments 13 lines
  • get_ai_txt open 21h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 10000,
          "minimum": 1,
          "description": "Maximum number of lines to return after offset. Omit or null = if remaining payload ≤~30KB return all remaining lines; if larger, return first ~30KB window + nextOffset (O9). Explicit limit keeps 1..10000 line window (MCP caps unchanged — not forced to 30KB). Meta also as trailing # MCP-META lines in summary."
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "minimum": 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."
        }
      }
    }
    arguments 17 lines
  • compose_tel_mobile open 40h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "description": "This tool takes no arguments. Call tools/call with arguments: {}. Extra keys are ignored.",
      "additionalProperties": false
    }
    arguments 6 lines
  • find_by_icbm open 27h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "lat": {
          "type": "number",
          "description": "WGS84 latitude. Required with lng unless icbm is set. (0,0) → outside_service_area."
        },
        "lng": {
          "type": "number",
          "description": "WGS84 longitude. Required with lat unless icbm is set."
        },
        "icbm": {
          "type": "string",
          "description": "ICBM or paste 'lat, lng' (comma-separated). Alternative to lat+lng."
        },
        "limit": {
          "type": "integer",
          "minimum": 1,
          "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."
        },
        "radius_km": {
          "type": "number",
          "description": "Optional air-radius filter in km. Omit = return nearest N (limit). Far points / (0,0) → outside_service_area."
        }
      }
    }
    arguments 26 lines
  • find_by_serp open 27h ago

    WHAT: Search maps llms-serp.txt blocks by q, path, url, or slug. RETURNS path/url/snippet items. DOCS/API: https://maps.ikeytz.com/llms-serp.txt (source catalog). USE for title/H1/description SERP cards on maps. DOES NOT scrape live HTML. NEXT: get_serp_snippet for one full block.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "q": {
          "type": "string",
          "description": "Free-text search in SERP blocks"
        },
        "url": {
          "type": "string",
          "description": "Full https://maps.ikeytz.com/… URL"
        },
        "path": {
          "type": "string",
          "description": "maps path fragment, e.g. /pattonville"
        },
        "slug": {
          "type": "string",
          "description": "Gebiet slug"
        },
        "limit": {
          "type": "integer",
          "minimum": 1,
          "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."
        }
      }
    }
    arguments 26 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id 3619b41fc3ee82e4.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/3619b41fc3ee82e4/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/3619b41fc3ee82e4/badge.svg)](https://brick.blue/agent/3619b41fc3ee82e4?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.

_ also on ikeytz.com 1 entry

Served from the same domain, which is what was measured. Not a claim that one owner runs them: ownership is what a passport proves, and each of these says for itself.