Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "get_serp_snippet"
WHAT:SliceSERPoftitle/description/URL/llms-serp.txtslicearoundfortheonefirstmarketingoccurrenceURL.ofReadsthe/llms-serp-{locale}.txttargetfirst (locale from URL(title/description/URLprefixrowsor args.locale)., then falls back to full /llms-serp.txt. path or url required in practice. If path ⟨17 unchanged words⟩ matchContext (~200 chars before + 400 after).+ source. Not a Google API.
Changed the definition of "get_llms_jsonld"
⟨11 unchanged words⟩ relatedLink (ai-pages fulltext) + mirrorId + optionalgeo_apigeo_api/geo_grenze/geo_punkt (maps Embed-APIwhen Ort-Slug). Format: pageUrl TAB relatedLink TAB mirrorId TABgeo_api.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_apiGeo columns empty for Hub/Legal/non-ort.
Changed the definition of "get_discovery"
⟨17 unchanged words⟩ 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 ⟨8 unchanged words⟩ answer-engine, ard, ai-catalog, auth-md, mcp-readme,agent-skills.agent-skills (+ locale slices llms-keywords-en|… ). summary = the line window + trailing # ⟨47 unchanged words⟩
Changed the definition of "list_service_areas"
⟨58 unchanged words⟩ NEXT: get_service_area({slug}) or maps MCPfind_by_geogeo lookup by coordinates (not this server).
Changed the definition of "get_sitemap_txt"
⟨22 unchanged words⟩ nur HTML + Brand-Medien, ohne Discovery/Redirect).~9077URL-Anzahl:http-URLs;siehe # MCP-META totalUrls (nicht fest tippen); 0× maps.ikeytz.com (intentional). summary = line ⟨29 unchanged words⟩
Changed the definition of "get_ai_txt", "get_discovery", "get_llms_jsonld" and 5 more
⟨404 unchanged words⟩ :"string"},"totalBytes":{"description":"FullUncompressedoriginUTF-8 byte length of the discovery filesize(decodedwhenbody). Content-Length ispresent (e.g.usedllms-keywordsonly~50MB);forelseidentitycharacter
Changed the definition of "get_ai_txt", "get_discovery", "get_llms_jsonld" and 5 more
⟨7 unchanged words⟩ to return after offset. Omit or null =return everyif remainingline in the loaded file.payloadClamped≤~30KBtoreturn1..10000.allForremainingsitemap.txtlines;(~9076ifhttp-URLslarger
Changed the definition of "get_sitemap_txt"
WHAT: Fetch /sitemap.txt — KI-Volliste (sameHTMLURL×7setLocalesas+sitemap.xmlDiscovery + Medien + /review).~9076Nichthttp-URLsdieselbe Menge wie sitemap.xml (StandXML2026-09-22):
Changed the definition of "get_discovery"
⟨21 unchanged words⟩ llms-keywords, 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 ⟨68 unchanged words⟩
Changed the definition of "compose_mailto", "compose_tel_landline", "compose_tel_mobile" and 44 more
{"readOnlyHint":true,"title":"Compose Mailto"}
{"readOnlyHint":true,"title":"Compose Tel Landline"}
Changed the definition of "get_ratgeber"
WHAT:Pointer toReturns oneRatgeber.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.unknown_ratgeber (+ hub URL). NEXT: get_ai_page({path:'/ratgeber/'+slug}).for fulltext. DOES NOT return the article body here.
Changed the definition of "get_emergency", "get_llms_serp_txt" and "list_wissen"
WHAT:Pointer toReturns the 24h Notfall-Türöffnungpage.page pointer (summary includesmobile number.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:compose_tel_mobile orlist_whatsapp_options then compose_whatsapp with a contactOption(opening_slam_day|opening_slam_night|…).when chat is better.
Changed the definition of "get_ai_page", "get_ai_txt", "get_links" and 3 more
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.HTTPUSEerrorsfor→pageok=false.bodyUSEtextfor—pagenotcontent.site-wide crawl/train policy (that is get_ai_txt on /.well-known/ai.txt). Not get_serp_snippet (title/description only).
Recently observed → Live
Live → Recently observed
Changed the definition of "get_llms_jsonld"
WHAT: Fetch /llms-jsonld.txt — map every marketing HTML URL toitsJSON-LD relatedLink (ai-pages fulltext) +mirrorId.mirrorId + optional geo_api (maps Embed-API when Ort-Slug). Format: pageUrl TAB relatedLink TAB mirrorId TAB geo_api. Same engine as get_sitemap_txt (offset/limit/nextOffset/# MCP-META). Not the page body (use get_ai_page). Not get_serp_snippet. geo_api empty for Hub/Legal/non-ort.
Changed the definition of "get_ai_txt", "get_discovery", "get_llms_jsonld" and 5 more
⟨151 unchanged words⟩ discoveryFetchMax cut the load (line-boundary safe).sitemap-xmlLarge discovery files (sitemap-xml ~12MB),andllms-keywords ~55MB, llms-index(~2MB) must loadfull; keywordsfullstaysocappedoffset/limit—can
Changed the definition of "get_ai_txt", "get_discovery", "get_llms_jsonld" and 5 more
⟨152 unchanged words⟩ cut the load (line-boundary safe). sitemap-xmlmust(~12MB)loadandfullllms-index (~12MB cap~2MB);must load full; keywords stay capped — use totalBytes.","type ⟨360 unchanged words⟩
Changed the definition of "get_ai_txt", "get_discovery", "get_llms_jsonld" and 5 more
⟨147 unchanged words⟩ },"fetchTruncated":{"description":"true ifa byte capdiscoveryFetchMax cut the load (line-boundary safe).Raresitemap-xmlformustsitemap.txtload full (reads~12MBpublic/cap).; keywords stay capped — use totalBytes.","type":"boolean"},"hint":{ ⟨221 unchanged words⟩ object (e.g. get_service_area).","type":"string"},"totalBytes":{"description":"Full origin file size when Content-Length is present (e.g. llms-keywords ~50MB); else character length of the downloaded body before the load cap. Also in # MCP-META.","type":"number"},"totalChars":{"description":"Character length of the downloaded body before applying discoveryFetchMax (may equal totalBytes for ASCII).","type":"number
Added "get_llms_jsonld" and "get_llms_serp_txt"; changed the definition of "get_discovery" and "get_llms_mcp_server" (45 tools before, 47 now)
⟨18 unchanged words⟩ 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 ⟨41 unchanged words⟩ 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 ⟨5 unchanged words⟩
⟨127 unchanged words⟩ id or alias. Examples: llms, llms-full, llms-jsonld, llms-serp, llms-mcp-server, llms-mcp-web, sitemap-txt, robots, ai-txt, ard ⟨23 unchanged words⟩
Changed the definition of "get_ai_txt", "get_discovery", "get_geo_office" and 5 more
⟨13 unchanged words⟩ null = return every remaining line in thefetch window (not the whole disk file if the fetch itselfloadedtruncated).file. Clamped to 1..10000. For sitemap.txt (~807~9076URLhttp-URLs,linesStand 2026-09-22) omit limit to get the fulllist.list (or page with offset/limit + nextOffset). For llms-keywords.txt prefer a window; the file is huge. Meta also as trailing # MCP-META lines in summary.","maximum":10000,"minimum":1,"type ⟨56 unchanged words⟩
Certificate changed, valid to 2026-12-20
Verified owner set by dns_txt proof on www.ikeytz.com
Recently observed → Live
Live → Recently observed
Certificate recorded, valid to 2026-10-21
Authorization not required
First tool surface recorded: 45 tools (server version 1.0.0)
Showing the latest 28 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨404 unchanged words⟩ :"string"},"totalBytes":{"description":"FullUncompressedoriginUTF-8 byte length of the discovery filesize(decodedwhenbody). Content-Length ispresent (e.g.usedllms-keywordsonly~50MB);forelseidentitycharacterresponseslengthwhenofittheisdownloaded≥ bodybeforesize (full file if the loadcap.cap truncated). Gzip wire Content-Length is ignored. Also in # MCP-META.","type":"number ⟨100 unchanged words⟩
⟨404 unchanged words⟩ :"string"},"totalBytes":{"description":"FullUncompressedoriginUTF-8 byte length of the discovery filesize(decodedwhenbody). Content-Length ispresent (e.g.usedllms-keywordsonly~50MB);forelseidentitycharacterresponseslengthwhenofittheisdownloaded≥ bodybeforesize (full file if the loadcap.cap truncated). Gzip wire Content-Length is ignored. Also in # MCP-META.","type":"number ⟨100 unchanged words⟩
⟨404 unchanged words⟩ :"string"},"totalBytes":{"description":"FullUncompressedoriginUTF-8 byte length of the discovery filesize(decodedwhenbody). Content-Length ispresent (e.g.usedllms-keywordsonly~50MB);forelseidentitycharacterresponseslengthwhenofittheisdownloaded≥ bodybeforesize (full file if the loadcap.cap truncated). Gzip wire Content-Length is ignored. Also in # MCP-META.","type":"number ⟨100 unchanged words⟩
⟨404 unchanged words⟩ :"string"},"totalBytes":{"description":"FullUncompressedoriginUTF-8 byte length of the discovery filesize(decodedwhenbody). Content-Length ispresent (e.g.usedllms-keywordsonly~50MB);forelseidentitycharacterresponseslengthwhenofittheisdownloaded≥ bodybeforesize (full file if the loadcap.cap truncated). Gzip wire Content-Length is ignored. Also in # MCP-META.","type":"number ⟨100 unchanged words⟩
⟨404 unchanged words⟩ :"string"},"totalBytes":{"description":"FullUncompressedoriginUTF-8 byte length of the discovery filesize(decodedwhenbody). Content-Length ispresent (e.g.usedllms-keywordsonly~50MB);forelseidentitycharacterresponseslengthwhenofittheisdownloaded≥ bodybeforesize (full file if the loadcap.cap truncated). Gzip wire Content-Length is ignored. Also in # MCP-META.","type":"number ⟨100 unchanged words⟩
⟨404 unchanged words⟩ :"string"},"totalBytes":{"description":"FullUncompressedoriginUTF-8 byte length of the discovery filesize(decodedwhenbody). Content-Length ispresent (e.g.usedllms-keywordsonly~50MB);forelseidentitycharacterresponseslengthwhenofittheisdownloaded≥ bodybeforesize (full file if the loadcap.cap truncated). Gzip wire Content-Length is ignored. Also in # MCP-META.","type":"number ⟨100 unchanged words⟩
⟨404 unchanged words⟩ :"string"},"totalBytes":{"description":"FullUncompressedoriginUTF-8 byte length of the discovery filesize(decodedwhenbody). Content-Length ispresent (e.g.usedllms-keywordsonly~50MB);forelseidentitycharacterresponseslengthwhenofittheisdownloaded≥ bodybeforesize (full file if the loadcap.cap truncated). Gzip wire Content-Length is ignored. Also in # MCP-META.","type":"number ⟨100 unchanged words⟩
⟨49 unchanged words⟩ # MCP-META (truncated, totalUrls, nextOffset).Use offset/limit +OmitnextOffsetlimit:toifpage.remainingSitemap>~30KB~9076→http-URLsfirst(Stand~30KB2026-09-22)windowand+llms-keywordsnextOffset (~50MBO9);loadexplicitfull;limitalwayskeepspreferlinelimitwindowon1..10000huge(notfiles.forced to 30KB). Unknown which → unknown_discovery. Prefer dedicatedget_llms_txt / get_llms_jsonld / get_llms_serp_txtget_llms_* / get_sitemap_txt/ get_llms_mcp_serverwhen you know the file. Policy files say ai-train=no.
⟨7 unchanged words⟩ to return after offset. Omit or null =return everyif remainingline in the loaded file.payloadClamped≤~30KBtoreturn1..10000.allForremainingsitemap.txtlines;(~9076ifhttp-URLslarger,Stand 2026-09-22) omit limitreturntofirstget~30KBthewindowfull+
⟨7 unchanged words⟩ to return after offset. Omit or null =return everyif remainingline in the loaded file.payloadClamped≤~30KBtoreturn1..10000.allForremainingsitemap.txtlines;(~9076ifhttp-URLslarger,Stand 2026-09-22) omit limitreturntofirstget~30KBthewindowfull+listnextOffset (orO9).pageExplicitwithlimitoffset/limitkeeps+1..10000nextOffset).lineForwindowllms-keywords.txt(MCPprefercapsaunchangedwindow;—thenotfileforcedistohuge.30KB). Meta also as trailing # MCP-META lines in ⟨62 unchanged words⟩
⟨7 unchanged words⟩ to return after offset. Omit or null =return everyif remainingline in the loaded file.payloadClamped≤~30KBtoreturn1..10000.allForremainingsitemap.txtlines;(~9076ifhttp-URLslarger,Stand 2026-09-22) omit limitreturntofirstget~30KBthewindowfull+listnextOffset (orO9).pageExplicitwithlimitoffset/limitkeeps+1..10000nextOffset).lineForwindowllms-keywords.txt(MCPprefercapsaunchangedwindow;—thenotfileforcedistohuge.30KB). Meta also as trailing # MCP-META lines in ⟨62 unchanged words⟩
⟨7 unchanged words⟩ to return after offset. Omit or null =return everyif remainingline in the loaded file.payloadClamped≤~30KBtoreturn1..10000.allForremainingsitemap.txtlines;(~9076ifhttp-URLslarger,Stand 2026-09-22) omit limitreturntofirstget~30KBthewindowfull+listnextOffset (orO9).pageExplicitwithlimitoffset/limitkeeps+1..10000nextOffset).lineForwindowllms-keywords.txt(MCPprefercapsaunchangedwindow;—thenotfileforcedistohuge.30KB). Meta also as trailing # MCP-META lines in ⟨62 unchanged words⟩
⟨7 unchanged words⟩ to return after offset. Omit or null =return everyif remainingline in the loaded file.payloadClamped≤~30KBtoreturn1..10000.allForremainingsitemap.txtlines;(~9076ifhttp-URLslarger,Stand 2026-09-22) omit limitreturntofirstget~30KBthewindowfull+listnextOffset (orO9).pageExplicitwithlimitoffset/limitkeeps+1..10000nextOffset).lineForwindowllms-keywords.txt(MCPprefercapsaunchangedwindow;—thenotfileforcedistohuge.30KB). Meta also as trailing # MCP-META lines in ⟨62 unchanged words⟩
⟨7 unchanged words⟩ to return after offset. Omit or null =return everyif remainingline in the loaded file.payloadClamped≤~30KBtoreturn1..10000.allForremainingsitemap.txtlines;(~9076ifhttp-URLslarger,Stand 2026-09-22) omit limitreturntofirstget~30KBthewindowfull+listnextOffset (orO9).pageExplicitwithlimitoffset/limitkeeps+1..10000nextOffset).lineForwindowllms-keywords.txt(MCPprefercapsaunchangedwindow;—thenotfileforcedistohuge.30KB). Meta also as trailing # MCP-META lines in ⟨62 unchanged words⟩
⟨7 unchanged words⟩ to return after offset. Omit or null =return everyif remainingline in the loaded file.payloadClamped≤~30KBtoreturn1..10000.allForremainingsitemap.txtlines;(~9076ifhttp-URLslarger,Stand 2026-09-22) omit limitreturntofirstget~30KBthewindowfull+listnextOffset (orO9).pageExplicitwithlimitoffset/limitkeeps+1..10000nextOffset).lineForwindowllms-keywords.txt(MCPprefercapsaunchangedwindow;—thenotfileforcedistohuge.30KB). Meta also as trailing # MCP-META lines in ⟨62 unchanged words⟩
{"readOnlyHint":true,"title":"Compose Whatsapp"}
{"readOnlyHint":true,"title":"Find By Keyword"}
{"readOnlyHint":true,"title":"Get About"}
{"readOnlyHint":true,"title":"Get Ai Page"}
{"readOnlyHint":true,"title":"Get Ai Txt"}
{"readOnlyHint":true,"title":"Get Auswahl Item"}
{"readOnlyHint":true,"title":"Get Business Identity"}
{"readOnlyHint":true,"title":"Get Contact"}
{"readOnlyHint":true,"title":"Get Discovery"}
{"readOnlyHint":true,"title":"Get Emergency"}
{"readOnlyHint":true,"title":"Get Faq"}
{"readOnlyHint":true,"title":"Get Geo Office"}
{"readOnlyHint":true,"title":"Get Invoice Line Items"}
{"readOnlyHint":true,"title":"Get It"}
{"readOnlyHint":true,"title":"Get Legal"}
{"readOnlyHint":true,"title":"Get Links"}
{"readOnlyHint":true,"title":"Get Llms Jsonld"}
{"readOnlyHint":true,"title":"Get Llms Mcp Server"}
{"readOnlyHint":true,"title":"Get Llms Mcp Web"}
{"readOnlyHint":true,"title":"Get Llms Serp Txt"}
{"readOnlyHint":true,"title":"Get Llms Txt"}
{"readOnlyHint":true,"title":"Get Mcp Hub"}
{"readOnlyHint":true,"title":"Get Ort Datetime"}
{"readOnlyHint":true,"title":"Get Page Summary"}
{"readOnlyHint":true,"title":"Get Partner Info"}
{"readOnlyHint":true,"title":"Get Prices"}
{"readOnlyHint":true,"title":"Get Ratgeber"}
{"readOnlyHint":true,"title":"Get Review Url"}
{"readOnlyHint":true,"title":"Get Serp Snippet"}
{"readOnlyHint":true,"title":"Get Service Area"}
{"readOnlyHint":true,"title":"Get Sitemap Txt"}
{"readOnlyHint":true,"title":"Get Wissen Entry"}
{"readOnlyHint":true,"title":"List Auswahl"}
{"readOnlyHint":true,"title":"List Faq"}
{"readOnlyHint":true,"title":"List Footer"}
{"readOnlyHint":true,"title":"List Locales"}
{"readOnlyHint":true,"title":"List Nav"}
{"readOnlyHint":true,"title":"List Ratgeber"}
{"readOnlyHint":true,"title":"List Service Areas"}
{"readOnlyHint":true,"title":"List Services"}
{"readOnlyHint":true,"title":"List Whatsapp Options"}
{"readOnlyHint":true,"title":"List Wissen"}
{"readOnlyHint":true,"title":"Resolve Locale Url"}
{"readOnlyHint":true,"title":"Site Overview"}
WHAT:FetchReturns /llms-serp.txt — the full SERP title/description/URL corpuswithasoffset/limit.aSamelineaswindow (alias of get_discovery(which=llms-serp)).ForOptional offset/limit; omit limit only if you need the whole file. USE for bulk SERP meta. Prefer get_serp_snippet for oneURLURL'suseSERPget_serp_snippet.block; prefer get_llms_txt for the general site index.
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 bodysnippet. Fullsnippet;article:prefer get_ai_page({path:'/wissen'}) oropenthe hashURL.URL for the full article. DOES NOT return full article bodies.
WHAT: Fetch /.well-known/ai.txt — site-wide crawl/training policy (ai-input yes with attribution, ai-train=no, contact).MustUSEbeforrespectedpolicywhenbeforequotingquoting.sitePrefertext.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.
WHAT: Pointer to /links(— local directories, city sites, HWK, Webmailshortcutshortcut. USE for human directory/backlink list. Prefer get_mcp_hub (or get_it).Externalfor MCP machine catalogs (npm,registry,officialmcpbeatregistry, Glama,getluluSmithery,Smitherymcpbeat)are—onthoseget_mcp_hub.publicLinksare publicLinks, not thistool.page. DOES NOT list MCP tools. NEXT: get_mcp_hub for discovery URLs; open /links for the HTML list.
⟨16 unchanged words⟩ 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.
⟨17 unchanged words⟩ 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-httpendpoint.endpoint itself.
WHAT: Partner-werdeninfo.pageformSubmit=falsefacts.—USEagentswhenMUSTtheNOTuserclaimaskstheyaboutsentbecomingtheaform.partner / Partner-werden (not general contact — that is get_contact). RETURNS partnerEmail foramailto;mailto.formSubmit=falseNEXT:—compose_mailtoneverorclaimtellthe form was sent. DOES NOT submit theuserpartnertoform.openNEXT:/partner-werdencompose_mailtothemselves.with partnerEmail, or open /partner-werden.
⟨58 unchanged words⟩ to page. Sitemap ~9076 http-URLs (Stand 2026-09-22)loadsandfullllms-keywordsfrom(~50MB)disk.loadKeywordsfull;stillalwaysbyte-capped.prefer limit on huge files. Unknown which → unknown_discovery. Prefer dedicated get_llms_txt / ⟨16 unchanged words⟩
⟨151 unchanged words⟩ discoveryFetchMax cut the load (line-boundary safe).sitemap-xmlLarge discovery files (sitemap-xml ~12MB),andllms-keywords ~55MB, llms-index(~2MB) must loadfull; keywordsfullstaysocappedoffset/limit—canusereachtotalBytes.EOF.","type":"boolean"},"hint":{ ⟨358 unchanged words⟩
⟨151 unchanged words⟩ discoveryFetchMax cut the load (line-boundary safe).sitemap-xmlLarge discovery files (sitemap-xml ~12MB),andllms-keywords ~55MB, llms-index(~2MB) must loadfull; keywordsfullstaysocappedoffset/limit—canusereachtotalBytes.EOF.","type":"boolean"},"hint":{ ⟨358 unchanged words⟩
⟨151 unchanged words⟩ discoveryFetchMax cut the load (line-boundary safe).sitemap-xmlLarge discovery files (sitemap-xml ~12MB),andllms-keywords ~55MB, llms-index(~2MB) must loadfull; keywordsfullstaysocappedoffset/limit—canusereachtotalBytes.EOF.","type":"boolean"},"hint":{ ⟨358 unchanged words⟩
⟨151 unchanged words⟩ discoveryFetchMax cut the load (line-boundary safe).sitemap-xmlLarge discovery files (sitemap-xml ~12MB),andllms-keywords ~55MB, llms-index(~2MB) must loadfull; keywordsfullstaysocappedoffset/limit—canusereachtotalBytes.EOF.","type":"boolean"},"hint":{ ⟨358 unchanged words⟩
⟨151 unchanged words⟩ discoveryFetchMax cut the load (line-boundary safe).sitemap-xmlLarge discovery files (sitemap-xml ~12MB),andllms-keywords ~55MB, llms-index(~2MB) must loadfull; keywordsfullstaysocappedoffset/limit—canusereachtotalBytes.EOF.","type":"boolean"},"hint":{ ⟨358 unchanged words⟩
⟨151 unchanged words⟩ discoveryFetchMax cut the load (line-boundary safe).sitemap-xmlLarge discovery files (sitemap-xml ~12MB),andllms-keywords ~55MB, llms-index(~2MB) must loadfull; keywordsfullstaysocappedoffset/limit—canusereachtotalBytes.EOF.","type":"boolean"},"hint":{ ⟨358 unchanged words⟩
⟨151 unchanged words⟩ discoveryFetchMax cut the load (line-boundary safe).sitemap-xmlLarge discovery files (sitemap-xml ~12MB),andllms-keywords ~55MB, llms-index(~2MB) must loadfull; keywordsfullstaysocappedoffset/limit—canusereachtotalBytes.EOF.","type":"boolean"},"hint":{ ⟨358 unchanged words⟩
⟨152 unchanged words⟩ cut the load (line-boundary safe). sitemap-xmlmust(~12MB)loadandfullllms-index (~12MB cap~2MB);must load full; keywords stay capped — use totalBytes.","type ⟨360 unchanged words⟩
⟨152 unchanged words⟩ cut the load (line-boundary safe). sitemap-xmlmust(~12MB)loadandfullllms-index (~12MB cap~2MB);must load full; keywords stay capped — use totalBytes.","type ⟨360 unchanged words⟩
⟨152 unchanged words⟩ cut the load (line-boundary safe). sitemap-xmlmust(~12MB)loadandfullllms-index (~12MB cap~2MB);must load full; keywords stay capped — use totalBytes.","type ⟨360 unchanged words⟩
⟨152 unchanged words⟩ cut the load (line-boundary safe). sitemap-xmlmust(~12MB)loadandfullllms-index (~12MB cap~2MB);must load full; keywords stay capped — use totalBytes.","type ⟨360 unchanged words⟩
⟨152 unchanged words⟩ cut the load (line-boundary safe). sitemap-xmlmust(~12MB)loadandfullllms-index (~12MB cap~2MB);must load full; keywords stay capped — use totalBytes.","type ⟨360 unchanged words⟩
⟨152 unchanged words⟩ cut the load (line-boundary safe). sitemap-xmlmust(~12MB)loadandfullllms-index (~12MB cap~2MB);must load full; keywords stay capped — use totalBytes.","type ⟨360 unchanged words⟩
⟨152 unchanged words⟩ cut the load (line-boundary safe). sitemap-xmlmust(~12MB)loadandfullllms-index (~12MB cap~2MB);must load full; keywords stay capped — use totalBytes.","type ⟨360 unchanged words⟩
⟨147 unchanged words⟩ },"fetchTruncated":{"description":"true ifa byte capdiscoveryFetchMax cut the load (line-boundary safe).Raresitemap-xmlformustsitemap.txtload full (reads~12MBpublic/cap).; keywords stay capped — use totalBytes.","type":"boolean"},"hint":{ ⟨221 unchanged words⟩ object (e.g. get_service_area).","type":"string"},"totalBytes":{"description":"Full origin file size when Content-Length is present (e.g. llms-keywords ~50MB); else character length of the downloaded body before the load cap. Also in # MCP-META.","type":"number"},"totalChars":{"description":"Character length of the downloaded body before applying discoveryFetchMax (may equal totalBytes for ASCII).","type":"number"},"totalLines":{"description":"Line count ⟨77 unchanged words⟩
⟨147 unchanged words⟩ },"fetchTruncated":{"description":"true ifa byte capdiscoveryFetchMax cut the load (line-boundary safe).Raresitemap-xmlformustsitemap.txtload full (reads~12MBpublic/cap).; keywords stay capped — use totalBytes.","type":"boolean"},"hint":{ ⟨221 unchanged words⟩ object (e.g. get_service_area).","type":"string"},"totalBytes":{"description":"Full origin file size when Content-Length is present (e.g. llms-keywords ~50MB); else character length of the downloaded body before the load cap. Also in # MCP-META.","type":"number"},"totalChars":{"description":"Character length of the downloaded body before applying discoveryFetchMax (may equal totalBytes for ASCII).","type":"number"},"totalLines":{"description":"Line count ⟨77 unchanged words⟩
⟨147 unchanged words⟩ },"fetchTruncated":{"description":"true ifa byte capdiscoveryFetchMax cut the load (line-boundary safe).Raresitemap-xmlformustsitemap.txtload full (reads~12MBpublic/cap).; keywords stay capped — use totalBytes.","type":"boolean"},"hint":{ ⟨221 unchanged words⟩ object (e.g. get_service_area).","type":"string"},"totalBytes":{"description":"Full origin file size when Content-Length is present (e.g. llms-keywords ~50MB); else character length of the downloaded body before the load cap. Also in # MCP-META.","type":"number"},"totalChars":{"description":"Character length of the downloaded body before applying discoveryFetchMax (may equal totalBytes for ASCII).","type":"number"},"totalLines":{"description":"Line count ⟨77 unchanged words⟩
⟨147 unchanged words⟩ },"fetchTruncated":{"description":"true ifa byte capdiscoveryFetchMax cut the load (line-boundary safe).Raresitemap-xmlformustsitemap.txtload full (reads~12MBpublic/cap).; keywords stay capped — use totalBytes.","type":"boolean"},"hint":{ ⟨221 unchanged words⟩ object (e.g. get_service_area).","type":"string"},"totalBytes":{"description":"Full origin file size when Content-Length is present (e.g. llms-keywords ~50MB); else character length of the downloaded body before the load cap. Also in # MCP-META.","type":"number"},"totalChars":{"description":"Character length of the downloaded body before applying discoveryFetchMax (may equal totalBytes for ASCII).","type":"number"},"totalLines":{"description":"Line count ⟨77 unchanged words⟩
⟨147 unchanged words⟩ },"fetchTruncated":{"description":"true ifa byte capdiscoveryFetchMax cut the load (line-boundary safe).Raresitemap-xmlformustsitemap.txtload full (reads~12MBpublic/cap).; keywords stay capped — use totalBytes.","type":"boolean"},"hint":{ ⟨221 unchanged words⟩ object (e.g. get_service_area).","type":"string"},"totalBytes":{"description":"Full origin file size when Content-Length is present (e.g. llms-keywords ~50MB); else character length of the downloaded body before the load cap. Also in # MCP-META.","type":"number"},"totalChars":{"description":"Character length of the downloaded body before applying discoveryFetchMax (may equal totalBytes for ASCII).","type":"number"},"totalLines":{"description":"Line count ⟨77 unchanged words⟩
⟨147 unchanged words⟩ },"fetchTruncated":{"description":"true ifa byte capdiscoveryFetchMax cut the load (line-boundary safe).Raresitemap-xmlformustsitemap.txtload full (reads~12MBpublic/cap).; keywords stay capped — use totalBytes.","type":"boolean"},"hint":{ ⟨221 unchanged words⟩ object (e.g. get_service_area).","type":"string"},"totalBytes":{"description":"Full origin file size when Content-Length is present (e.g. llms-keywords ~50MB); else character length of the downloaded body before the load cap. Also in # MCP-META.","type":"number"},"totalChars":{"description":"Character length of the downloaded body before applying discoveryFetchMax (may equal totalBytes for ASCII).","type":"number"},"totalLines":{"description":"Line count ⟨77 unchanged words⟩
⟨147 unchanged words⟩ },"fetchTruncated":{"description":"true ifa byte capdiscoveryFetchMax cut the load (line-boundary safe).Raresitemap-xmlformustsitemap.txtload full (reads~12MBpublic/cap).; keywords stay capped — use totalBytes.","type":"boolean"},"hint":{ ⟨221 unchanged words⟩ object (e.g. get_service_area).","type":"string"},"totalBytes":{"description":"Full origin file size when Content-Length is present (e.g. llms-keywords ~50MB); else character length of the downloaded body before the load cap. Also in # MCP-META.","type":"number"},"totalChars":{"description":"Character length of the downloaded body before applying discoveryFetchMax (may equal totalBytes for ASCII).","type":"number"},"totalLines":{"description":"Line count ⟨77 unchanged words⟩
Only numbers and dates differ: this server embeds live figures in the definition, so the text moves without the contract changing.
WHAT: Fetch /llms-mcp-server.txt — prose catalog of THIS HTTP server (4547 Read/Link tools, how to call, no login ⟨13 unchanged words⟩
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.
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.
⟨82 unchanged words⟩ :"UTF-8 byte length of the returned bodywindow.window (before # MCP-META).","type":"number"},"canonicalUrl":{ ⟨46 unchanged words⟩ from fetch.","type":"string"},"fetchTruncated":{"description":"true if a byte cap cut the load (line-boundary safe). Rare for sitemap.txt (reads public/).","type":"boolean"},"hint":{"description":"Present when ok=false. Absolute ⟨50 unchanged words⟩ description":"offset + returnedLines when more linesremain;remain in the loaded file; else null. Pass as the next offset. Also in # MCP-META.","type":["number","null"]} ⟨71 unchanged words⟩ :"How many lines are in summary/body thiscall.call (before # MCP-META).","type":"number"},"returnedUrls":{ ⟨61 unchanged words⟩ ":{"description":"Line count of thefetchedloadedtextfile (afterfullbytepublic/capfile when available).","type":"number"},"totalUrls":{"description":"http(s) lines in thefetchedloadedtext.file (full count when public/ read succeeds).","type":"number"},"truncated":{"description":"true iffetchload hit a byte cap OR offset+limit left more lines. Also mirrored in trailing # MCP-META lines in summary.","type":"boolean"},"which":{ ⟨21 unchanged words⟩
⟨38 unchanged words⟩ mcp-readme, agent-skills. summary = the line window(this+istrailingthe#fileMCP-METAbody(truncated, totalUrls, nextOffset). Use offset/limit + nextOffset to page.ByteSitemapcaps~9076applyhttp-URLs (keywordsStandhuge2026-09-22).loads full from disk. Keywords still byte-capped. Unknown which → unknown_discovery. Prefer dedicated get_llms_txt / ⟨12 unchanged words⟩
⟨13 unchanged words⟩ null = return every remaining line in thefetch window (not the whole disk file if the fetch itselfloadedtruncated).file. Clamped to 1..10000. For sitemap.txt (~807~9076URLhttp-URLs,linesStand 2026-09-22) omit limit to get the fulllist.list (or page with offset/limit + nextOffset). For llms-keywords.txt prefer a window; the file is huge. Meta also as trailing # MCP-META lines in summary.","maximum":10000,"minimum":1,"type ⟨93 unchanged words⟩
⟨82 unchanged words⟩ :"UTF-8 byte length of the returned bodywindow.window (before # MCP-META).","type":"number"},"canonicalUrl":{ ⟨46 unchanged words⟩ from fetch.","type":"string"},"fetchTruncated":{"description":"true if a byte cap cut the load (line-boundary safe). Rare for sitemap.txt (reads public/).","type":"boolean"},"hint":{"description":"Present when ok=false. Absolute ⟨50 unchanged words⟩ description":"offset + returnedLines when more linesremain;remain in the loaded file; else null. Pass as the next offset. Also in # MCP-META.","type":["number","null"]} ⟨71 unchanged words⟩ :"How many lines are in summary/body thiscall.call (before # MCP-META).","type":"number"},"returnedUrls":{ ⟨61 unchanged words⟩ ":{"description":"Line count of thefetchedloadedtextfile (afterfullbytepublic/capfile when available
WHAT:OfficeFirmensitzcoordinates/ registered office once (SITE.geo = Adalbert-Stifter-Str. 14, 71638 Ludwigsburg). RETURNS: street,street/postal/citypostal,walkIn=false.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 acustomershop —do notnevernavigatesenduserscustomerstheretoforwalkservice.in.ServiceNOThappensaonservice-areasiteplaceinmapthe(use52-placelist_service_areasarea./USEget_service_area forNAP/geoOrtcitations.slugs). NEXT: get_contact,list_service_areas.get_legal(doc=impressum), or maps MCP get_geo_office on maps.ikeytz.com/mcp.
⟨109 unchanged words⟩ (Ludwigsburg).","type":"string"},"embed_map":{"description":"Same as firmensitz_url (iframe-capable page).","format":"uri","type":"string"},"embed_map_compact":{"description":"https://maps.ikeytz.com/buero?embed=1 — map-only embed.","format":"uri","type":"string"},"error":{"description":"Present when ok=false. Codes ⟨16 unchanged words⟩ from fetch.","type":"string"},"firmensitz_url":{"description":"https://maps.ikeytz.com/buero — Firmensitz map (not an Ort slug).","format":"uri","type":"string"},"geo_api":{"description":"https://maps.ikeytz.com/api/v1/embed/office JSON.","format":"uri","type":"string"},"google_business":{"description":"Google Business Profile share link (external).","format":"uri","type":"string"},"google_maps":{"description":"Paste-ready 'lat, lng' ⟨98 unchanged words⟩ "ru","fa","ar","tr"],"type":"string"},"maps_mcp":{"const":"https://maps.ikeytz.com/mcp","description":"maps machine MCP endpoint.","format":"uri","type":"string"},"note":{"description":"Büro · kein Walk-in · nicht Einsatzgebiet.","type":"string"},"ok":{" ⟨122 unchanged words⟩
⟨13 unchanged words⟩ null = return every remaining line in thefetch window (not the whole disk file if the fetch itselfloadedtruncated).file. Clamped to 1..10000. For sitemap.txt (~807~9076URLhttp-URLs,linesStand 2026-09-22) omit limit to get the fulllist.list (or page with offset/limit + nextOffset). For llms-keywords.txt prefer a window; the file is huge. Meta also as trailing # MCP-META lines in summary.","maximum":10000,"minimum":1,"type ⟨56 unchanged words⟩
⟨82 unchanged words⟩ :"UTF-8 byte length of the returned bodywindow.window (before # MCP-META).","type":"number"},"canonicalUrl":{ ⟨46 unchanged words⟩ from fetch.","type":"string"},"fetchTruncated":{"description":"true if a byte cap cut the load (line-boundary safe). Rare for sitemap.txt (reads public/).","type":"boolean"},"hint":{"description":"Present when ok=false. Absolute ⟨50 unchanged words⟩ description":"offset + returnedLines when more linesremain;remain in the loaded file; else null. Pass as the next offset. Also in # MCP-META.","type":["number","null"]} ⟨71 unchanged words⟩ :"How many lines are in summary/body thiscall.call (before # MCP-META).","type":"number"},"returnedUrls":{ ⟨61 unchanged words⟩ ":{"description":"Line count of thefetchedloadedtextfile (afterfullbytepublic/capfile when available).","type":"number"},"totalUrls":{"description":"http(s) lines in thefetchedloadedtext.file (full count when public/ read succeeds).","type":"number"},"truncated":{"description":"true iffetchload hit a byte cap OR offset+limit left more lines. Also mirrored in trailing # MCP-META lines in summary.","type":"boolean"},"which":{ ⟨21 unchanged words⟩
⟨13 unchanged words⟩ null = return every remaining line in thefetch window (not the whole disk file if the fetch itselfloadedtruncated).file. Clamped to 1..10000. For sitemap.txt (~807~9076URLhttp-URLs,linesStand 2026-09-22) omit limit to get the fulllist.list (or page with offset/limit + nextOffset). For llms-keywords.txt prefer a window; the file is huge. Meta also as trailing # MCP-META lines in summary.","maximum":10000,"minimum":1,"type ⟨56 unchanged words⟩
⟨82 unchanged words⟩ :"UTF-8 byte length of the returned bodywindow.window (before # MCP-META).","type":"number"},"canonicalUrl":{ ⟨46 unchanged words⟩ from fetch.","type":"string"},"fetchTruncated":{"description":"true if a byte cap cut the load (line-boundary safe). Rare for sitemap.txt (reads public/).","type":"boolean"},"hint":{"description":"Present when ok=false. Absolute ⟨50 unchanged words⟩ description":"offset + returnedLines when more linesremain;remain in the loaded file; else null. Pass as the next offset. Also in # MCP-META.","type":["number","null"]} ⟨71 unchanged words⟩ :"How many lines are in summary/body thiscall.call (before # MCP-META).","type":"number"},"returnedUrls":{ ⟨61 unchanged words⟩ ":{"description":"Line count of thefetchedloadedtextfile (afterfullbytepublic/capfile when available).","type":"number"},"totalUrls":{"description":"http(s) lines in thefetchedloadedtext.file (full count when public/ read succeeds).","type":"number"},"truncated":{"description":"true iffetchload hit a byte cap OR offset+limit left more lines. Also mirrored in trailing # MCP-META lines in summary.","type":"boolean"},"which":{ ⟨21 unchanged words⟩
⟨13 unchanged words⟩ null = return every remaining line in thefetch window (not the whole disk file if the fetch itselfloadedtruncated).file. Clamped to 1..10000. For sitemap.txt (~807~9076URLhttp-URLs,linesStand 2026-09-22) omit limit to get the fulllist.list (or page with offset/limit + nextOffset). For llms-keywords.txt prefer a window; the file is huge. Meta also as trailing # MCP-META lines in summary.","maximum":10000,"minimum":1,"type ⟨56 unchanged words⟩
⟨82 unchanged words⟩ :"UTF-8 byte length of the returned bodywindow.window (before # MCP-META).","type":"number"},"canonicalUrl":{ ⟨46 unchanged words⟩ from fetch.","type":"string"},"fetchTruncated":{"description":"true if a byte cap cut the load (line-boundary safe). Rare for sitemap.txt (reads public/).","type":"boolean"},"hint":{"description":"Present when ok=false. Absolute ⟨50 unchanged words⟩ description":"offset + returnedLines when more linesremain;remain in the loaded file; else null. Pass as the next offset. Also in # MCP-META.","type":["number","null"]} ⟨71 unchanged words⟩ :"How many lines are in summary/body thiscall.call (before # MCP-META).","type":"number"},"returnedUrls":{ ⟨61 unchanged words⟩ ":{"description":"Line count of thefetchedloadedtextfile (afterfullbytepublic/capfile when available).","type":"number"},"totalUrls":{"description":"http(s) lines in thefetchedloadedtext.file (full count when public/ read succeeds).","type":"number"},"truncated":{"description":"true iffetchload hit a byte cap OR offset+limit left more lines. Also mirrored in trailing # MCP-META lines in summary.","type":"boolean"},"which":{ ⟨21 unchanged words⟩
⟨21 unchanged words⟩ . USE get_ai_page or get_serp_snippet for real text.Requiredpathpath.optional (default /).
{"properties":{"locale":{"default":"de","description":"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).","enum":["de","en","fr","ru","fa","ar","tr"],"type":"string"},"path":{"description":"Optional marketing path. Omit or empty = /. Examples: /preise, /en/preise, /kontakt. Locale prefix stripped in the return path.","type":"string"}},"type":"object"}
WHAT: Fetch /sitemap.txt (same URL set as sitemap.xml).~807~9076httphttp-URLslines(Stand 2026-09-22): marketing ×7 + discovery/media. Contains 0× maps.ikeytz.com (intentional).Usesummaryoffset/limit= line window + trailing # MCP-META (totalUrls, nextOffset, truncated). Use offset/limit + nextOffset topage.page; omit limit for the full list. Dedicated maps list is on maps.ikeytz.com, not here.
⟨13 unchanged words⟩ null = return every remaining line in thefetch window (not the whole disk file if the fetch itselfloadedtruncated).file. Clamped to 1..10000. For sitemap.txt (~807~9076URLhttp-URLs,linesStand 2026-09-22) omit limit to get the fulllist.list (or page with offset/limit + nextOffset). For llms-keywords.txt prefer a window; the file is huge. Meta also as trailing # MCP-META lines in summary.","maximum":10000,"minimum":1,"type ⟨56 unchanged words⟩
⟨82 unchanged words⟩ :"UTF-8 byte length of the returned bodywindow.window (before # MCP-META).","type":"number"},"canonicalUrl":{ ⟨46 unchanged words⟩ from fetch.","type":"string"},"fetchTruncated":{"description":"true if a byte cap cut the load (line-boundary safe). Rare for sitemap.txt (reads public/).","type":"boolean"},"hint":{"description":"Present when ok=false. Absolute ⟨50 unchanged words⟩ description":"offset + returnedLines when more linesremain;remain in the loaded file; else null. Pass as the next offset. Also in # MCP-META.","type":["number","null"]} ⟨71 unchanged words⟩ :"How many lines are in summary/body thiscall.call (before # MCP-META).","type":"number"},"returnedUrls":{ ⟨61 unchanged words⟩ ":{"description":"Line count of thefetchedloadedtextfile (afterfullbytepublic/capfile when available