ikeytz is a remote MCP server that gives an AI agent 45 tools, among them compose_mailto, compose_tel_landline, compose_tel_mobile. It answers at https://www.ikeytz.com/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 15 of 15 times since 2 September 2026; the last check, on 19 October 2026, succeeded.
MCP server at www.ikeytz.com, verified by introspection: 45 tools exposed.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
compose_mailto | WHAT: mailto:[email protected] 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 Inputs: option |
compose_tel_landline | WHAT: tel: href for the landline (Festnetz). Call with {}. Mobile/24h emergency = compose_tel_mobile. |
compose_tel_mobile | WHAT: tel: href for the 24/7 mobile (Handy). Call with {}. RETURNS href and canonicalUrl both tel:+49…. Show this to the user; do not pretend the call happened. Landline = compose_tel_landline. |
compose_whatsapp | WHAT: Build a https://wa.me/… URL with one prefab = one end-invoice (or mount 49 / beratung). option = contactOption from get_prices.composition.endInvoices or get_invoice_line_items.contactOption: opening_slam_day|opening_slam_night|openin Inputs: option |
find_by_keyword | WHAT: Substring search (case-insensitive) over https://www.ikeytz.com/llms-keywords.txt (phrase → URL map). REQUIRED q. Default 15 lines, max 30. Empty q → q_required. RETURNS q, count, lines[] (raw TSV-like rows). locale does not filter th Inputs: q, limit, locale |
get_about | WHAT: Pointer to /ueber-uns (about, owner). For NAP facts prefer get_business_identity. NEXT: get_ai_page({path:'/ueber-uns'}). Inputs: locale |
get_ai_page | WHAT: Fetches public https://www.ikeytz.com/ai-pages/{locale}/{file}.txt (HTML-parity fulltext). path=/ → index.txt; else path without leading slash + .txt. summary = first 4000 chars; truncated=true if longer. HTTP errors → ok=false. USE f Inputs: path, locale |
get_ai_txt | WHAT: Fetch /.well-known/ai.txt — crawl/training policy (ai-input yes with attribution, ai-train=no, contact). Must be respected when quoting site text. Inputs: offset, limit |
get_auswahl_item | WHAT: One Auswahl situation page. REQUIRED slug from list_auswahl. RETURNS slug + canonicalUrl /auswahl/{slug}. USE after the user described a lockout/key situation. NEXT: get_ai_page({path:'/auswahl/'+slug}) for fulltext; get_invoice_line_ Inputs: slug, locale |
get_business_identity | WHO: Legal/trade identity and NAP for agents and citations. RETURNS: gewerbeName, legalName, tradeName, inhaber (Mahmud Reza Kashani, Einzelunternehmer), street/postal/city/country, mobile/landline/fax/email, website, walkIn=false. canonica Inputs: locale |
get_contact | WHAT: Public phones, fax, email, office address object. DOES NOT submit the website contact form and must not claim it did. USE to give the user a number. NEXT: compose_tel_mobile, compose_tel_landline, compose_mailto, compose_whatsapp, lis Inputs: locale |
get_discovery | WHAT: Fetch one public discovery file from www and return a line window. REQUIRED which. IDs (aliases folded): llms, llms-full, llms-index, llms-keywords, llms-serp, llms-impressum-kontakt, llms-orte-geo, llms-urheberrecht, llms-copyright, Inputs: which, offset, limit |
get_emergency | WHAT: Pointer to the 24h Notfall-Türöffnung page. summary includes mobile number. canonicalUrl = /notfall-tueroeffnung (locale-prefixed). DOES NOT dispatch a technician or take a booking. NEXT: compose_tel_mobile or list_whatsapp_options th Inputs: locale |
get_faq | WHAT: One FAQ Q+A (Ausweis, MwSt, 24h, Nachtpreis-Regel…). Lookup: exact id, else first substring on q. Not a calculator — if the user needs THIS job's euro, get_invoice_line_items after composition.routes. Missing → faq_not_found. Prefer i Inputs: id, q, locale |
get_geo_office | WHAT: Office coordinates once (SITE.geo), street/postal/city, walkIn=false. NOT a customer shop — do not navigate users there for service. Service happens on site in the 52-place area. USE for NAP/geo citations. NEXT: get_contact, list_serv Inputs: locale |
get_invoice_line_items | WHAT: Computes ONE of the 10 end-invoices (or the 49 € mount add-on). NOT a booking, NOT a PDF. FIRST classify via get_prices.composition.routes: locked_out+slam+no cylinder → opening_slam; locked_out+locked+no cylinder → opening_locked; +c Inputs: situationKey, whenKey, at, breakdown, locale |
get_it | WHAT: HTML page /it — two MCP machines documented. RETURNS website={name:com.ikeytz/website,mcp,card,npm,cli,readme=npm CLI,httpReadme=www /mcp-readme.md}, maps={name:com.ikeytz/maps,… no httpReadme}, proxy=false, page=/it, itEmail, aiEmail Inputs: locale |
get_legal | WHAT: Pointer to one legal HTML page. REQUIRED doc enum. Unknown doc → ok=false unknown_doc hint=/impressum. RETURNS doc + canonicalUrl. For full text call get_ai_page({path:'/'+doc}) or get_discovery(which=llms-urheberrecht) for the copyri Inputs: doc, locale |
get_links | WHAT: Pointer to /links (directories, city sites, HWK, Webmail shortcut). External MCP catalogs (npm, registry, mcpbeat, Glama, getlulu, Smithery) are on get_mcp_hub.publicLinks, not this tool. Inputs: locale |
get_llms_mcp_server | WHAT: Fetch /llms-mcp-server.txt — prose catalog of THIS HTTP server (45 Read/Link tools, how to call, no login). Same as get_discovery(which=llms-mcp-server). Not the npm CLI README. Not maps. Inputs: offset, limit |
get_llms_mcp_web | WHAT: Fetch /llms-mcp-web.txt — browser WebMCP catalog (early bootstrap tools + full list). Same executeMcpTool handlers as HTTP /mcp, different transport (document.modelContext). Not this streamable-http endpoint. Inputs: offset, limit |
get_llms_txt | WHAT: Fetch https://www.ikeytz.com/llms.txt (short AI landmap). Same engine as get_discovery(which=llms). summary = file window. USE as the first discovery read. Full dump: get_discovery(which=llms-full). MCP catalog: get_llms_mcp_server. Inputs: offset, limit |
get_mcp_hub | WHAT: HTML hub /mcp-hub ×7 (de has no prefix). NOT Italian, NOT the protocol endpoint. Protocol remains POST https://www.ikeytz.com/mcp (streamable-http). RETURNS same machines as get_it plus publicLinks={website:string[],maps:string[]} (ca Inputs: locale |
get_ort_datetime | WHAT: Europe/Berlin wall clock to the second + whenKey for prices. THIS www tool does NOT look up a place (no slug/plz). maps.ikeytz.com has a different geo clock tool. RULE: whenKey=day only Mo–Fr 08:00:00–17:59:59 Berlin and not a Baden-W Inputs: at, locale |
get_page_summary | WHAT: Stub pointer only — NOT the page body. summary says to use ai-pages or HTML. RETURNS path (locale prefix stripped). USE get_ai_page or get_serp_snippet for real text. Required path. |
get_partner_info | WHAT: Partner-werden info. formSubmit=false — agents MUST NOT claim they sent the form. RETURNS partnerEmail for a mailto. NEXT: compose_mailto or tell the user to open /partner-werden themselves. Inputs: locale |
get_prices | WHAT: Official Festpreis matrix + composition SYSTEM. Read composition first: exactly 10 end-invoices + one 49 € add-on (not 12, not 17 customer invoices). 49 € is cylinder_mount after an opening — already inside 148/198/178/228; never add Inputs: locale |
get_ratgeber | WHAT: Pointer to one Ratgeber. REQUIRED slug from list_ratgeber. Unknown → unknown_ratgeber. NEXT: get_ai_page({path:'/ratgeber/'+slug}). Inputs: slug, locale |
get_review_url | WHAT: Short /review redirect to the Google review URL. RETURNS googleReviewUrl (full Google) and canonicalUrl = https://www.ikeytz.com/review. USE when the user wants to leave a review. Not a list of existing ratings. Inputs: locale |
get_serp_snippet | WHAT: Slice of /llms-serp.txt around the first occurrence of the target URL (title/description/URL rows). path or url required in practice. If path is not http(s), it is turned into www(locale, path). No match → serp_not_found. RETURNS matc Inputs: path, url, locale |
get_service_area | WHAT: One service-area place. Lookup order: slug (exact getOrt), else first ORTE with plz === args.plz, else first name substring (lowercase). No silent Pattonville fallback — unknown → ok=false error=unknown_place hint=/einsatzgebiet. RETU Inputs: slug, plz, name, locale |
get_sitemap_txt | WHAT: Fetch /sitemap.txt (same URL set as sitemap.xml). ~807 http lines: marketing ×7 + discovery/media. Contains 0× maps.ikeytz.com (intentional). Use offset/limit + totalUrls + nextOffset to page. Dedicated maps list is on maps.ikeytz.com Inputs: offset, limit |
get_wissen_entry | WHAT: One Wissen article. REQUIRED id. summary includes title + first 500 chars of body. structuredContent has id+title (not full body). Unknown id → wissen_not_found. NEXT: get_ai_page({path:'/wissen'}) or canonicalUrl #id. Inputs: id, locale |
list_auswahl | WHAT: Auswahl hub groups (situation chooser on /auswahl). RETURNS groups[] {id, hash, hubUrl, slugs[], urls[]}. USE to discover valid slugs for get_auswahl_item. Unknown slug → get_auswahl_item ok=false unknown_auswahl. Inputs: locale |
list_faq | WHAT: FAQ question list (id + question, no answers). Policy/text only — euro in answers are SSOT tokens, not a live invoice. For a customer total: get_prices.composition → get_ort_datetime → get_invoice_line_items. USE get_faq({id}) or get_ Inputs: locale |
list_footer | WHAT: Curated internal footer paths including legal + /it + /mcp-hub + /angebot + /ankuendigungen. RETURNS items[] {path,url}. Not a pixel-perfect HTML scrape; external directory URLs live on get_links / MCP_PUBLIC_LINKS via get_mcp_hub. US Inputs: locale |
list_locales | WHAT: The seven public HTML locales. RETURNS locales[] {id, name, prefix}. prefix is '' for de and '/en' '/fr' '/ru' '/fa' '/ar' '/tr' for others. Host is always www.ikeytz.com (apex redirects). maps.ikeytz.com has NO locales (/en/pattonvil |
list_nav | WHAT: Curated main-header hubs (not a 1:1 dump of every <a> in the header). RETURNS items[]: Start, Notfall, Leistungen, Auswahl, Preise, Einsatzgebiet, Wissen, Ratgeber, FAQ, Kontakt — each path + locale URL + label. DOES NOT include /it, Inputs: locale |
list_ratgeber | WHAT: All Ratgeber slugs and locale URLs /ratgeber/{slug}. USE get_ratgeber({slug}) then get_ai_page for fulltext. Inputs: locale |
list_service_areas | WHAT: All 52 service-area places (orte SSOT). Each item: slug, name, plz, lat, lng, google_maps, icbm, kind, parent, url (www keyword page), embed_map (https://maps.ikeytz.com/{slug}), geo_api, maps_mcp. related includes maps llms.txt. coun Inputs: locale |
list_services, list_whatsapp_options, list_wissen, resolve_locale_url, site_overview
Every block below points at https://www.ikeytz.com/mcp. Pick your client and copy.
claude mcp add --transport http ikeytz https://www.ikeytz.com/mcp
{
"mcpServers": {
"ikeytz": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://www.ikeytz.com/mcp"]
}
}
}{
"mcpServers": {
"ikeytz": {
"url": "https://www.ikeytz.com/mcp"
}
}
}{
"servers": {
"ikeytz": {
"type": "http",
"url": "https://www.ikeytz.com/mcp"
}
}
}{
"context_servers": {
"ikeytz": {
"url": "https://www.ikeytz.com/mcp"
}
}
}{
"mcpServers": {
"ikeytz": {
"serverUrl": "https://www.ikeytz.com/mcp"
}
}
}{
"mcpServers": {
"ikeytz": {
"url": "https://www.ikeytz.com/mcp"
}
}
}name: ikeytz
version: 0.0.1
schema: v1
mcpServers:
- name: ikeytz
type: streamable-http
url: https://www.ikeytz.com/mcp{
"mcpServers": {
"ikeytz": {
"httpUrl": "https://www.ikeytz.com/mcp"
}
}
}{
"mcpServers": {
"ikeytz": {
"type": "http",
"url": "https://www.ikeytz.com/mcp"
}
}
}{
"mcpServers": {
"ikeytz": {
"url": "https://www.ikeytz.com/mcp"
}
}
}goose://extension?url=https%3A%2F%2Fwww.ikeytz.com%2Fmcp&type=streamable_http&id=ikeytz&name=ikeytz
It answered our last check on 19 October 2026 in 151 ms. Over 15 checks since 2 September 2026 it answered 15. Status here comes from Neuronto's own probes, not from the publisher.
Yes. It is published by ikeytz.com and served from www.ikeytz.com, the vendor's own domain: https://www.ikeytz.com/mcp.
45, as returned by the server's own tools/list on 3 September 2026: compose_mailto, compose_tel_landline, compose_tel_mobile, compose_whatsapp, find_by_keyword, get_about, get_ai_page, get_ai_txt, and 37 more.
It answered our last check on 19 October 2026 in 151 ms. Over 15 checks since 2 September 2026 it answered 15.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://www.ikeytz.com/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: www.ikeytz.com. Endpoint host: www.ikeytz.com. ARD identifier: urn:air:www.ikeytz.com:mcp:ikeytz.
First indexed 2 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.