# ikeytz – Schlüsseldienst Ludwigsburg (remote · www.ikeytz.com)

Read/Link MCP tools for Schlüsseldienst Ludwigsburg ikeytz. Public read-only. No forms. ai-train=no.

- Trust score: 80/100 (high trust)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-24

## Components

- remote · `www.ikeytz.com`: 80/100 (this document), [markdown](https://verifymcp.io/servers/com-ikeytz-website/www.md), [page](https://verifymcp.io/servers/com-ikeytz-website/www)
- npm · `@ikeytz/mcp`: 31/100, [markdown](https://verifymcp.io/servers/com-ikeytz-website/ikeytz-mcp.md), [page](https://verifymcp.io/servers/com-ikeytz-website/ikeytz-mcp)

## Channel facts

- Endpoint: `https://www.ikeytz.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.13`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-24.

- **Endpoint Security**: 66/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 47 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 67/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 10440 tokens (~222/item across 47 items; 47 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 100/100
  - No destabilizing schema changes in the last 30 days.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 47 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 48 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the ikeytz – Schlüsseldienst Ludwigsburg MCP server?

ikeytz – Schlüsseldienst Ludwigsburg is a hosted endpoint at https://www.ikeytz.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http com-ikeytz-website 'https://www.ikeytz.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "com-ikeytz-website": {
      "url": "https://www.ikeytz.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-ikeytz-website": {
      "type": "http",
      "url": "https://www.ikeytz.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.com-ikeytz-website]
url = "https://www.ikeytz.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-ikeytz-website": {
      "type": "remote",
      "url": "https://www.ikeytz.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-ikeytz-website --url 'https://www.ikeytz.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-ikeytz-website:
    url: "https://www.ikeytz.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "com-ikeytz-website": {
      "Transport": "http",
      "Url": "https://www.ikeytz.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-ikeytz-website -t streamable-http -u 'https://www.ikeytz.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "com-ikeytz-website": {
      "type": "http",
      "url": "https://www.ikeytz.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-24 (score 80, 0)

- [security] Stability: 0.97 → pass
- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “get_discovery” rewrote its description, which is the text the model reads
- [security] Tool “get_llms_mcp_server” rewrote its description, which is the text the model reads
- [functional] New tool “get_llms_jsonld”
- [functional] New tool “get_llms_serp_txt”
- [cosmetic] “get_discovery” reworded the description of “which”

### 2026-09-23 (score 80, +1)

No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-22 (score 79, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “get_discovery” rewrote its description, which is the text the model reads
- [security] Tool “get_geo_office” rewrote its description, which is the text the model reads
- [security] Tool “get_page_summary” rewrote its description, which is the text the model reads
- [security] Tool “get_sitemap_txt” rewrote its description, which is the text the model reads
- [functional] Stability: fail → 0.93
- [cosmetic] “get_page_summary” added an optional parameter “locale”
- [cosmetic] “get_page_summary” added an optional parameter “path”
- [cosmetic] “get_ai_txt” reworded the description of “limit”
- [cosmetic] “get_discovery” reworded the description of “limit”
- [cosmetic] “get_llms_mcp_server” reworded the description of “limit”
- [cosmetic] “get_llms_mcp_web” reworded the description of “limit”
- [cosmetic] “get_llms_txt” reworded the description of “limit”
- [cosmetic] “get_sitemap_txt” reworded the description of “limit”

### 2026-09-20 (score 79, +1)

No change was recorded against any check on this day. Stability & Change Management went from 82 to 85.

### 2026-09-18 (score 78, +1)

- [security regression] Stability: unverified → fail
- [security improvement] Injection markers: unverified → pass
- [security improvement] HSTS header: unverified → pass
- [security improvement] Transport: fail → pass
- [security] Authorization: Authorisation not fully verified: no authorisation is required to call this server, and 45 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
- [functional improvement] Endpoint reachability: unreachable → reachable
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] MCP protocol: unverified → pass

### 2026-09-17 (score 77, 0)

- [security regression] Endpoint reachability: reachable → unreachable
- [security regression] Stability: fail → unverified
- [security regression] Tool safety: pass → unverified
- [security regression] HSTS header: pass → unverified
- [security regression] Transport: pass → fail
- [security] Authorization: Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified

### 2026-09-16 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 69 to 72.

### 2026-09-14 (score 76, +1)

- [security regression] Stability: unverified → fail
- [security improvement] HSTS header: unverified → pass
- [security improvement] Injection markers: unverified → pass
- [security improvement] Transport: fail → pass
- [security] Authorization: Authorisation not fully verified: no authorisation is required to call this server, and 45 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
- [functional improvement] Endpoint reachability: unreachable → reachable
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] MCP protocol: unverified → pass

## MCP tools (47)

### `site_overview` (~248 tokens)

Site Overview

WHO/WHAT: Public brand card for Schlüsseldienst Ludwigsburg ikeytz (mobile locksmith, Landkreis Ludwigsburg, Baden-Württemberg, Germany). RETURNS structuredContent: tradeName, gewerbeName, priceRange plus envelope (ok, summary, canonicalUrl=home). USE when the user asks who ikeytz is, whether there is a shop, opening hours positioning (24/7 mobile). DOES NOT: book, quote a live price, geocode, submit forms. No walk-in — office address is not a customer counter. NEXT: get_business_identity (NAP), get_contact (phones), get_prices (fixed matrix), get_ort_datetime (day|night).

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `gewerbeName` (string): Registered business name
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `priceRange` (string): Price-range hint for schema
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).
- `tradeName` (string): Public trade name

### `get_business_identity` (~246 tokens)

Get Business Identity

WHO: Legal/trade identity and NAP for agents and citations. RETURNS: gewerbeName, legalName, tradeName, inhaber (Mahmud Reza Kashani, Einzelunternehmer), street/postal/city/country, mobile/landline/fax/email, website, walkIn=false. canonicalUrl = /impressum. USE for impressum-grade facts, schema.org LocalBusiness fields, 'who owns ikeytz'. DOES NOT: prove licenses beyond what the site states; does not accept updates. walkIn is always false — do not send customers to the office. NEXT: get_legal(doc=impressum), get_contact, get_geo_office.

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `city` (string): City
- `country` (string): Country
- `email` (string): Public email
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `fax` (string): Fax display number
- `gewerbeName` (string): Registered business name
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `inhaber` (string): Owner full name
- `landline` (string): Landline display number
- `legalName` (string): Legal name
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `mobile` (string): Mobile display number
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `postal` (string): Postal code
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `street` (string): Office street (no walk-in)
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).
- `tradeName` (string): Trade / SEO name
- `walkIn` (boolean): Always false — no shop walk-in
- `website` (string): Canonical website URL

### `list_nav` (~212 tokens)

List Nav

WHAT: Curated main-header hubs (not a 1:1 dump of every <a> in the header). RETURNS items[]: Start, Notfall, Leistungen, Auswahl, Preise, Einsatzgebiet, Wissen, Ratgeber, FAQ, Kontakt — each path + locale URL + label. DOES NOT include /it, /mcp-hub, /links, locale switcher, or DevSecOps. USE to pick a hub URL. NEXT: get_ai_page(path) or get_page_summary(path) for body text.

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `items` (array): Header hub links
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `list_footer` (~192 tokens)

List Footer

WHAT: Curated internal footer paths including legal + /it + /mcp-hub + /angebot + /ankuendigungen. RETURNS items[] {path,url}. Not a pixel-perfect HTML scrape; external directory URLs live on get_links / MCP_PUBLIC_LINKS via get_mcp_hub. USE to discover legal slugs before get_legal. NEXT: get_legal(doc), get_it, get_mcp_hub.

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `items` (array): Internal footer paths
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `list_locales` (~95 tokens)

List Locales

WHAT: The seven public HTML locales. RETURNS locales[] {id, name, prefix}. prefix is '' for de and '/en' '/fr' '/ru' '/fa' '/ar' '/tr' for others. Host is always www.ikeytz.com (apex redirects). maps.ikeytz.com has NO locales (/en/pattonville = 404). USE before resolve_locale_url. Call with {}.

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `locales` (array): Seven locales with URL prefix
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `resolve_locale_url` (~198 tokens)

Resolve Locale Url

WHAT: Rewrite one marketing path into another locale without fetching HTML. Example: path=/preise locale=en → canonicalUrl https://www.ikeytz.com/en/preise. Accepts a path or a full https://www.ikeytz.com/… URL; strips an existing /en|/fr|… prefix first. RETURNS path (no locale prefix), fromLocale, toLocale. DOES NOT translate body text. Invalid locale still required by schema — use list_locales. NEXT: get_ai_page({path, locale: toLocale}).

Input parameters:

- `locale` (string, required): Required. Target locale for the rewritten URL.
- `path` (string, required): Required. Site path starting with / (e.g. /preise, /en/preise, /schluesseldienst-ludwigsburg-pattonville) OR a full https://www.ikeytz.com/… URL. Host other than www is not normalized here.

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `fromLocale` (string): Locale parsed from input path
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `path` (string): Path without locale prefix
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `toLocale` (string): Requested target locale
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `get_prices` (~286 tokens)

Get Prices

WHAT: Official Festpreis matrix + composition SYSTEM. Read composition first: exactly 10 end-invoices + one 49 € add-on (not 12, not 17 customer invoices). 49 € is cylinder_mount after an opening — already inside 148/198/178/228; never add 49 again. 49 € is NOT night/weekend/holiday (those are 149/179/198/228/119). RETURNS composition{ruleDe,doNotConfuse[],factors[],routes[],endInvoices[] with contactOption,howTo[]}, opening[], packages[], surcharges[], note. USE to understand how to assemble a price. DOES NOT compute one customer total — that is get_invoice_line_items(situationKey, whenKey). Contact: compose_whatsapp/compose_mailto with contactOption. whenKey: get_ort_datetime. No VAT (§ 19).

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `composition` (object): How to assemble: 10 end-invoices, factors, question routes, formulas. Required reading before quoting €.
- `cylinderAfterOpening` (object): Cylinder price after an opening
- `cylinderOnly` (object): Cylinder-only prices
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `note` (string): Legal/price note
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `opening` (array): Door-opening price blocks
- `packages` (array): Invoice packages (day/night)
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `surcharges` (array): Surcharge rows
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `get_ort_datetime` (~374 tokens)

Get Ort Datetime

WHAT: Europe/Berlin wall clock to the second + whenKey for prices. THIS www tool does NOT look up a place (no slug/plz). maps.ikeytz.com has a different geo clock tool. RULE: whenKey=day only Mo–Fr 08:00:00–17:59:59 Berlin and not a Baden-Württemberg statutory holiday; otherwise night (Sa, So, holiday, or 18:00–07:59). RETURNS ok, stand ('YYYY-MM-DD HH:MM:SS CEST|CET'), iso, unix, date, time, tz, timezone=Europe/Berlin, weekday, weekdayIso (1=Mon), whenKey, holiday (bool), holidayName (or null), rule, invoiceTool=get_invoice_line_items, pricesTool=get_prices. USE before invoicing. NEXT: get_invoice_line_items({situationKey, whenKey: 'now'}) or pass whenKey day|night.

Input parameters:

- `at` (string): Optional clock. Formats: ISO-8601 with Z or ±HH:MM; or YYYY-MM-DD; or YYYY-MM-DDTHH:MM[:SS] interpreted as Europe/Berlin if no offset; or unix seconds/ms number-as-string. Omit = now. Invalid → ok=fa…
- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `date` (string): YYYY-MM-DD in Berlin.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `holiday` (boolean): true if date is a BW statutory holiday.
- `holidayName` (string|null): German holiday name or null. Holidays force whenKey=night.
- `invoiceTool` (string)
- `iso` (string): ISO-8601 with Berlin offset.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `pricesTool` (string)
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `rule` (string): Human rule string for day vs night.
- `stand` (string): Human clock 'YYYY-MM-DD HH:MM:SS CEST|CET' Europe/Berlin.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `time` (string): HH:MM:SS in Berlin (24h).
- `timezone` (string)
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).
- `tz` (string): Abbreviation.
- `unix` (number): Unix timestamp seconds.
- `weekday` (string): en-GB short weekday (Mon…Sun).
- `weekdayIso` (number): ISO weekday 1=Monday … 7=Sunday.
- `whenKey` (string): Price bucket. Pass to get_invoice_line_items.whenKey or use whenKey=now there.

### `get_invoice_line_items` (~539 tokens)

Get Invoice Line Items

WHAT: Computes ONE of the 10 end-invoices (or the 49 € mount add-on). NOT a booking, NOT a PDF. FIRST classify via get_prices.composition.routes: locked_out+slam+no cylinder → opening_slam; locked_out+locked+no cylinder → opening_locked; +cylinder same trip → pkg_key_slam / pkg_key_locked; door open → cylinder_only; mount after paid opening → cylinder_mount (not an end-invoice). THEN whenKey from get_ort_datetime (day|night|now). Night/WE/holiday is NOT +49 — 49 is only cylinder_mount. Do not invent euro. Do not add 49 on top of pkg_key_*. REQUIRED situationKey. Aliases: zugefallen→opening_slam, abgeschlossen→opening_locked, schluessel_weg_zugefallen→pkg_key_slam. breakdown=true splits combo into opening+49, totalEur unchanged. RETURNS totalEur + composition + contactOption. NEXT: compose_whatsapp or compose_mailto with that contactOption. No VAT.

Input parameters:

- `at` (string): Optional. Same formats as get_ort_datetime.at. Only used when whenKey is now or omitted.
- `breakdown` (boolean): If true, pkg_key_slam / pkg_key_locked emit two rows (opening + cylinder_mount_same_trip) instead of one package row. Total euro unchanged.
- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…
- `situationKey` (string, required): Required. From composition.routes: opening_slam | opening_locked | pkg_key_slam | pkg_key_locked | cylinder_only | cylinder_mount. Aliases: zugefallen, abgeschlossen, schluessel_weg_zugefallen. pkg_s…
- `whenKey` (string): day = Mo–Fr 08:00:00–17:59:59 Europe/Berlin except BW holidays. night = weekend, holiday, or 18:00–07:59. now or omit = live get_ort_datetime (or at=). Night is not +49 (49 is only cylinder_mount). D…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `composition` (object): Same SYSTEM as get_prices.composition — factors, routes, 10 invoices.
- `contactOption` (string): Prefab id for compose_whatsapp / compose_mailto (opening_slam_day … cylinder_only_night, or cylinder_mount).
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `line_items` (array): Invoice rows
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `situationKey` (string): Resolved situation id
- `situationLabelDe` (string): German situation label
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).
- `totalEur` (number): End-invoice euro. Do not add VAT or extra 49.
- `whenKey` (string): Resolved day|night

### `list_services` (~171 tokens)

List Services

WHAT: Core service list from SITE.services (Türöffnung, Notdienst, Sicherheitstechnik, Schlosswechsel, …) with locale /leistungen#anchor URLs. USE as a menu. For situations (zugefallen, Schlüssel weg) use list_auswahl / get_auswahl_item. For euro amounts use get_prices.

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `services` (array): Core services with locale URLs
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `get_emergency` (~183 tokens)

Get Emergency

WHAT: Pointer to the 24h Notfall-Türöffnung page. summary includes mobile number. canonicalUrl = /notfall-tueroeffnung (locale-prefixed). DOES NOT dispatch a technician or take a booking. NEXT: compose_tel_mobile or list_whatsapp_options then compose_whatsapp with a contactOption (opening_slam_day|opening_slam_night|…).

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `list_auswahl` (~166 tokens)

List Auswahl

WHAT: Auswahl hub groups (situation chooser on /auswahl). RETURNS groups[] {id, hash, hubUrl, slugs[], urls[]}. USE to discover valid slugs for get_auswahl_item. Unknown slug → get_auswahl_item ok=false unknown_auswahl.

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `groups` (array): Auswahl groups with slugs and URLs
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `get_auswahl_item` (~231 tokens)

Get Auswahl Item

WHAT: One Auswahl situation page. REQUIRED slug from list_auswahl. RETURNS slug + canonicalUrl /auswahl/{slug}. USE after the user described a lockout/key situation. NEXT: get_ai_page({path:'/auswahl/'+slug}) for fulltext; get_invoice_line_items for euro.

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…
- `slug` (string, required): Required. ASCII slug from list_auswahl groups[].slugs, e.g. tuer-zugefallen, tuer-abgeschlossen, schluessel-verloren, schluessel-gestohlen, notdienst-oeffnung-zylinder. Not an Ort slug.

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `slug` (string): Resolved Auswahl slug
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `list_service_areas` (~237 tokens)

List Service Areas

WHAT: All 52 service-area places (orte SSOT). Each item: slug, name, plz, lat, lng, google_maps, icbm, kind, parent, url (www keyword page), embed_map (https://maps.ikeytz.com/{slug}), geo_api, maps_mcp. related includes maps llms.txt. count=52. USE to pick a slug before get_service_area. DOES NOT verify GPS live. www sitemap contains 0× maps.ikeytz.com. iframe on HTML is DE Ortsseiten only. NEXT: get_service_area({slug}) or maps MCP find_by_geo (not this server).

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `count` (number): Always 52 when ok.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `items` (array): One object per place; fields = PLACE geo + maps URLs.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `get_service_area` (~365 tokens)

Get Service Area

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

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…
- `name` (string): German name substring, case-insensitive (e.g. 'Vaihingen'). First includes() match. Prefer slug.
- `plz` (string): 5-digit German PLZ. First matching place wins (71638 → pattonville). Use slug if you already know it.
- `slug` (string): Preferred. Exact orte slug: pattonville, asperg, bietigheim-bissingen, kornwestheim, … (52). Not 'ludwigsburg' as a catch-all unless that slug exists.

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `embed_map` (string): iframe/src and maps page: https://maps.ikeytz.com/{slug} (German host, no /en/).
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `geo_api` (string): https://maps.ikeytz.com/api/v1/embed/ort/{slug} JSON for the embed.
- `google_maps` (string): Paste-ready 'lat, lng' for Google Maps search (same digits as lat/lng).
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `icbm` (string): ICBM 'lat, lng' string (same as google_maps).
- `kind` (string): Place kind from orte SSOT (stadtteil / gemeinde / …).
- `lat` (number): WGS84 latitude of THIS place or the office. Unique per slug — never a silent Pattonville fallback. Example Pattonville ≈ 48.863.
- `lng` (number): WGS84 longitude of THIS place or the office. Example Pattonville ≈ 9.185.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `maps_mcp` (string): maps machine MCP endpoint. www /mcp does not proxy this.
- `name` (string): German place name as on the website.
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `parent` (string): Parent place name when this is a district; else empty/omit.
- `plz` (string): German postcode. First match wins if several places share a PLZ (e.g. 71638 → pattonville).
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `slug` (string): URL slug of a service-area place, e.g. pattonville, bietigheim-bissingen, walheim. Matches maps.ikeytz.com/{slug} and www /schluesseldienst-ludwigsburg-{slug}.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).
- `url` (string): www keyword page https://www.ikeytz.com[/locale]/schluesseldienst-ludwigsburg-{slug}

### `get_geo_office` (~276 tokens)

Get Geo Office

WHAT: Firmensitz / registered office once (SITE.geo = Adalbert-Stifter-Str. 14, 71638 Ludwigsburg). RETURNS: street, postal, city, lat/lng, icbm, walkIn=false, firmensitz_url=https://maps.ikeytz.com/buero, embed_map=same, embed_map_compact=?embed=1, geo_api=/api/v1/embed/office, google_business=GBP share (external click only). canonicalUrl = firmensitz map. NOT a shop — never send customers to walk in. NOT a service-area place map (use list_service_areas / get_service_area for Ort slugs). NEXT: get_contact, get_legal(doc=impressum), or maps MCP get_geo_office on maps.ikeytz.com/mcp.

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `city` (string): Office city (Ludwigsburg).
- `embed_map` (string): Same as firmensitz_url (iframe-capable page).
- `embed_map_compact` (string): https://maps.ikeytz.com/buero?embed=1 — map-only embed.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `firmensitz_url` (string): https://maps.ikeytz.com/buero — Firmensitz map (not an Ort slug).
- `geo_api` (string): https://maps.ikeytz.com/api/v1/embed/office JSON.
- `google_business` (string): Google Business Profile share link (external).
- `google_maps` (string): Paste-ready 'lat, lng' for Google Maps search (same digits as lat/lng).
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `icbm` (string): ICBM 'lat, lng' string (same as google_maps).
- `lat` (number): WGS84 latitude of THIS place or the office. Unique per slug — never a silent Pattonville fallback. Example Pattonville ≈ 48.863.
- `lng` (number): WGS84 longitude of THIS place or the office. Example Pattonville ≈ 9.185.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `maps_mcp` (string): maps machine MCP endpoint.
- `note` (string): Büro · kein Walk-in · nicht Einsatzgebiet.
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `postal` (string): Office PLZ.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `street` (string): Office street line.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).
- `walkIn` (boolean): Always false.

### `get_contact` (~164 tokens)

Get Contact

WHAT: Public phones, fax, email, office address object. DOES NOT submit the website contact form and must not claim it did. USE to give the user a number. NEXT: compose_tel_mobile, compose_tel_landline, compose_mailto, compose_whatsapp, list_whatsapp_options.

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…

Output parameters:

- `address` (object): Office postal address (no walk-in).
- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `email` (string): Public info@ email.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `fax` (string): Fax display.
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `landline` (string): Landline display (Festnetz).
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `mobile` (string): Mobile display (Handy), 24/7.
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `get_legal` (~240 tokens)

Get Legal

WHAT: Pointer to one legal HTML page. REQUIRED doc enum. Unknown doc → ok=false unknown_doc hint=/impressum. RETURNS doc + canonicalUrl. For full text call get_ai_page({path:'/'+doc}) or get_discovery(which=llms-urheberrecht) for the copyright corpus. German legal text is binding; /llms-copyright.txt is EN courtesy.

Input parameters:

- `doc` (string, required): Required legal slug = path /{doc}. impressum=imprint, datenschutz=privacy, agb=T&Cs, nutzungsbedingungen=site terms, widerruf=withdrawal, urheberrecht=copyright/AI policy.
- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `doc` (string): Legal document id
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `get_about` (~140 tokens)

Get About

WHAT: Pointer to /ueber-uns (about, owner). For NAP facts prefer get_business_identity. NEXT: get_ai_page({path:'/ueber-uns'}).

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `get_partner_info` (~151 tokens)

Get Partner Info

WHAT: Partner-werden info. formSubmit=false — agents MUST NOT claim they sent the form. RETURNS partnerEmail for a mailto. NEXT: compose_mailto or tell the user to open /partner-werden themselves.

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `get_links` (~160 tokens)

Get Links

WHAT: Pointer to /links (directories, city sites, HWK, Webmail shortcut). External MCP catalogs (npm, registry, mcpbeat, Glama, getlulu, Smithery) are on get_mcp_hub.publicLinks, not this tool.

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `get_it` (~242 tokens)

Get It

WHAT: HTML page /it — two MCP machines documented. RETURNS website={name:com.ikeytz/website,mcp,card,npm,cli,readme=npm CLI,httpReadme=www /mcp-readme.md}, maps={name:com.ikeytz/maps,… no httpReadme}, proxy=false, page=/it, itEmail, aiEmail. USE to tell an agent there are TWO endpoints (www vs maps). www /mcp never calls maps /mcp. HTML path /it is not Italian. Hub HTML is /mcp-hub (get_mcp_hub). CLI npm is a third channel, not this HTTP server.

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…

Output parameters:

- `aiEmail` (string): Public AI/abuse mailbox.
- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `itEmail` (string): Public IT contact mailbox.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `maps` (object): maps machine com.ikeytz/maps
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `page` (string): Locale /it URL.
- `proxy` (boolean): www does not proxy maps.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).
- `website` (object): www machine com.ikeytz/website

### `get_mcp_hub` (~265 tokens)

Get Mcp Hub

WHAT: HTML hub /mcp-hub ×7 (de has no prefix). NOT Italian, NOT the protocol endpoint. Protocol remains POST https://www.ikeytz.com/mcp (streamable-http). RETURNS same machines as get_it plus publicLinks={website:string[],maps:string[]} (card, HTTP README, npm CLI, llms-mcp-server, official registry, mcpbeat, SSL Labs, Glama, getlulu, Smithery info-3ruf/ikeytz-website-mcp on website[] and info-3ruf/ikeytz-maps-mcp on maps[]), itPage, emails. USE to cite discovery URLs. Two Smithery listings, two machines — not one token. Not GitHub. Not com.ikeytz/website.

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…

Output parameters:

- `aiEmail` (string)
- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `itEmail` (string)
- `itPage` (string): Locale /it URL.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `maps` (object): maps machine
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `page` (string): Locale /mcp-hub URL.
- `proxy` (boolean)
- `publicLinks` (object): Full public catalog URLs, same order as the footer MCP tab.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).
- `website` (object): www machine

### `get_review_url` (~157 tokens)

Get Review Url

WHAT: Short /review redirect to the Google review URL. RETURNS googleReviewUrl (full Google) and canonicalUrl = https://www.ikeytz.com/review. USE when the user wants to leave a review. Not a list of existing ratings.

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `googleReviewUrl` (string): Full Google review URL
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `list_faq` (~171 tokens)

List Faq

WHAT: FAQ question list (id + question, no answers). Policy/text only — euro in answers are SSOT tokens, not a live invoice. For a customer total: get_prices.composition → get_ort_datetime → get_invoice_line_items. USE get_faq({id}) or get_faq({q}).

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `items` (array): FAQ ids and questions
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `get_faq` (~223 tokens)

Get Faq

WHAT: One FAQ Q+A (Ausweis, MwSt, 24h, Nachtpreis-Regel…). Lookup: exact id, else first substring on q. Not a calculator — if the user needs THIS job's euro, get_invoice_line_items after composition.routes. Missing → faq_not_found. Prefer id from list_faq.

Input parameters:

- `id` (string): FAQ id from list_faq.items[].id. Tried first if present.
- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…
- `q` (string): Fallback search. Lowercased includes() on question or answer. Use when the user asked in natural language.

Output parameters:

- `answer` (string): Answer text
- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `id` (string): FAQ id
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `question` (string): Question text
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `list_wissen` (~152 tokens)

List Wissen

WHAT: Wissen lexicon index (id, title, url with #id). USE get_wissen_entry({id}) for a body snippet. Full article: get_ai_page({path:'/wissen'}) or open the hash URL.

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `items` (array): Wissen articles id/title/url
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `get_wissen_entry` (~181 tokens)

Get Wissen Entry

WHAT: One Wissen article. REQUIRED id. summary includes title + first 500 chars of body. structuredContent has id+title (not full body). Unknown id → wissen_not_found. NEXT: get_ai_page({path:'/wissen'}) or canonicalUrl #id.

Input parameters:

- `id` (string, required): Required. Exact Wissen article id from list_wissen.items[].id.
- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `id` (string): Article id
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `title` (string): Article title
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `list_ratgeber` (~137 tokens)

List Ratgeber

WHAT: All Ratgeber slugs and locale URLs /ratgeber/{slug}. USE get_ratgeber({slug}) then get_ai_page for fulltext.

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `slugs` (array): Ratgeber slugs
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).
- `urls` (array): Locale Ratgeber URLs

### `get_ratgeber` (~165 tokens)

Get Ratgeber

WHAT: Pointer to one Ratgeber. REQUIRED slug from list_ratgeber. Unknown → unknown_ratgeber. NEXT: get_ai_page({path:'/ratgeber/'+slug}).

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…
- `slug` (string, required): Required. Exact Ratgeber slug from list_ratgeber.slugs (ASCII hyphenated).

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `slug` (string): Resolved Ratgeber slug
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `get_page_summary` (~190 tokens)

Get Page Summary

WHAT: Stub pointer only — NOT the page body. summary says to use ai-pages or HTML. RETURNS path (locale prefix stripped). USE get_ai_page or get_serp_snippet for real text. path optional (default /).

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…
- `path` (string): Optional marketing path. Omit or empty = /. Examples: /preise, /en/preise, /kontakt. Locale prefix stripped in the return path.

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `path` (string): Path without locale prefix
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `get_ai_page` (~253 tokens)

Get Ai Page

WHAT: Fetches public https://www.ikeytz.com/ai-pages/{locale}/{file}.txt (HTML-parity fulltext). path=/ → index.txt; else path without leading slash + .txt. summary = first 4000 chars; truncated=true if longer. HTTP errors → ok=false. USE for page content. /review has no HTML-parity footer. NEXT: get_serp_snippet for title/description only.

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…
- `path` (string, required): Required. Marketing path: / , /preise , /en/preise , /schluesseldienst-ludwigsburg-pattonville , /auswahl/tuer-zugefallen . Locale prefix in the path overrides args.locale if present.

Output parameters:

- `aiPageUrl` (string): https://www.ikeytz.com/ai-pages/{locale}/….txt
- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `path` (string): Resolved path
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).
- `truncated` (boolean): true if body was cut at 4000 chars

### `get_serp_snippet` (~233 tokens)

Get Serp Snippet

WHAT: Slice of /llms-serp.txt around the first occurrence of the target URL (title/description/URL rows). path or url required in practice. If path is not http(s), it is turned into www(locale, path). No match → serp_not_found. RETURNS matchContext (~200 chars before + 400 after). Not a Google API.

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…
- `path` (string): Site path (/preise) or used with locale to build the www URL to find in llms-serp.txt.
- `url` (string): If this starts with http, it is used as the search needle instead of path.

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `matchContext` (string): Surrounding SERP lines
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `find_by_keyword` (~235 tokens)

Find By Keyword

WHAT: Substring search (case-insensitive) over https://www.ikeytz.com/llms-keywords.txt (phrase → URL map). REQUIRED q. Default 15 lines, max 30. Empty q → q_required. RETURNS q, count, lines[] (raw TSV-like rows). locale does not filter the file. USE to map a user phrase to URLs. NEXT: get_ai_page on a returned www path.

Input parameters:

- `limit` (number): Max matching lines. Default 15, hard max 30.
- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…
- `q` (string, required): Required search substring. Matched against the entire keyword line (phrase and URLs).

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `count` (number): Lines returned
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `lines` (array): Matching keyword rows
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `q` (string): Search query
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `get_discovery` (~519 tokens)

Get Discovery

WHAT: Fetch one public discovery file from www and return a line window. REQUIRED which. IDs (aliases folded): llms, llms-full, llms-index, llms-keywords, llms-serp, llms-jsonld, llms-impressum-kontakt, llms-orte-geo, llms-urheberrecht, llms-copyright, llms-mcp-server, llms-mcp-web, robots, sitemap-txt, sitemap-xml, ai-txt, ai-plugin, answer-engine, ard, ai-catalog, auth-md, mcp-readme, agent-skills. summary = the line window + trailing # MCP-META (truncated, totalUrls, nextOffset). Use offset/limit + nextOffset to page. Sitemap ~9076 http-URLs (Stand 2026-09-22) loads full from disk. Keywords still byte-capped. Unknown which → unknown_discovery. Prefer dedicated get_llms_txt / get_llms_jsonld / get_llms_serp_txt / get_sitemap_txt / get_llms_mcp_server when you know the file. Policy files say ai-train=no.

Input parameters:

- `limit` (number): Maximum number of lines to return after offset. Omit or null = return every remaining line in the loaded file. Clamped to 1..10000. For sitemap.txt (~9076 http-URLs, Stand 2026-09-22) omit limit to g…
- `offset` (number): 0-based line index into the fetched UTF-8 file (split on \n). 0 = first line. Omit = 0. Combined with limit = a sliding window. Use nextOffset from the previous result to page. Does not count bytes;…
- `which` (string, required): Required discovery id or alias. Examples: llms, llms-full, llms-jsonld, llms-serp, llms-mcp-server, llms-mcp-web, sitemap-txt, robots, ai-txt, ard, ai-catalog, auth-md, mcp-readme, llms-orte-geo, llm…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `bytesReturned` (number): UTF-8 byte length of the returned body window (before # MCP-META).
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `fetchTruncated` (boolean): true if a byte cap cut the load (line-boundary safe). Rare for sitemap.txt (reads public/).
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `limit` (number|null): Applied line limit, or null if the caller omitted limit.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `nextOffset` (number|null): offset + returnedLines when more lines remain in the loaded file; else null. Pass as the next offset. Also in # MCP-META.
- `offset` (number): Applied 0-based line offset.
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `path` (string): Public path on www, e.g. /llms.txt or /.well-known/ai.txt
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `returnedLines` (number): How many lines are in summary/body this call (before # MCP-META).
- `returnedUrls` (number): Lines in this window that start with http(s)://
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).
- `totalLines` (number): Line count of the loaded file (full public/ file when available).
- `totalUrls` (number): http(s) lines in the loaded file (full count when public/ read succeeds).
- `truncated` (boolean): true if load hit a byte cap OR offset+limit left more lines. Also mirrored in trailing # MCP-META lines in summary.
- `which` (string): Resolved discovery id after alias fold (llms, sitemap-txt, ard, ai-catalog, …).

### `get_llms_txt` (~244 tokens)

Get Llms Txt

WHAT: Fetch https://www.ikeytz.com/llms.txt (short AI landmap). Same engine as get_discovery(which=llms). summary = file window. USE as the first discovery read. Full dump: get_discovery(which=llms-full). MCP catalog: get_llms_mcp_server.

Input parameters:

- `limit` (number): Maximum number of lines to return after offset. Omit or null = return every remaining line in the loaded file. Clamped to 1..10000. For sitemap.txt (~9076 http-URLs, Stand 2026-09-22) omit limit to g…
- `offset` (number): 0-based line index into the fetched UTF-8 file (split on \n). 0 = first line. Omit = 0. Combined with limit = a sliding window. Use nextOffset from the previous result to page. Does not count bytes;…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `bytesReturned` (number): UTF-8 byte length of the returned body window (before # MCP-META).
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `fetchTruncated` (boolean): true if a byte cap cut the load (line-boundary safe). Rare for sitemap.txt (reads public/).
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `limit` (number|null): Applied line limit, or null if the caller omitted limit.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `nextOffset` (number|null): offset + returnedLines when more lines remain in the loaded file; else null. Pass as the next offset. Also in # MCP-META.
- `offset` (number): Applied 0-based line offset.
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `path` (string): Public path on www, e.g. /llms.txt or /.well-known/ai.txt
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `returnedLines` (number): How many lines are in summary/body this call (before # MCP-META).
- `returnedUrls` (number): Lines in this window that start with http(s)://
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).
- `totalLines` (number): Line count of the loaded file (full public/ file when available).
- `totalUrls` (number): http(s) lines in the loaded file (full count when public/ read succeeds).
- `truncated` (boolean): true if load hit a byte cap OR offset+limit left more lines. Also mirrored in trailing # MCP-META lines in summary.
- `which` (string): Resolved discovery id after alias fold (llms, sitemap-txt, ard, ai-catalog, …).

### `get_llms_jsonld` (~248 tokens)

Get Llms Jsonld

WHAT: Fetch /llms-jsonld.txt — map every marketing HTML URL to its JSON-LD relatedLink (ai-pages fulltext) + mirrorId. Same engine as get_sitemap_txt (offset/limit/nextOffset/# MCP-META). Not the page body (use get_ai_page). Not get_serp_snippet.

Input parameters:

- `limit` (number): Maximum number of lines to return after offset. Omit or null = return every remaining line in the loaded file. Clamped to 1..10000. For sitemap.txt (~9076 http-URLs, Stand 2026-09-22) omit limit to g…
- `offset` (number): 0-based line index into the fetched UTF-8 file (split on \n). 0 = first line. Omit = 0. Combined with limit = a sliding window. Use nextOffset from the previous result to page. Does not count bytes;…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `bytesReturned` (number): UTF-8 byte length of the returned body window (before # MCP-META).
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `fetchTruncated` (boolean): true if a byte cap cut the load (line-boundary safe). Rare for sitemap.txt (reads public/).
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `limit` (number|null): Applied line limit, or null if the caller omitted limit.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `nextOffset` (number|null): offset + returnedLines when more lines remain in the loaded file; else null. Pass as the next offset. Also in # MCP-META.
- `offset` (number): Applied 0-based line offset.
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `path` (string): Public path on www, e.g. /llms.txt or /.well-known/ai.txt
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `returnedLines` (number): How many lines are in summary/body this call (before # MCP-META).
- `returnedUrls` (number): Lines in this window that start with http(s)://
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).
- `totalLines` (number): Line count of the loaded file (full public/ file when available).
- `totalUrls` (number): http(s) lines in the loaded file (full count when public/ read succeeds).
- `truncated` (boolean): true if load hit a byte cap OR offset+limit left more lines. Also mirrored in trailing # MCP-META lines in summary.
- `which` (string): Resolved discovery id after alias fold (llms, sitemap-txt, ard, ai-catalog, …).

### `get_llms_serp_txt` (~227 tokens)

Get Llms Serp Txt

WHAT: Fetch /llms-serp.txt — full SERP title/description/URL corpus with offset/limit. Same as get_discovery(which=llms-serp). For one URL use get_serp_snippet.

Input parameters:

- `limit` (number): Maximum number of lines to return after offset. Omit or null = return every remaining line in the loaded file. Clamped to 1..10000. For sitemap.txt (~9076 http-URLs, Stand 2026-09-22) omit limit to g…
- `offset` (number): 0-based line index into the fetched UTF-8 file (split on \n). 0 = first line. Omit = 0. Combined with limit = a sliding window. Use nextOffset from the previous result to page. Does not count bytes;…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `bytesReturned` (number): UTF-8 byte length of the returned body window (before # MCP-META).
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `fetchTruncated` (boolean): true if a byte cap cut the load (line-boundary safe). Rare for sitemap.txt (reads public/).
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `limit` (number|null): Applied line limit, or null if the caller omitted limit.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `nextOffset` (number|null): offset + returnedLines when more lines remain in the loaded file; else null. Pass as the next offset. Also in # MCP-META.
- `offset` (number): Applied 0-based line offset.
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `path` (string): Public path on www, e.g. /llms.txt or /.well-known/ai.txt
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `returnedLines` (number): How many lines are in summary/body this call (before # MCP-META).
- `returnedUrls` (number): Lines in this window that start with http(s)://
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).
- `totalLines` (number): Line count of the loaded file (full public/ file when available).
- `totalUrls` (number): http(s) lines in the loaded file (full count when public/ read succeeds).
- `truncated` (boolean): true if load hit a byte cap OR offset+limit left more lines. Also mirrored in trailing # MCP-META lines in summary.
- `which` (string): Resolved discovery id after alias fold (llms, sitemap-txt, ard, ai-catalog, …).

### `get_llms_mcp_server` (~234 tokens)

Get Llms Mcp Server

WHAT: Fetch /llms-mcp-server.txt — prose catalog of THIS HTTP server (47 Read/Link tools, how to call, no login). Same as get_discovery(which=llms-mcp-server). Not the npm CLI README. Not maps.

Input parameters:

- `limit` (number): Maximum number of lines to return after offset. Omit or null = return every remaining line in the loaded file. Clamped to 1..10000. For sitemap.txt (~9076 http-URLs, Stand 2026-09-22) omit limit to g…
- `offset` (number): 0-based line index into the fetched UTF-8 file (split on \n). 0 = first line. Omit = 0. Combined with limit = a sliding window. Use nextOffset from the previous result to page. Does not count bytes;…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `bytesReturned` (number): UTF-8 byte length of the returned body window (before # MCP-META).
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `fetchTruncated` (boolean): true if a byte cap cut the load (line-boundary safe). Rare for sitemap.txt (reads public/).
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `limit` (number|null): Applied line limit, or null if the caller omitted limit.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `nextOffset` (number|null): offset + returnedLines when more lines remain in the loaded file; else null. Pass as the next offset. Also in # MCP-META.
- `offset` (number): Applied 0-based line offset.
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `path` (string): Public path on www, e.g. /llms.txt or /.well-known/ai.txt
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `returnedLines` (number): How many lines are in summary/body this call (before # MCP-META).
- `returnedUrls` (number): Lines in this window that start with http(s)://
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).
- `totalLines` (number): Line count of the loaded file (full public/ file when available).
- `totalUrls` (number): http(s) lines in the loaded file (full count when public/ read succeeds).
- `truncated` (boolean): true if load hit a byte cap OR offset+limit left more lines. Also mirrored in trailing # MCP-META lines in summary.
- `which` (string): Resolved discovery id after alias fold (llms, sitemap-txt, ard, ai-catalog, …).

### `get_llms_mcp_web` (~231 tokens)

Get Llms Mcp Web

WHAT: Fetch /llms-mcp-web.txt — browser WebMCP catalog (early bootstrap tools + full list). Same executeMcpTool handlers as HTTP /mcp, different transport (document.modelContext). Not this streamable-http endpoint.

Input parameters:

- `limit` (number): Maximum number of lines to return after offset. Omit or null = return every remaining line in the loaded file. Clamped to 1..10000. For sitemap.txt (~9076 http-URLs, Stand 2026-09-22) omit limit to g…
- `offset` (number): 0-based line index into the fetched UTF-8 file (split on \n). 0 = first line. Omit = 0. Combined with limit = a sliding window. Use nextOffset from the previous result to page. Does not count bytes;…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `bytesReturned` (number): UTF-8 byte length of the returned body window (before # MCP-META).
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `fetchTruncated` (boolean): true if a byte cap cut the load (line-boundary safe). Rare for sitemap.txt (reads public/).
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `limit` (number|null): Applied line limit, or null if the caller omitted limit.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `nextOffset` (number|null): offset + returnedLines when more lines remain in the loaded file; else null. Pass as the next offset. Also in # MCP-META.
- `offset` (number): Applied 0-based line offset.
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `path` (string): Public path on www, e.g. /llms.txt or /.well-known/ai.txt
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `returnedLines` (number): How many lines are in summary/body this call (before # MCP-META).
- `returnedUrls` (number): Lines in this window that start with http(s)://
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).
- `totalLines` (number): Line count of the loaded file (full public/ file when available).
- `totalUrls` (number): http(s) lines in the loaded file (full count when public/ read succeeds).
- `truncated` (boolean): true if load hit a byte cap OR offset+limit left more lines. Also mirrored in trailing # MCP-META lines in summary.
- `which` (string): Resolved discovery id after alias fold (llms, sitemap-txt, ard, ai-catalog, …).

### `get_ai_txt` (~214 tokens)

Get Ai Txt

WHAT: Fetch /.well-known/ai.txt — crawl/training policy (ai-input yes with attribution, ai-train=no, contact). Must be respected when quoting site text.

Input parameters:

- `limit` (number): Maximum number of lines to return after offset. Omit or null = return every remaining line in the loaded file. Clamped to 1..10000. For sitemap.txt (~9076 http-URLs, Stand 2026-09-22) omit limit to g…
- `offset` (number): 0-based line index into the fetched UTF-8 file (split on \n). 0 = first line. Omit = 0. Combined with limit = a sliding window. Use nextOffset from the previous result to page. Does not count bytes;…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `bytesReturned` (number): UTF-8 byte length of the returned body window (before # MCP-META).
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `fetchTruncated` (boolean): true if a byte cap cut the load (line-boundary safe). Rare for sitemap.txt (reads public/).
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `limit` (number|null): Applied line limit, or null if the caller omitted limit.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `nextOffset` (number|null): offset + returnedLines when more lines remain in the loaded file; else null. Pass as the next offset. Also in # MCP-META.
- `offset` (number): Applied 0-based line offset.
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `path` (string): Public path on www, e.g. /llms.txt or /.well-known/ai.txt
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `returnedLines` (number): How many lines are in summary/body this call (before # MCP-META).
- `returnedUrls` (number): Lines in this window that start with http(s)://
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).
- `totalLines` (number): Line count of the loaded file (full public/ file when available).
- `totalUrls` (number): http(s) lines in the loaded file (full count when public/ read succeeds).
- `truncated` (boolean): true if load hit a byte cap OR offset+limit left more lines. Also mirrored in trailing # MCP-META lines in summary.
- `which` (string): Resolved discovery id after alias fold (llms, sitemap-txt, ard, ai-catalog, …).

### `get_sitemap_txt` (~280 tokens)

Get Sitemap Txt

WHAT: Fetch /sitemap.txt (same URL set as sitemap.xml). ~9076 http-URLs (Stand 2026-09-22): marketing ×7 + discovery/media. Contains 0× maps.ikeytz.com (intentional). summary = line window + trailing # MCP-META (totalUrls, nextOffset, truncated). Use offset/limit + nextOffset to page; omit limit for the full list. Dedicated maps list is on maps.ikeytz.com, not here.

Input parameters:

- `limit` (number): Maximum number of lines to return after offset. Omit or null = return every remaining line in the loaded file. Clamped to 1..10000. For sitemap.txt (~9076 http-URLs, Stand 2026-09-22) omit limit to g…
- `offset` (number): 0-based line index into the fetched UTF-8 file (split on \n). 0 = first line. Omit = 0. Combined with limit = a sliding window. Use nextOffset from the previous result to page. Does not count bytes;…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `bytesReturned` (number): UTF-8 byte length of the returned body window (before # MCP-META).
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `fetchTruncated` (boolean): true if a byte cap cut the load (line-boundary safe). Rare for sitemap.txt (reads public/).
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `limit` (number|null): Applied line limit, or null if the caller omitted limit.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `nextOffset` (number|null): offset + returnedLines when more lines remain in the loaded file; else null. Pass as the next offset. Also in # MCP-META.
- `offset` (number): Applied 0-based line offset.
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `path` (string): Public path on www, e.g. /llms.txt or /.well-known/ai.txt
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `returnedLines` (number): How many lines are in summary/body this call (before # MCP-META).
- `returnedUrls` (number): Lines in this window that start with http(s)://
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).
- `totalLines` (number): Line count of the loaded file (full public/ file when available).
- `totalUrls` (number): http(s) lines in the loaded file (full count when public/ read succeeds).
- `truncated` (boolean): true if load hit a byte cap OR offset+limit left more lines. Also mirrored in trailing # MCP-META lines in summary.
- `which` (string): Resolved discovery id after alias fold (llms, sitemap-txt, ard, ai-catalog, …).

### `list_whatsapp_options` (~222 tokens)

List Whatsapp Options

WHAT: Prefab WhatsApp AND mailto deep links (no send). 10 end-invoices + cylinder_mount (49 €, not night) + beratung. NOT zugefallen|abgeschlossen|zylinder (those mix day/night). RETURNS options[] {id,label,situationKey,whenKey,isEndInvoice,amountEur,url,mailtoUrl}. 49 € = mount only; night/WE/holiday = 149/179/198/228/119. USE compose_whatsapp or compose_mailto with id. Never claims a message was delivered.

Input parameters:

- `locale` (string): HTML locale for canonicalUrl and path prefixes. de = default, URLs have no prefix (https://www.ikeytz.com/preise). en|fr|ru|fa|ar|tr = prefix /{locale}/ (https://www.ikeytz.com/en/preise). Omit or em…

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `options` (array): Prefab WhatsApp options with wa.me URLs
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `compose_tel_mobile` (~60 tokens)

Compose Tel Mobile

WHAT: tel: href for the 24/7 mobile (Handy). Call with {}. RETURNS href and canonicalUrl both tel:+49…. Show this to the user; do not pretend the call happened. Landline = compose_tel_landline.

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `href` (string): tel:+49… mobile
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `compose_tel_landline` (~37 tokens)

Compose Tel Landline

WHAT: tel: href for the landline (Festnetz). Call with {}. Mobile/24h emergency = compose_tel_mobile.

Output parameters:

- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `href` (string): tel:+49… landline
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).

### `compose_whatsapp` (~225 tokens)

Compose Whatsapp

WHAT: Build a https://wa.me/… URL with one prefab = one end-invoice (or mount 49 / beratung). option = contactOption from get_prices.composition.endInvoices or get_invoice_line_items.contactOption: 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 map to the *day* invoice and set ambiguous=true — do not use them. Omit/unknown → beratung. 49 € is mount, not night. Does not send WhatsApp. List via list_whatsapp_options.

Input parameters:

- `option` (string): One invoice contactOption. Night/WE/holiday uses *_night (149/179/198/228/119), not 49. cylinder_mount is the 49 € add-on, not an end-invoice.

Output parameters:

- `ambiguous` (boolean)
- `amountEur` (number|null)
- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `href` (string): https://wa.me/… URL
- `isEndInvoice` (boolean)
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `option` (string): Resolved contactOption id
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `situationKey` (string|null)
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).
- `whenKey` (string|null)

### `compose_mailto` (~116 tokens)

Compose Mailto

WHAT: mailto:info@ikeytz.com with the SAME prefab as compose_whatsapp (subject+body). option = contactOption of one of the 10 end-invoices, or cylinder_mount, or beratung. Call with {} → beratung (empty advice template), not a bare mailbox with no text. Does not send email. Partner mailbox is on get_partner_info.partnerEmail (not this href).

Input parameters:

- `option` (string): Same ids as compose_whatsapp. Omit = beratung template, still a prefab.

Output parameters:

- `ambiguous` (boolean)
- `amountEur` (number|null)
- `attribution` (string): Required citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
- `canonicalUrl` (string): Best URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
- `error` (string): Present when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_…
- `hint` (string): Present when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
- `href` (string): mailto:info@ikeytz.com?subject=…&body=…
- `isEndInvoice` (boolean)
- `locale` (string): Locale actually used for URLs (args.locale or de).
- `ok` (boolean): true = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
- `option` (string): Resolved contactOption id
- `related` (array): Always includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
- `situationKey` (string|null)
- `subject` (string)
- `summary` (string): Primary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
- `tool` (string): Echo of the tool name that produced this object (e.g. get_service_area).
- `whenKey` (string|null)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-ikeytz-website/www#diagnostics

## Score history

- 2026-09-24: 80
- 2026-09-23: 80
- 2026-09-22: 79
- 2026-09-21: 79
- 2026-09-20: 79
- 2026-09-19: 78
- 2026-09-18: 78
- 2026-09-17: 77
- 2026-09-16: 77
- 2026-09-15: 76
- 2026-09-14: 76
- 2026-09-13: 75
- 2026-09-12: 75
- 2026-09-11: 74
- 2026-09-10: 74
- 2026-09-09: 74
- 2026-09-08: 73
- 2026-09-07: 73
- 2026-09-06: 72
- 2026-09-05: 72
- 2026-09-04: 71
- 2026-09-03: 71
- 2026-09-02: 70
- 2026-09-01: 70
- 2026-08-31: 69
- 2026-08-30: 67
- 2026-08-29: 66
- 2026-08-28: 66
- 2026-08-27: 66
- 2026-08-26: 65

## Common questions

### What is the ikeytz – Schlüsseldienst Ludwigsburg MCP server?

ikeytz – Schlüsseldienst Ludwigsburg is an MCP server listed in the public MCP registry as com.ikeytz/website. Read/Link MCP tools for Schlüsseldienst Ludwigsburg ikeytz. Public read-only. No forms. ai-train=no. This page covers its hosted endpoint (https://www.ikeytz.com/mcp).

### Is the ikeytz – Schlüsseldienst Ludwigsburg MCP server safe to use?

ikeytz – Schlüsseldienst Ludwigsburg scores 80 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the ikeytz – Schlüsseldienst Ludwigsburg MCP server expose?

ikeytz – Schlüsseldienst Ludwigsburg exposes 47 tools: site_overview, get_business_identity, list_nav, list_footer, list_locales, and 42 more. Their descriptions and schemas cost roughly 10,335 tokens of context every time the server is loaded.

### Does the ikeytz – Schlüsseldienst Ludwigsburg MCP server require authentication?

No. We connected to ikeytz – Schlüsseldienst Ludwigsburg without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the ikeytz – Schlüsseldienst Ludwigsburg MCP server still maintained?

ikeytz – Schlüsseldienst Ludwigsburg is still listed as active in the MCP registry. We last reached this channel on 24 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://www.ikeytz.com/mcp
- Website: https://www.ikeytz.com/
- Changelog RSS feed: https://verifymcp.io/servers/com-ikeytz-website/www.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-ikeytz-website/www.json
- HTML version of this page: https://verifymcp.io/servers/com-ikeytz-website/www
