accueil / serveurs / Recherche & Web / com.ikeytz/website
com.ikeytz/website
serveur MCP (Model Context Protocol) · ikeytz 1.0.0
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que com.ikeytz/website est sûr ?
Au dernier audit MCP Hub, le serveur MCP « com.ikeytz/website » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 47 outils
- compose_mailto≈ 894 tokens
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).
Paramètres, retour & exemple (1)
Paramètresoption· string · optionnel · 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
Same ids as compose_whatsapp. Omit = beratung template, still a prefab.
Exemple d'appel{"name": "compose_mailto", "arguments": {"option": "opening_slam_day"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "href": "texte", "tool": "texte", "error": "texte", "locale": "de", "option": "texte", "related": [], "subject": "texte", "summary": "texte", "whenKey": "texte", "ambiguous": true}} - compose_tel_landline≈ 702 tokens
WHAT: tel: href for the landline (Festnetz). Call with {}. Mobile/24h emergency = compose_tel_mobile.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "compose_tel_landline", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "href": "texte", "tool": "texte", "error": "texte", "locale": "de", "related": [], "summary": "texte", "attribution": "texte", "canonicalUrl": "texte"}} - compose_tel_mobile≈ 724 tokens
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.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "compose_tel_mobile", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "href": "texte", "tool": "texte", "error": "texte", "locale": "de", "related": [], "summary": "texte", "attribution": "texte", "canonicalUrl": "texte"}} - compose_whatsapp≈ 975 tokens
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.
Paramètres, retour & exemple (1)
Paramètresoption· string · optionnel · 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
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.
Exemple d'appel{"name": "compose_whatsapp", "arguments": {"option": "opening_slam_day"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "href": "texte", "tool": "texte", "error": "texte", "locale": "de", "option": "texte", "related": [], "summary": "texte", "whenKey": "texte", "ambiguous": true, "amountEur": 1}} - find_by_keyword≈ 925 tokens
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.
Paramètres, retour & exemple (3)
Paramètresq· string · requis
Required search substring. Matched against the entire keyword line (phrase and URLs).limit· number · optionnel
Max matching lines. Default 15, hard max 30.locale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "find_by_keyword", "arguments": {"q": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"q": "texte", "ok": true, "hint": "texte", "tool": "texte", "count": 1, "error": "texte", "lines": [], "locale": "de", "related": [], "summary": "texte", "attribution": "texte", "canonicalUrl": "texte"}} - get_about≈ 743 tokens
WHAT: Pointer to /ueber-uns (about, owner). For NAP facts prefer get_business_identity. NEXT: get_ai_page({path:'/ueber-uns'}).
Paramètres, retour & exemple (1)
Paramètreslocale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "get_about", "arguments": {"locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "tool": "texte", "error": "texte", "locale": "de", "related": [], "summary": "texte", "attribution": "texte", "canonicalUrl": "texte"}} - get_ai_page≈ 959 tokens
WHAT: Fetches public https://www.ikeytz.com/ai-pages/{locale}/{file}.txt (HTML-parity fulltext for one marketing URL). path=/ → index.txt; else path without leading slash + .txt. summary = first 4000 chars; truncated=true if longer. USE for page body text — not site-wide crawl/train policy (that is get_ai_txt on /.well-known/ai.txt). Not get_serp_snippet (title/description only). /review has no HTML-parity footer. NEXT: get_serp_snippet for meta only; get_ai_txt for ai-train=no policy.
Paramètres, retour & exemple (2)
Paramètrespath· string · requis
Required. Marketing path: / , /preise , /en/preise , /schluesseldienst-ludwigsburg-pattonville , /auswahl/tuer-zugefallen . Locale prefix in the path overrides args.locale if present.locale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "get_ai_page", "arguments": {"path": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "path": "texte", "tool": "texte", "error": "texte", "locale": "de", "related": [], "summary": "texte", "aiPageUrl": "texte", "truncated": true, "attribution": "texte", "canonicalUrl": "texte"}} - get_ai_txt≈ 1384 tokens
WHAT: Fetch /.well-known/ai.txt — site-wide crawl/training policy (ai-input yes with attribution, ai-train=no, contact). USE for policy before quoting. Prefer this over get_ai_page (per-URL ai-pages fulltext) and over get_discovery unless you need a generic file window. Optional offset/limit page large files — see parameters / nextOffset in schema. DOES NOT return page bodies.
Paramètres, retour & exemple (2)
Paramètreslimit· number · optionnel
Maximum number of lines to return after offset. Omit or null = if remaining payload ≤~30KB return all remaining lines; if larger, return first ~30KB window + nextOffset (O9). Explicit limit keeps 1..10000 line window (MCP caps unchanged — not forced to 30KB). Meta also as trailing # MCP-META lines in summary.offset· number · optionnel
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; one line can be a long URL.
Exemple d'appel{"name": "get_ai_txt", "arguments": {"limit": 1, "offset": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "path": "texte", "tool": "texte", "error": "texte", "limit": 1, "which": "texte", "locale": "de", "offset": 1, "related": [], "summary": "texte", "totalUrls": 1}} - get_auswahl_item≈ 860 tokens
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.
Paramètres, retour & exemple (2)
Paramètresslug· string · requis
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.locale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "get_auswahl_item", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "slug": "texte", "tool": "texte", "error": "texte", "locale": "de", "related": [], "summary": "texte", "attribution": "texte", "canonicalUrl": "texte"}} - get_business_identity≈ 1090 tokens
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.
Paramètres, retour & exemple (1)
Paramètreslocale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "get_business_identity", "arguments": {"locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "fax": "texte", "city": "texte", "hint": "texte", "tool": "texte", "email": "texte", "error": "texte", "locale": "de", "mobile": "texte", "postal": "texte", "street": "texte", "walkIn": true}} - get_contact≈ 876 tokens
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.
Paramètres, retour & exemple (1)
Paramètreslocale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "get_contact", "arguments": {"locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "fax": "texte", "hint": "texte", "tool": "texte", "email": "texte", "error": "texte", "locale": "de", "mobile": "texte", "address": {}, "related": [], "summary": "texte", "landline": "texte"}} - get_discovery≈ 1595 tokens
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-keywords-brand, llms-serp, llms-jsonld, llms-impressum-kontakt, llms-orte-geo, llms-grenzen-koordinaten, 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 (+ locale slices llms-keywords-en|… ). summary = the line window + trailing # MCP-META (truncated, totalUrls, nextOffset). Omit limit: if remaining >~30KB → first ~30KB window + nextOffset (O9); explicit limit keeps line window 1..10000 (not forced to 30KB). Unknown which → unknown_discovery. Prefer dedicated get_llms_* / get_sitemap_txt when you know the file. Policy files say ai-train=no.
Paramètres, retour & exemple (3)
Paramètreslimit· number · optionnel
Maximum number of lines to return after offset. Omit or null = if remaining payload ≤~30KB return all remaining lines; if larger, return first ~30KB window + nextOffset (O9). Explicit limit keeps 1..10000 line window (MCP caps unchanged — not forced to 30KB). Meta also as trailing # MCP-META lines in summary.which· string · requis
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, llms-urheberrecht. Underscores accepted (llms_full → llms-full). get_ prefix and _txt suffix stripped.offset· number · optionnel
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; one line can be a long URL.
Exemple d'appel{"name": "get_discovery", "arguments": {"which": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "path": "texte", "tool": "texte", "error": "texte", "limit": 1, "which": "texte", "locale": "de", "offset": 1, "related": [], "summary": "texte", "totalUrls": 1}} - get_emergency≈ 817 tokens
WHAT: Returns the 24h Notfall-Türöffnung page pointer (summary includes mobile; canonicalUrl = /notfall-tueroeffnung, locale-prefixed). USE when the user needs emergency door-opening contact on www. Prefer get_contact for general NAP; prefer compose_tel_mobile to dial. DOES NOT dispatch a technician or take a booking. NEXT: list_whatsapp_options then compose_whatsapp with a contactOption when chat is better.
Paramètres, retour & exemple (1)
Paramètreslocale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "get_emergency", "arguments": {"locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "tool": "texte", "error": "texte", "locale": "de", "related": [], "summary": "texte", "attribution": "texte", "canonicalUrl": "texte"}} - get_faq≈ 880 tokens
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.
Paramètres, retour & exemple (3)
Paramètresq· string · optionnel
Fallback search. Lowercased includes() on question or answer. Use when the user asked in natural language.id· string · optionnel
FAQ id from list_faq.items[].id. Tried first if present.locale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "get_faq", "arguments": {"q": "texte", "id": "texte", "locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"id": "texte", "ok": true, "hint": "texte", "tool": "texte", "error": "texte", "answer": "texte", "locale": "de", "related": [], "summary": "texte", "question": "texte", "attribution": "texte", "canonicalUrl": "texte"}} - get_geo_office≈ 1271 tokens
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.
Paramètres, retour & exemple (1)
Paramètreslocale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "get_geo_office", "arguments": {"locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "lat": 1, "lng": 1, "city": "texte", "hint": "texte", "icbm": "texte", "note": "texte", "tool": "texte", "error": "texte", "locale": "de", "postal": "texte", "street": "texte"}} - get_invoice_line_items≈ 1345 tokens
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.
Paramètres, retour & exemple (5)
Paramètresat· string · optionnel
Optional. Same formats as get_ort_datetime.at. Only used when whenKey is now or omitted.locale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).whenKey· string · optionnel · day | night | now
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). Do not invent dusk/dawn.breakdown· boolean · optionnel
If true, pkg_key_slam / pkg_key_locked emit two rows (opening + cylinder_mount_same_trip) instead of one package row. Total euro unchanged.situationKey· string · requis
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_slam_only = opening_slam same euro.
Exemple d'appel{"name": "get_invoice_line_items", "arguments": {"situationKey": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "tool": "texte", "error": "texte", "locale": "de", "related": [], "summary": "texte", "whenKey": "texte", "totalEur": 1, "line_items": [], "attribution": "texte", "composition": {}}} - get_it≈ 1331 tokens
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.
Paramètres, retour & exemple (1)
Paramètreslocale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "get_it", "arguments": {"locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "maps": {}, "page": "texte", "tool": "texte", "error": "texte", "proxy": true, "locale": "de", "aiEmail": "texte", "itEmail": "texte", "related": [], "summary": "texte"}} - get_legal≈ 890 tokens
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.
Paramètres, retour & exemple (2)
Paramètresdoc· string · requis · impressum | datenschutz | agb | nutzungsbedingungen | widerruf | urheberrecht
Required legal slug = path /{doc}. impressum=imprint, datenschutz=privacy, agb=T&Cs, nutzungsbedingungen=site terms, widerruf=withdrawal, urheberrecht=copyright/AI policy.locale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "get_legal", "arguments": {"doc": "impressum"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "doc": "texte", "hint": "texte", "tool": "texte", "error": "texte", "locale": "de", "related": [], "summary": "texte", "attribution": "texte", "canonicalUrl": "texte"}} - get_links≈ 801 tokens
WHAT: Pointer to /links — local directories, city sites, HWK, Webmail shortcut. USE for human directory/backlink list. Prefer get_mcp_hub (or get_it) for MCP machine catalogs (npm, official registry, Glama, Smithery, mcpbeat) — those are publicLinks, not this page. DOES NOT list MCP tools. NEXT: get_mcp_hub for discovery URLs; open /links for the HTML list.
Paramètres, retour & exemple (1)
Paramètreslocale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "get_links", "arguments": {"locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "tool": "texte", "error": "texte", "locale": "de", "related": [], "summary": "texte", "attribution": "texte", "canonicalUrl": "texte"}} - get_llms_jsonld≈ 1418 tokens
WHAT: Fetch /llms-jsonld.txt — map every marketing HTML URL to JSON-LD relatedLink (ai-pages fulltext) + mirrorId + optional geo_api/geo_grenze/geo_punkt (maps Embed-API). Format: pageUrl TAB relatedLink TAB mirrorId TAB geo_api TAB geo_grenze TAB geo_punkt. Ort = one URL each; PLZ = pipe-separated URLs per Ort of that PLZ (L-30). Same engine as get_sitemap_txt (offset/limit/nextOffset/# MCP-META). Not the page body (use get_ai_page). Not get_serp_snippet. Geo columns empty for Hub/Legal/non-ort.
Paramètres, retour & exemple (2)
Paramètreslimit· number · optionnel
Maximum number of lines to return after offset. Omit or null = if remaining payload ≤~30KB return all remaining lines; if larger, return first ~30KB window + nextOffset (O9). Explicit limit keeps 1..10000 line window (MCP caps unchanged — not forced to 30KB). Meta also as trailing # MCP-META lines in summary.offset· number · optionnel
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; one line can be a long URL.
Exemple d'appel{"name": "get_llms_jsonld", "arguments": {"limit": 1, "offset": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "path": "texte", "tool": "texte", "error": "texte", "limit": 1, "which": "texte", "locale": "de", "offset": 1, "related": [], "summary": "texte", "totalUrls": 1}} - get_llms_mcp_server≈ 1379 tokens
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). USE for machine/server catalog text. Prefer get_llms_mcp_web for browser WebMCP catalog; prefer get_llms_txt for the general site index. Not the npm CLI README. Not maps.
Paramètres, retour & exemple (2)
Paramètreslimit· number · optionnel
Maximum number of lines to return after offset. Omit or null = if remaining payload ≤~30KB return all remaining lines; if larger, return first ~30KB window + nextOffset (O9). Explicit limit keeps 1..10000 line window (MCP caps unchanged — not forced to 30KB). Meta also as trailing # MCP-META lines in summary.offset· number · optionnel
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; one line can be a long URL.
Exemple d'appel{"name": "get_llms_mcp_server", "arguments": {"limit": 1, "offset": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "path": "texte", "tool": "texte", "error": "texte", "limit": 1, "which": "texte", "locale": "de", "offset": 1, "related": [], "summary": "texte", "totalUrls": 1}} - get_llms_mcp_web≈ 1396 tokens
WHAT: Fetch /llms-mcp-web.txt — browser WebMCP catalog (early bootstrap tools + full list). Same executeMcpTool handlers as HTTP /mcp, different transport (document.modelContext). USE for WebMCP/UI discovery copy. Prefer get_llms_mcp_server for the machine/server catalog text; prefer get_llms_txt for the general site llms index. Optional offset/limit — see schema. Not this streamable-http endpoint itself.
Paramètres, retour & exemple (2)
Paramètreslimit· number · optionnel
Maximum number of lines to return after offset. Omit or null = if remaining payload ≤~30KB return all remaining lines; if larger, return first ~30KB window + nextOffset (O9). Explicit limit keeps 1..10000 line window (MCP caps unchanged — not forced to 30KB). Meta also as trailing # MCP-META lines in summary.offset· number · optionnel
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; one line can be a long URL.
Exemple d'appel{"name": "get_llms_mcp_web", "arguments": {"limit": 1, "offset": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "path": "texte", "tool": "texte", "error": "texte", "limit": 1, "which": "texte", "locale": "de", "offset": 1, "related": [], "summary": "texte", "totalUrls": 1}} - get_llms_serp_txt≈ 1375 tokens
WHAT: Returns /llms-serp.txt — the full SERP title/description/URL corpus as a line window (alias of get_discovery(which=llms-serp)). Optional offset/limit; omit limit only if you need the whole file. USE for bulk SERP meta. Prefer get_serp_snippet for one URL's SERP block; prefer get_llms_txt for the general site index.
Paramètres, retour & exemple (2)
Paramètreslimit· number · optionnel
Maximum number of lines to return after offset. Omit or null = if remaining payload ≤~30KB return all remaining lines; if larger, return first ~30KB window + nextOffset (O9). Explicit limit keeps 1..10000 line window (MCP caps unchanged — not forced to 30KB). Meta also as trailing # MCP-META lines in summary.offset· number · optionnel
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; one line can be a long URL.
Exemple d'appel{"name": "get_llms_serp_txt", "arguments": {"limit": 1, "offset": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "path": "texte", "tool": "texte", "error": "texte", "limit": 1, "which": "texte", "locale": "de", "offset": 1, "related": [], "summary": "texte", "totalUrls": 1}} - get_llms_txt≈ 1350 tokens
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.
Paramètres, retour & exemple (2)
Paramètreslimit· number · optionnel
Maximum number of lines to return after offset. Omit or null = if remaining payload ≤~30KB return all remaining lines; if larger, return first ~30KB window + nextOffset (O9). Explicit limit keeps 1..10000 line window (MCP caps unchanged — not forced to 30KB). Meta also as trailing # MCP-META lines in summary.offset· number · optionnel
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; one line can be a long URL.
Exemple d'appel{"name": "get_llms_txt", "arguments": {"limit": 1, "offset": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "path": "texte", "tool": "texte", "error": "texte", "limit": 1, "which": "texte", "locale": "de", "offset": 1, "related": [], "summary": "texte", "totalUrls": 1}} - get_mcp_hub≈ 1456 tokens
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.
Paramètres, retour & exemple (1)
Paramètreslocale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "get_mcp_hub", "arguments": {"locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "maps": {}, "page": "texte", "tool": "texte", "error": "texte", "proxy": true, "itPage": "texte", "locale": "de", "aiEmail": "texte", "itEmail": "texte", "related": []}} - get_ort_datetime≈ 1269 tokens
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.
Paramètres, retour & exemple (2)
Paramètresat· string · optionnel
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=false error=bad_datetime.locale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "get_ort_datetime", "arguments": {"at": "texte", "locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "tz": "CET", "iso": "texte", "date": "texte", "hint": "texte", "rule": "texte", "time": "texte", "tool": "texte", "unix": 1, "error": "texte", "stand": "texte", "locale": "de"}} - get_page_summary≈ 828 tokens
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 /).
Paramètres, retour & exemple (2)
Paramètrespath· string · optionnel
Optional marketing path. Omit or empty = /. Examples: /preise, /en/preise, /kontakt. Locale prefix stripped in the return path.locale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "get_page_summary", "arguments": {"path": "texte", "locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "path": "texte", "tool": "texte", "error": "texte", "locale": "de", "related": [], "summary": "texte", "attribution": "texte", "canonicalUrl": "texte"}} - get_partner_info≈ 797 tokens
WHAT: Partner-werden page facts. USE when the user asks about becoming a partner / Partner-werden (not general contact — that is get_contact). RETURNS partnerEmail for mailto; formSubmit=false — never claim the form was sent. DOES NOT submit the partner form. NEXT: compose_mailto with partnerEmail, or open /partner-werden.
Paramètres, retour & exemple (1)
Paramètreslocale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "get_partner_info", "arguments": {"locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "tool": "texte", "error": "texte", "locale": "de", "related": [], "summary": "texte", "attribution": "texte", "canonicalUrl": "texte"}} - get_prices≈ 1039 tokens
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).
Paramètres, retour & exemple (1)
Paramètreslocale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "get_prices", "arguments": {"locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "note": "texte", "tool": "texte", "error": "texte", "locale": "de", "opening": [], "related": [], "summary": "texte", "packages": [], "surcharges": [], "attribution": "texte"}} - get_ratgeber≈ 849 tokens
WHAT: Returns one Ratgeber page pointer (canonicalUrl /ratgeber/{slug}). REQUIRED slug from list_ratgeber. USE when the slug is already known. Prefer list_ratgeber when the slug is unknown. Unknown slug → unknown_ratgeber (+ hub URL). NEXT: get_ai_page({path:'/ratgeber/'+slug}) for fulltext. DOES NOT return the article body here.
Paramètres, retour & exemple (2)
Paramètresslug· string · requis
Required. Exact Ratgeber slug from list_ratgeber.slugs (ASCII hyphenated).locale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "get_ratgeber", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "slug": "texte", "tool": "texte", "error": "texte", "locale": "de", "related": [], "summary": "texte", "attribution": "texte", "canonicalUrl": "texte"}} - get_review_url≈ 789 tokens
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.
Paramètres, retour & exemple (1)
Paramètreslocale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "get_review_url", "arguments": {"locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "tool": "texte", "error": "texte", "locale": "de", "related": [], "summary": "texte", "attribution": "texte", "canonicalUrl": "texte", "googleReviewUrl": "texte"}} - get_serp_snippet≈ 898 tokens
WHAT: SERP title/description/URL slice for one marketing URL. Reads /llms-serp-{locale}.txt first (locale from URL prefix or args.locale), then falls back to full /llms-serp.txt. 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) + source. Not a Google API.
Paramètres, retour & exemple (3)
Paramètresurl· string · optionnel
If this starts with http, it is used as the search needle instead of path.path· string · optionnel
Site path (/preise) or used with locale to build the www URL to find in llms-serp.txt.locale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "get_serp_snippet", "arguments": {"url": "texte", "path": "texte", "locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "tool": "texte", "error": "texte", "locale": "de", "related": [], "summary": "texte", "attribution": "texte", "canonicalUrl": "texte", "matchContext": "texte"}} - get_service_area≈ 1410 tokens
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}.
Paramètres, retour & exemple (4)
Paramètresplz· string · optionnel
5-digit German PLZ. First matching place wins (71638 → pattonville). Use slug if you already know it.name· string · optionnel
German name substring, case-insensitive (e.g. 'Vaihingen'). First includes() match. Prefer slug.slug· string · optionnel
Preferred. Exact orte slug: pattonville, asperg, bietigheim-bissingen, kornwestheim, … (52). Not 'ludwigsburg' as a catch-all unless that slug exists.locale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "get_service_area", "arguments": {"plz": "texte", "name": "texte", "slug": "texte", "locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "lat": 1, "lng": 1, "plz": "texte", "url": "texte", "hint": "texte", "icbm": "texte", "kind": "texte", "name": "texte", "slug": "texte", "tool": "texte", "error": "texte"}} - get_sitemap_txt≈ 1413 tokens
WHAT: Fetch /sitemap.txt — KI-Volliste (HTML ×7 Locales + Discovery + Medien + /review). Nicht dieselbe Menge wie sitemap.xml (XML = nur HTML + Brand-Medien, ohne Discovery/Redirect). URL-Anzahl: siehe # MCP-META totalUrls (nicht fest tippen); 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.
Paramètres, retour & exemple (2)
Paramètreslimit· number · optionnel
Maximum number of lines to return after offset. Omit or null = if remaining payload ≤~30KB return all remaining lines; if larger, return first ~30KB window + nextOffset (O9). Explicit limit keeps 1..10000 line window (MCP caps unchanged — not forced to 30KB). Meta also as trailing # MCP-META lines in summary.offset· number · optionnel
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; one line can be a long URL.
Exemple d'appel{"name": "get_sitemap_txt", "arguments": {"limit": 1, "offset": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "path": "texte", "tool": "texte", "error": "texte", "limit": 1, "which": "texte", "locale": "de", "offset": 1, "related": [], "summary": "texte", "totalUrls": 1}} - get_wissen_entry≈ 833 tokens
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.
Paramètres, retour & exemple (2)
Paramètresid· string · requis
Required. Exact Wissen article id from list_wissen.items[].id.locale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "get_wissen_entry", "arguments": {"id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"id": "texte", "ok": true, "hint": "texte", "tool": "texte", "error": "texte", "title": "texte", "locale": "de", "related": [], "summary": "texte", "attribution": "texte", "canonicalUrl": "texte"}} - list_auswahl≈ 788 tokens
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.
Paramètres, retour & exemple (1)
Paramètreslocale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "list_auswahl", "arguments": {"locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "tool": "texte", "error": "texte", "groups": [], "locale": "de", "related": [], "summary": "texte", "attribution": "texte", "canonicalUrl": "texte"}} - list_faq≈ 815 tokens
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}).
Paramètres, retour & exemple (1)
Paramètreslocale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "list_faq", "arguments": {"locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "tool": "texte", "error": "texte", "items": [], "locale": "de", "related": [], "summary": "texte", "attribution": "texte", "canonicalUrl": "texte"}} - list_footer≈ 932 tokens
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.
Paramètres, retour & exemple (1)
Paramètreslocale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "list_footer", "arguments": {"locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "tool": "texte", "error": "texte", "items": [], "locale": "de", "related": [], "summary": "texte", "attribution": "texte", "canonicalUrl": "texte"}} - list_locales≈ 809 tokens
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 {}.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "list_locales", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "tool": "texte", "error": "texte", "locale": "de", "locales": [], "related": [], "summary": "texte", "attribution": "texte", "canonicalUrl": "texte"}} - list_nav≈ 942 tokens
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.
Paramètres, retour & exemple (1)
Paramètreslocale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "list_nav", "arguments": {"locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "tool": "texte", "error": "texte", "items": [], "locale": "de", "related": [], "summary": "texte", "attribution": "texte", "canonicalUrl": "texte"}} - list_ratgeber≈ 789 tokens
WHAT: All Ratgeber slugs and locale URLs /ratgeber/{slug}. USE get_ratgeber({slug}) then get_ai_page for fulltext.
Paramètres, retour & exemple (1)
Paramètreslocale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "list_ratgeber", "arguments": {"locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "tool": "texte", "urls": [], "error": "texte", "slugs": [], "locale": "de", "related": [], "summary": "texte", "attribution": "texte", "canonicalUrl": "texte"}} - list_service_areas≈ 1333 tokens
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 geo lookup by coordinates (not this server).
Paramètres, retour & exemple (1)
Paramètreslocale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "list_service_areas", "arguments": {"locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "tool": "texte", "count": 1, "error": "texte", "items": [], "locale": "de", "related": [], "summary": "texte", "attribution": "texte", "canonicalUrl": "texte"}} - list_services≈ 802 tokens
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.
Paramètres, retour & exemple (1)
Paramètreslocale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "list_services", "arguments": {"locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "tool": "texte", "error": "texte", "locale": "de", "related": [], "summary": "texte", "services": [], "attribution": "texte", "canonicalUrl": "texte"}} - list_whatsapp_options≈ 845 tokens
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.
Paramètres, retour & exemple (1)
Paramètreslocale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "list_whatsapp_options", "arguments": {"locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "tool": "texte", "error": "texte", "locale": "de", "options": [], "related": [], "summary": "texte", "attribution": "texte", "canonicalUrl": "texte"}} - list_wissen≈ 798 tokens
WHAT: Returns the Wissen lexicon index (id, title, url with #id). USE when you need the index of articles. Prefer get_wissen_entry({id}) for a body snippet; prefer get_ai_page({path:'/wissen'}) or the hash URL for the full article. DOES NOT return full article bodies.
Paramètres, retour & exemple (1)
Paramètreslocale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "list_wissen", "arguments": {"locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "tool": "texte", "error": "texte", "items": [], "locale": "de", "related": [], "summary": "texte", "attribution": "texte", "canonicalUrl": "texte"}} - resolve_locale_url≈ 880 tokens
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}).
Paramètres, retour & exemple (2)
Paramètrespath· string · requis
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.locale· string · requis · de | en | fr | ru | fa | ar | tr
Required. Target locale for the rewritten URL.
Exemple d'appel{"name": "resolve_locale_url", "arguments": {"path": "texte", "locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "path": "texte", "tool": "texte", "error": "texte", "locale": "de", "related": [], "summary": "texte", "toLocale": "texte", "fromLocale": "texte", "attribution": "texte", "canonicalUrl": "texte"}} - site_overview≈ 916 tokens
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).
Paramètres, retour & exemple (1)
Paramètreslocale· string · optionnel · de | en | fr | ru | fa | ar | tr
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 empty = de. Does not change prices, phone numbers, or legal German names. Not a maps.ikeytz.com locale (maps is German-only).
Exemple d'appel{"name": "site_overview", "arguments": {"locale": "de"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "hint": "texte", "tool": "texte", "error": "texte", "locale": "de", "related": [], "summary": "texte", "tradeName": "texte", "priceRange": "texte", "attribution": "texte", "gewerbeName": "texte", "canonicalUrl": "texte"}}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».