Skip to main content
Glama

ikeytz – Schlüsseldienst Ludwigsburg

Server Details

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

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Available Tools

45 tools
compose_mailtoCompose MailtoA
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
optionNoSame ids as compose_whatsapp. Omit = beratung template, still a prefab.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
hrefNomailto:info@ikeytz.com?subject=…&body=…
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
optionNoResolved contactOption id
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
subjectNo
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
whenKeyNo
ambiguousNo
amountEurNo
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
isEndInvoiceNo
situationKeyNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even with readOnlyHint=true already covering side-effect safety, the description adds valuable behavioral context: it does not actually send email, omitting the option yields a populated beratung template rather than a bare mailto, and the partner mailbox is not the hardcoded href. These details go beyond annotations and prevent misuse.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Compact and front-loaded: the WHAT sentence is followed only by essential caveats such as the default call behavior, no-send guarantee, and partner mailbox location. Every sentence carries a distinct fact with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with zero required parameters, a fully described enum, an output schema, and a readOnly annotation, the description covers invocation, default behavior, side-effect boundary, and the likely partner-mailbox confusion. Nothing needed for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single optional enum is fully described in the schema, so the baseline is 3. The description adds useful business meaning by tying option to a contactOption of one of the 10 end-invoices, cylinder_mount, or beratung and reaffirms the omit-default. However, the mapping leaves three enum values (zugefallen, abgeschlossen, zylinder) unmentioned, so it is not exhaustive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific WHAT: it produces a mailto:info@ikeytz.com link using the same subject+body prefab as compose_whatsapp. This names the exact target resource and output channel, and clearly distinguishes it from the compose_tel_* and compose_whatsapp siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete call guidance ({} maps to the beratung template, not an empty mailbox), states that email is not sent, and redirects partner-mailbox needs to get_partner_info.partnerEmail. It does not explicitly spell out when to choose this over the WhatsApp or phone compose tools, but the exclusions and references make selection fairly clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compose_tel_landlineCompose Tel LandlineA
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
hrefNotel:+49… landline
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already establishes that this is a safe read-only operation. The description adds the no-argument calling convention and the output type (tel: href), but it does not go beyond that with edge cases, determinism, or side-effect details. That is acceptable for a simple no-arg tool, but not richly transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and front-loaded: it states the output, the calling convention, and the key alternative in one compact line. Every element earns its place, and there is no redundant prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only tool with an output schema, this description is complete. It explains what the tool returns, how to call it, and when to choose a sibling instead. No critical information needed by an agent to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, and the schema description already fully covers the calling convention. The description reinforces this with 'Call with {}', which is helpful but does not add much beyond the schema. The zero-parameter baseline of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool produces a tel: href for the landline (Festnetz), which is a specific output and resource. It also distinguishes itself from compose_tel_mobile by explicitly naming that sibling, so an agent can separate the two without inspecting schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit routing rule: mobile and 24h emergency use compose_tel_mobile instead. This tells the agent when not to use this tool and which alternative to select, which is exactly the kind of usage guidance needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compose_tel_mobileCompose Tel MobileA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
hrefNotel:+49… mobile
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, and the description goes further by explaining that the tool only returns href and canonicalUrl values and does not actually place a call. The instruction 'do not pretend the call happened' adds practical behavioral transparency beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and structured with clear WHAT/RETURNS labels, making it easy to parse. Every sentence adds value: the purpose, the output, the behavioral caution, and the sibling distinction are all included without fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the zero-parameter signature, presence of an output schema, and readOnly annotation, the description covers everything needed: it names the output fields, explains the result is a link to display, and identifies the related landline tool. There are no significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema description already documents that no arguments are needed and extra keys are ignored. The description reinforces this by saying 'Call with {}', so no additional parameter explanation is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool composes a tel: href for the 24/7 mobile (Handy), specifying both the verb and the resource. It differentiates from the landline sibling by explicitly naming compose_tel_landline as the alternative for landline.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit context: use this tool to generate the mobile/Handy tel: link, and use compose_tel_landline for landline. It also instructs the agent to show the result to the user rather than pretending a call happened, providing clear behavioral guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compose_whatsappCompose WhatsappA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
optionNoOne invoice contactOption. Night/WE/holiday uses *_night (149/179/198/228/119), not 49. cylinder_mount is the 49 € add-on, not an end-invoice.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
hrefNohttps://wa.me/… URL
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
optionNoResolved contactOption id
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
whenKeyNo
ambiguousNo
amountEurNo
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
isEndInvoiceNo
situationKeyNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond readOnlyHint=true, the description reveals key behaviors: building a URL does not send a message, omitted/unknown option defaults to beratung, and deprecated aliases set ambiguous=true. It also disambiguates the 49 € value as cylinder mount rather than a night invoice. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loads the core function in the first sentence, then packs defaults and deprecations efficiently. The pipe-delimited option list is dense but every sentence earns its place, though some phrasing is telegraphic.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one optional parameter, enum schema, output schema, and readOnly annotation, the description covers default behavior, deprecated values, source of options, and the non-sending behavior. Nothing essential for correct invocation is missing; it even references list_whatsapp_options for additional options.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the option enum and its description at 100% coverage. The description adds value by explaining the default fallback for omitted/unknown values and the deprecated alias mapping, which the schema does not state. Base 3 plus one for extra semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Build a https://wa.me/… URL'. Explicitly narrows scope with 'Does not send WhatsApp' and names the list tool alternative, distinguishing it from compose_mailto/compose_tel siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tells the agent where valid option values come from ('contactOption from get_prices.composition.endInvoices or get_invoice_line_items.contactOption'), warns against deprecated aliases ('do not use them'), and points to list_whatsapp_options for listing. It does not explicitly contrast with the other compose_* tools, but the channel-specific name plus these instructions provide adequate guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_by_keywordFind By KeywordA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesRequired search substring. Matched against the entire keyword line (phrase and URLs).
limitNoMax matching lines. Default 15, hard max 30.
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
qNoSearch query
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
countNoLines returned
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
linesNoMatching keyword rows
localeNoLocale actually used for URLs (args.locale or de).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only provide readOnlyHint=true, so the description carries the behavioral burden. It discloses case-insensitive matching, the exact data source URL, default and maximum limits, empty-q behavior, the raw TSV-like return rows, and the important caveat that locale does not filter the file. This is far more than the annotation alone provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is tightly packed with labeled sections (WHAT, REQUIRED, DEFAULT, RETURNS, USE, NEXT) and no filler. Every sentence contributes either to selection, invocation, or follow-up. The front-loaded WHAT and REQUIRED statements make the core purpose immediately visible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The source is fully identified, required and optional parameters are covered, locale limitations are clarified, return shape is mentioned, an output schema exists, and the natural next-step tool is provided. For a read-only search tool, no essential decision or invocation information is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, which sets the baseline at 3, but the description adds meaningful semantics beyond the schema: case-insensitive matching, the fact that q matches against the whole keyword line, empty-q handling, and the explicit note that locale does not filter the file. These details help an agent understand the parameters in context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific operation: substring search over a named keyword file (llms-keywords.txt) mapping phrases to URLs. It also gives the intended use ('map a user phrase to URLs') and names the follow-up sibling (get_ai_page), making it easy for an agent to distinguish from the adjacent get/list tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use the tool ('USE to map a user phrase to URLs') and provides a clear next step ('NEXT: get_ai_page on a returned www path'). It does not explicitly state when not to use it or list alternative tools, so it falls just short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_aboutGet AboutA
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds behavioral context by calling this a 'pointer' rather than a content endpoint, implying the tool returns a reference/location rather than the full page. This is useful beyond the annotation and does not contradict it, though it could be slightly more explicit about output behavior. Given the low bar set by the readOnlyHint annotation, this is strong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely compact, using labeled 'WHAT' and 'NEXT' segments to front-load the core purpose and follow-up action. Every sentence contributes either purpose, routing, or workflow guidance with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, read-only pointer tool with one optional parameter and a full schema description plus an output schema, the description covers the essential aspects: what it points to, which sibling to use for alternative data, and what to call next. Nothing critical is missing for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the locale parameter is thoroughly documented in the input schema, including defaults, URL behavior, and non-applicability to German legal names. The tool description adds no additional parameter-level detail, but none is needed because the schema already carries that weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it is a 'Pointer to /ueber-uns' for about/owner information. It also explicitly differentiates itself from get_business_identity, which is the tool for NAP facts, making its purpose distinct among many similar get_* siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit alternative condition: 'For NAP facts prefer get_business_identity.' It also suggests a next step, get_ai_page, which clarifies the intended workflow and when this tool should be used as a pointer rather than a content fetcher.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ai_pageGet Ai PageA
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesRequired. Marketing path: / , /preise , /en/preise , /schluesseldienst-ludwigsburg-pattonville , /auswahl/tuer-zugefallen . Locale prefix in the path overrides args.locale if present.
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
pathNoResolved path
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
aiPageUrlNohttps://www.ikeytz.com/ai-pages/{locale}/….txt
truncatedNotrue if body was cut at 4000 chars
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the readOnlyHint annotation, disclosing URL construction ('path=/ → index.txt; else path without leading slash + .txt'), response truncation ('summary = first 4000 chars; truncated=true if longer'), error mapping ('HTTP errors → ok=false'), and a content limitation for /review. This is exactly the behavioral context the annotation does not provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is telegraphic but every clause carries a distinct fact: URL pattern, path mapping, truncation, error behavior, use case, caveat, and sibling routing. The WHAT/USE/NEXT labels make it easy for an agent to parse quickly. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and readOnlyHint=true, return values and safety are already covered, and the description handles the rest: URL construction, truncation, error semantics, and a content caveat. The one residual gap is the unaddressed relationship to the similarly named sibling get_ai_txt, which an agent could easily confuse with this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, and the schema already documents both parameters with examples. The description adds value by explaining how path maps to the fetched file ('path=/ → index.txt; else path without leading slash + .txt') and how locale prefixes shape URLs, which is not stated in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('Fetches public https://www.ikeytz.com/ai-pages/{locale}/{file}.txt (HTML-parity fulltext)') and states what the tool is for ('USE for page content'). It also distinguishes itself from a sibling ('NEXT: get_serp_snippet for title/description only'). The only minor gap is that it never differentiates itself from the nearly identically named sibling get_ai_txt.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance is present: 'USE for page content' states when to invoke it, and 'NEXT: get_serp_snippet for title/description only' names the alternative and the condition that selects it. The '/review has no HTML-parity footer' caveat further helps an agent avoid a wrong call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ai_txtGet Ai TxtA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of lines to return after offset. Omit or null = return every remaining line in the fetch window (not the whole disk file if the fetch itself truncated). Clamped to 1..10000. For sitemap.txt (~807 URL lines) omit limit to get the full list. For llms-keywords.txt prefer a window; the file is huge.
offsetNo0-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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
pathNoPublic path on www, e.g. /llms.txt or /.well-known/ai.txt
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
limitNoApplied line limit, or null if the caller omitted limit.
whichNoResolved discovery id after alias fold (llms, sitemap-txt, ard, ai-catalog, …).
localeNoLocale actually used for URLs (args.locale or de).
offsetNoApplied 0-based line offset.
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
totalUrlsNohttp(s) lines in the fetched text.
truncatedNotrue if fetch hit a byte cap OR offset+limit left more lines.
nextOffsetNooffset + returnedLines when more lines remain; else null. Pass as the next offset.
totalLinesNoLine count of the fetched text (after byte cap).
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
returnedUrlsNoLines in this window that start with http(s)://
bytesReturnedNoUTF-8 byte length of the returned body window.
returnedLinesNoHow many lines are in summary/body this call.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it read-only, and the description adds meaningful behavioral context: the content is a crawl/training policy with specific terms (attribution required, ai-train=no), and the agent must respect it when quoting site text. No contradiction with the readOnlyHint annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that conveys the resource, its purpose, and an important compliance instruction. Every phrase earns its place with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only fetch tool, the description plus fully documented schema and output schema provide everything needed. The policy context and respect obligation are the key non-structural facts, and they are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the description does not need to explain limit or offset semantics. The tool description itself adds no parameter-level detail, which is acceptable because the schema already documents both parameters thoroughly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the specific verb 'Fetch' with the exact resource '/.well-known/ai.txt' and explains what the file contains. The resource path and policy focus distinguish it clearly from siblings like get_llms_txt or get_ai_page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear usage context: the policy 'Must be respected when quoting site text,' which tells an agent when the fetched content is relevant. It does not explicitly name alternatives or exclusion conditions, but the unique well-known path makes selection straightforward.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_auswahl_itemGet Auswahl ItemA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesRequired. ASCII slug from list_auswahl groups[].slugs, e.g. tuer-zugefallen, tuer-abgeschlossen, schluessel-verloren, schluessel-gestohlen, notdienst-oeffnung-zylinder. Not an Ort slug.
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
slugNoResolved Auswahl slug
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds useful behavioral context by stating that it returns only slug + canonicalUrl, not fulltext content. It also sets expectations by directing the agent to get_ai_page for fulltext, which clarifies the tool's limited scope beyond what annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly concise and well-structured: WHAT, REQUIRED, RETURNS, USE, NEXT. Every sentence delivers distinct value, and the most important prerequisite is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with an output schema and fully described parameters, the description covers purpose, prerequisite, use case, and follow-up actions. Nothing critical is missing for an agent to correctly select and invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with detailed parameter descriptions including examples and a 'Not an Ort slug' note. The description adds marginal reinforcement ('REQUIRED slug from list_auswahl') but doesn't substantially expand beyond what the schema already provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource ('One Auswahl situation page') and the exact return value ('slug + canonicalUrl'), making it clear what the tool does. It is distinguishable from sibling tools by requiring a slug from list_auswahl and focusing on lockout/key situations, which is unique among the listed siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'USE after the user described a lockout/key situation' and instructs that the slug must come from list_auswahl. It also provides concrete next steps (get_ai_page for fulltext, get_invoice_line_items for euro), giving the agent clear routing guidance versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_business_identityGet Business IdentityA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
faxNoFax display number
cityNoCity
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
emailNoPublic email
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
mobileNoMobile display number
postalNoPostal code
streetNoOffice street (no walk-in)
walkInNoAlways false — no shop walk-in
countryNoCountry
inhaberNoOwner full name
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
websiteNoCanonical website URL
landlineNoLandline display number
legalNameNoLegal name
tradeNameNoTrade / SEO name
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
gewerbeNameNoRegistered business name
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only provide readOnlyHint=true; the description adds substantial behavioral context: no updates accepted, walkIn is always false, canonicalUrl value, and the limitation that it cannot prove licenses. These are exactly the non-obvious traits an agent needs before invoking.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but highly structured with WHO/RETURNS/USE/DOES NOT/NEXT markers. Every segment earns its place, and critical facts are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-optional-parameter read-only tool with a rich schema and output schema, this description is complete: it covers purpose, return highlights, use cases, exclusions, and sibling routing. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the sole parameter (locale) is thoroughly described in the schema, so the description is not required to add parameter meaning. It does not meaningfully enhance the locale semantics; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states exactly what the tool returns — legal/trade identity and NAP facts — and anchors it with concrete use cases ('impressum-grade facts', schema.org LocalBusiness fields). It also distinguishes itself from siblings by naming get_legal, get_contact, and get_geo_office as related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit USE guidance tells the agent when to call this tool, and DOES NOT states limitations (cannot prove licenses, does not accept updates, walkIn is always false — do not send customers to the office). It also provides NEXT tool pointers, which is ideal routing behavior.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_contactGet ContactA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
faxNoFax display.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
emailNoPublic info@ email.
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
mobileNoMobile display (Handy), 24/7.
addressNoOffice postal address (no walk-in).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
landlineNoLandline display (Festnetz).
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals read-only behavior, and the description adds meaningful context: the data is public, the tool has no form-submission side effect, and the agent must not claim it did. This prevents both misuse and hallucinated success.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The WHAT/USE/NEXT structure is compact, scannable, and every clause carries value: the returned object, the exclusion, the intended use, and follow-up tools. There is no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-optional-parameter read-only tool with an output schema, the description covers the essential context: what is returned, what is not done, when to use it, and what to do next. Nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the single optional locale parameter is already fully documented in the schema with defaults, URL-prefix behavior, and scope limitations. The description does not add parameter-level detail, but it does not need to because the schema is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states exactly what is returned: a public contact object containing phones, fax, email, and office address. It also distinguishes the tool from the website contact form and from the compose/list siblings, so an agent can tell it apart without inspecting schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit use case ('USE to give the user a number'), an explicit non-use ('DOES NOT submit the website contact form and must not claim it did'), and lists relevant NEXT alternatives. This is clear routing guidance rather than a generic statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_discoveryGet DiscoveryA
Read-only
Inspect

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, llms-mcp-server, llms-mcp-web, robots, sitemap-txt, sitemap-xml, ai-txt, ai-plugin, answer-engine, ard, ai-catalog, auth-md, mcp-readme, agent-skills. summary = the line window (this is the file body). Use offset/limit + nextOffset to page. Byte caps apply (keywords huge). Unknown which → unknown_discovery. Prefer dedicated get_llms_txt / get_sitemap_txt / get_llms_mcp_server when you know the file. Policy files say ai-train=no.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of lines to return after offset. Omit or null = return every remaining line in the fetch window (not the whole disk file if the fetch itself truncated). Clamped to 1..10000. For sitemap.txt (~807 URL lines) omit limit to get the full list. For llms-keywords.txt prefer a window; the file is huge.
whichYesRequired discovery id or alias. Examples: llms, llms-full, 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.
offsetNo0-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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
pathNoPublic path on www, e.g. /llms.txt or /.well-known/ai.txt
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
limitNoApplied line limit, or null if the caller omitted limit.
whichNoResolved discovery id after alias fold (llms, sitemap-txt, ard, ai-catalog, …).
localeNoLocale actually used for URLs (args.locale or de).
offsetNoApplied 0-based line offset.
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
totalUrlsNohttp(s) lines in the fetched text.
truncatedNotrue if fetch hit a byte cap OR offset+limit left more lines.
nextOffsetNooffset + returnedLines when more lines remain; else null. Pass as the next offset.
totalLinesNoLine count of the fetched text (after byte cap).
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
returnedUrlsNoLines in this window that start with http(s)://
bytesReturnedNoUTF-8 byte length of the returned body window.
returnedLinesNoHow many lines are in summary/body this call.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description does not contradict this. It adds substantial behavioral context beyond annotations: the response is a line window, paging uses offset/limit plus nextOffset, byte caps apply, unknown IDs return unknown_discovery, and policy files may indicate ai-train=no.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-structured with clear labels (WHAT, REQUIRED, summary, etc.). The alias list is long but necessary for correct selection, and every sentence contributes operational guidance without redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema, the description does not need to explain return values in detail. It covers required input, paging behavior, edge cases, alternatives, and policy caveats, making it complete enough for an agent to invoke the tool correctly in nearly any scenario.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds extra value by explaining alias folding ('llms_full → llms-full'), prefix/suffix stripping, concrete usage guidance for large files like llms-keywords.txt, and when to omit limit for sitemap.txt. This goes beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Fetch one public discovery file from www and return a line window.' It lists the known discovery IDs and explicitly distinguishes itself from dedicated siblings like get_llms_txt, get_sitemap_txt, and get_llms_mcp_server, so an agent can select it correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says 'Prefer dedicated get_llms_txt / get_sitemap_txt / get_llms_mcp_server when you know the file,' giving agents a clear routing rule. It also defines the unknown-which behavior ('Unknown which → unknown_discovery'), so there is no ambiguity about when and how to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_emergencyGet EmergencyA
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses that this is only a pointer with no side effects, that the summary includes the mobile number, and that canonicalUrl is locale-prefixed. This is exactly the behavioral boundary an agent needs for an emergency contact tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is tightly organized with WHAT, DOES NOT, and NEXT sections, front-loading the core purpose and decision-relevant boundaries. Every clause earns its place; the telegraphic style is efficient without sacrificing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-optional-parameter, read-only tool with an output schema, the description covers purpose, output highlights, negative behavior, and downstream contact actions. Nothing needed to invoke it correctly is missing, and the output schema handles return-structure details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the locale parameter description already explains defaults, URL prefixes, and behavior across locales. The description's only parameter-related addition is 'locale-prefixed' for canonicalUrl, which is largely implied by the schema, so it adds minimal semantic value beyond what is already structured.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a specific resource, the 24h Notfall-Türöffnung page, and clearly differentiates it from booking or dispatching actions. However, it uses the noun phrase 'Pointer to' rather than an explicit operational verb such as 'returns' or 'fetches', relying partly on the tool name for the action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states what the tool does not do ('DOES NOT dispatch a technician or take a booking') and provides a direct next-step workflow to compose_tel_mobile or list_whatsapp_options then compose_whatsapp. It gives clear usage context and exclusions, though it doesn't compare against sibling retrieval tools like get_contact or get_page_summary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_faqGet FaqA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFallback search. Lowercased includes() on question or answer. Use when the user asked in natural language.
idNoFAQ id from list_faq.items[].id. Tried first if present.
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoFAQ id
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
answerNoAnswer text
localeNoLocale actually used for URLs (args.locale or de).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
questionNoQuestion text
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses lookup precedence, fallback matching behavior, and the missing-result signal faq_not_found. With readOnlyHint already set, the description adds useful behavioral context rather than repeating the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very compact and front-loaded with WHAT and lookup rules. Every sentence carries routing or behavior information, with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete for a read-only FAQ lookup: lookup strategy, error behavior, alternative tool routing, and id source are all covered. The input schema handles parameter details and the output schema handles return shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already explains q, id, and locale in detail. The description mostly reinforces the id-before-q priority already stated in the schema, so it adds little new parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the exact resource and operation: retrieving one FAQ Q+A entry, with examples of topics. It also distinguishes itself from siblings by saying it is not a calculator and pointing to get_invoice_line_items and list_faq.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit lookup behavior: exact id first, else substring search on q. It also names the alternative tool for euro amounts and tells the agent to prefer ids from list_faq, making when-to-use and when-not-to-use clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_geo_officeGet Geo OfficeA
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
latNoWGS84 latitude of THIS place or the office. Unique per slug — never a silent Pattonville fallback. Example Pattonville ≈ 48.863.
lngNoWGS84 longitude of THIS place or the office. Example Pattonville ≈ 9.185.
cityNoOffice city (Ludwigsburg).
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
icbmNoICBM 'lat, lng' string (same as google_maps).
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
postalNoOffice PLZ.
streetNoOffice street line.
walkInNoAlways false.
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
google_mapsNoPaste-ready 'lat, lng' for Google Maps search (same digits as lat/lng).
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true already in annotations, the description adds useful behavioral context: walkIn=false, the office is not a service location, and service takes place on site in the 52-place area. This helps prevent an agent from sending users to the wrong destination. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition uses compact labeled segments—WHAT, NOT, USE, NEXT—front-loading the core purpose and keeping every sentence informative. There is no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one optional parameter, a complete parameter description, a read-only annotation, and an output schema, the description supplies the remaining judgment context: citation use, non-walk-in status, service location, and next tools. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%—the locale parameter's enum, default, and URL-prefix behavior are fully documented in the schema. The description does not add parameter-specific guidance beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific WHAT: office coordinates (SITE.geo), street/postal/city, and walkIn=false, making the resource and fields clear. It also clarifies it is not a customer shop, but it does not explicitly contrast itself against the sibling tools get_contact or list_service_areas—they are merely listed as NEXT.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says USE for NAP/geo citations and provides a clear when-not: do not navigate users to the office for service. It names get_contact and list_service_areas as related next steps, but does not state the specific conditions under which an agent should choose those instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_invoice_line_itemsGet Invoice Line ItemsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
atNoOptional. Same formats as get_ort_datetime.at. Only used when whenKey is now or omitted.
localeNoHTML 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).de
whenKeyNoday = 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.
breakdownNoIf true, pkg_key_slam / pkg_key_locked emit two rows (opening + cylinder_mount_same_trip) instead of one package row. Total euro unchanged.
situationKeyYesRequired. 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
whenKeyNoResolved day|night
totalEurNoEnd-invoice euro. Do not add VAT or extra 49.
line_itemsNoInvoice rows
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
compositionNoSame SYSTEM as get_prices.composition — factors, routes, 10 invoices.
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
situationKeyNoResolved situation id
contactOptionNoPrefab id for compose_whatsapp / compose_mailto (opening_slam_day … cylinder_only_night, or cylinder_mount).
situationLabelDeNoGerman situation label

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true already present, the description still adds substantial behavioral context: exact classification logic, alias mapping, breakdown behavior, and return shape (totalEur + composition + contactOption). It also clarifies that it is not a booking or PDF and does not include VAT, going well beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every clause carries a domain rule necessary for correct invocation. It is front-loaded with WHAT and exclusions, then flows through the classification, timing, special cases, output, and next steps. The structured labels keep it scannable despite its length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the intricate pricing logic and 100% schema coverage, the description covers the full decision tree, edge cases, aliases, and downstream tools. The presence of an output schema handles return-value specification, so nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds crucial meaning not inferable from the schema: situationKey aliases (zugefallen→opening_slam), the special rule that night is not +49 (49 only for cylinder_mount), and the exact effect of breakdown=true. This enriches the bare parameter definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Computes ONE of the 10 end-invoices (or the 49 € mount add-on)' and immediately excludes misconceptions with 'NOT a booking, NOT a PDF.' This gives a specific verb and resource and differentiates it from sibling tools like compose_whatsapp and get_prices.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides an explicit decision procedure: classify via get_prices.composition.routes, get whenKey from get_ort_datetime, handle aliases, and then proceed to compose_whatsapp or compose_mailto. It also states exclusions like 'Night/WE/holiday is NOT +49' and 'Do not add 49 on top of pkg_key_*', leaving no ambiguity about when and how to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_itGet ItA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
mapsNomaps machine com.ikeytz/maps
pageNoLocale /it URL.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
proxyNowww does not proxy maps.
localeNoLocale actually used for URLs (args.locale or de).
aiEmailNoPublic AI/abuse mailbox.
itEmailNoPublic IT contact mailbox.
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
websiteNowww machine com.ikeytz/website
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the operation readOnlyHint=true, and the description adds meaningful behavioral context: www /mcp never calls maps /mcp, proxy=false, and /it is not Italian. These details go beyond the structured fields and help the agent avoid misconceptions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The WHAT/RETURNS/USE structure front-loads the core purpose and keeps the description dense. A few phrases are cryptic or use ellipses ('maps={...}'), and some details are niche, but overall every sentence carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple single-optional-parameter schema and presence of an output schema, the description is complete enough. It covers the page's role, the two endpoints, the distinction from the hub tool, and the non-HTTP CLI channel, so an agent has sufficient context to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, locale, is fully documented in the input schema with an enum, default value, and detailed explanation of URL prefix behavior. Schema coverage is 100%, so the description does not need to add parameter semantics; the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource ('HTML page /it') and explains it documents two MCP machines (website/www and maps). It also distinguishes itself from the sibling get_mcp_hub by explicitly pointing to '/mcp-hub (get_mcp_hub)', so an agent can tell this tool apart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says 'USE to tell an agent there are TWO endpoints (www vs maps)' and clarifies the hub HTML belongs to get_mcp_hub, not this tool. It also rules out the CLI npm channel as a separate third channel, giving clear selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_llms_mcp_serverGet Llms Mcp ServerA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of lines to return after offset. Omit or null = return every remaining line in the fetch window (not the whole disk file if the fetch itself truncated). Clamped to 1..10000. For sitemap.txt (~807 URL lines) omit limit to get the full list. For llms-keywords.txt prefer a window; the file is huge.
offsetNo0-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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
pathNoPublic path on www, e.g. /llms.txt or /.well-known/ai.txt
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
limitNoApplied line limit, or null if the caller omitted limit.
whichNoResolved discovery id after alias fold (llms, sitemap-txt, ard, ai-catalog, …).
localeNoLocale actually used for URLs (args.locale or de).
offsetNoApplied 0-based line offset.
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
totalUrlsNohttp(s) lines in the fetched text.
truncatedNotrue if fetch hit a byte cap OR offset+limit left more lines.
nextOffsetNooffset + returnedLines when more lines remain; else null. Pass as the next offset.
totalLinesNoLine count of the fetched text (after byte cap).
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
returnedUrlsNoLines in this window that start with http(s)://
bytesReturnedNoUTF-8 byte length of the returned body window.
returnedLinesNoHow many lines are in summary/body this call.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation is consistent and the description adds meaningful context beyond it: the endpoint path, 'no login', and the fact that the content is a prose catalog of 45 Read/Link tools. It also signals that the result is server-specific rather than general documentation. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded with 'WHAT:', and each segment (resource, content, no-login, equivalence, exclusions) earns its place. No filler or redundant restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich parameter schema, output schema, and readOnly annotation, the description covers purpose, target resource, authentication context, and relationship to alternatives. Nothing an agent needs to invoke the tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%; the limit and offset parameters are already well documented in the input schema with clamping, paging, and line-index semantics. The description itself adds no parameter-level detail, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('Fetch /llms-mcp-server.txt') and immediately frames it as a prose catalog of this HTTP server with no login. It explicitly differentiates itself from the npm CLI README and maps, and notes equivalence to get_discovery(which=llms-mcp-server), so an agent can tell exactly what this tool is for.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states what the tool returns and the no-login condition, and explicitly names a sibling-equivalent (get_discovery) plus exclusions ('Not the npm CLI README. Not maps.'). It does not fully spell out when to prefer this over nearby siblings like get_llms_txt or get_llms_mcp_web, but the relevant routing is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_llms_mcp_webGet Llms Mcp WebA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of lines to return after offset. Omit or null = return every remaining line in the fetch window (not the whole disk file if the fetch itself truncated). Clamped to 1..10000. For sitemap.txt (~807 URL lines) omit limit to get the full list. For llms-keywords.txt prefer a window; the file is huge.
offsetNo0-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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
pathNoPublic path on www, e.g. /llms.txt or /.well-known/ai.txt
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
limitNoApplied line limit, or null if the caller omitted limit.
whichNoResolved discovery id after alias fold (llms, sitemap-txt, ard, ai-catalog, …).
localeNoLocale actually used for URLs (args.locale or de).
offsetNoApplied 0-based line offset.
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
totalUrlsNohttp(s) lines in the fetched text.
truncatedNotrue if fetch hit a byte cap OR offset+limit left more lines.
nextOffsetNooffset + returnedLines when more lines remain; else null. Pass as the next offset.
totalLinesNoLine count of the fetched text (after byte cap).
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
returnedUrlsNoLines in this window that start with http(s)://
bytesReturnedNoUTF-8 byte length of the returned body window.
returnedLinesNoHow many lines are in summary/body this call.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds useful context: it fetches a specific file through a different transport while sharing the same executeMcpTool handlers. This goes beyond the annotation without contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with a WHAT label. Each sentence adds transport or scope information; the only minor issue is the deictic phrase 'Not this streamable-http endpoint,' which is slightly ambiguous but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given rich parameter schema, a read-only annotation, and an output schema, the description supplies the remaining key context: the resource path and transport mechanism. It does not name sibling alternatives, but that gap is covered under usage guidelines.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description itself contains no parameter guidance, but the input schema covers 100% of parameters with detailed limit/offset semantics, including clamping, offset meaning, and nextOffset paging. With full schema coverage, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource (/llms-mcp-web.txt) and action ('Fetch'), and clarifies its scope as the 'browser WebMCP catalog (early bootstrap tools + full list)'. It does not explicitly distinguish itself from sibling tools like get_llms_mcp_server or get_llms_txt, so it falls short of a full 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. The description notes that it uses document.modelContext rather than HTTP and says 'Not this streamable-http endpoint,' but this does not help an agent choose among the many sibling get_* tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_llms_txtGet Llms TxtA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of lines to return after offset. Omit or null = return every remaining line in the fetch window (not the whole disk file if the fetch itself truncated). Clamped to 1..10000. For sitemap.txt (~807 URL lines) omit limit to get the full list. For llms-keywords.txt prefer a window; the file is huge.
offsetNo0-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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
pathNoPublic path on www, e.g. /llms.txt or /.well-known/ai.txt
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
limitNoApplied line limit, or null if the caller omitted limit.
whichNoResolved discovery id after alias fold (llms, sitemap-txt, ard, ai-catalog, …).
localeNoLocale actually used for URLs (args.locale or de).
offsetNoApplied 0-based line offset.
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
totalUrlsNohttp(s) lines in the fetched text.
truncatedNotrue if fetch hit a byte cap OR offset+limit left more lines.
nextOffsetNooffset + returnedLines when more lines remain; else null. Pass as the next offset.
totalLinesNoLine count of the fetched text (after byte cap).
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
returnedUrlsNoLines in this window that start with http(s)://
bytesReturnedNoUTF-8 byte length of the returned body window.
returnedLinesNoHow many lines are in summary/body this call.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds useful behavioral context: the exact URL fetched, that it is a 'short AI landmap', that it works like get_discovery(which=llms), and that it returns a file window/summary. This goes beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: it states the WHAT first, then the USE, then the relevant alternatives. Every sentence adds value, and there is no redundant prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that annotations establish read-only safety, the schema fully documents parameters, and an output schema exists, the description covers the remaining essentials: the source URL, its role as the first discovery read, and the sibling tools to use for full dumps or MCP catalogs. Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the limit and offset parameters are already fully documented in the input schema. The description adds only a general 'summary = file window' hint and does not need to repeat parameter details; the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'WHAT: Fetch https://www.ikeytz.com/llms.txt (short AI landmap)', giving a specific verb, resource, and scope. It also differentiates itself from siblings by naming get_discovery(which=llms), get_discovery(which=llms-full), and get_llms_mcp_server, so an agent can select it without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says 'USE as the first discovery read' and then points to alternatives: 'Full dump: get_discovery(which=llms-full)' and 'MCP catalog: get_llms_mcp_server'. This gives clear when-to-use and when-to-choose-a-different-tool guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_mcp_hubGet Mcp HubA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
mapsNomaps machine
pageNoLocale /mcp-hub URL.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
proxyNo
itPageNoLocale /it URL.
localeNoLocale actually used for URLs (args.locale or de).
aiEmailNo
itEmailNo
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
websiteNowww machine
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
publicLinksNoFull public catalog URLs, same order as the footer MCP tab.
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already set readOnlyHint=true, and the description does not contradict that. It adds valuable context by clarifying that this is an HTML hub endpoint rather than the protocol endpoint, and describes the returned data structure (publicLinks, itPage, emails). This goes beyond the annotation's simple read-only flag, though it does not discuss side effects or permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured with clear demarcations (WHAT, NOT, RETURNS, USE). It packs extensive disambiguation into a few lines without redundancy, and the critical purpose is front-loaded. Every sentence contributes to correcting potential misuse or clarifying scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity—distinguishing from protocol endpoints, locale variations, and output structure—the description is thorough. It covers what it does, what it is not, what it returns, and how to use it. The existence of an output schema reduces the need to detail return values, yet the description still mentions key fields, making it complete for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema fully documents the single 'locale' parameter (100% coverage), including its enum, default, and detailed behavior. The description itself does not mention parameters, so it adds no additional semantic value. Baseline 3 is appropriate because the schema already handles parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description immediately states 'WHAT: HTML hub /mcp-hub' and clarifies that it is not the protocol endpoint, explicitly distinguishing it from the POST endpoint. It also mentions it returns the same machines as get_it plus additional fields, giving a clear, specific purpose that differentiates it from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It says 'USE to cite discovery URLs,' which is a concrete usage scenario. It also provides exclusions like 'Not Italian, NOT the protocol endpoint' and warns about the Smithery listings and GitHub, helping the agent avoid misapplication. However, it does not explicitly state when to prefer this tool over get_it or mention alternatives, so it lacks a complete when-not-to-use section.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ort_datetimeGet Ort DatetimeA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
atNoOptional 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.
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
tzNoAbbreviation.
isoNoISO-8601 with Berlin offset.
dateNoYYYY-MM-DD in Berlin.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
ruleNoHuman rule string for day vs night.
timeNoHH:MM:SS in Berlin (24h).
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
unixNoUnix timestamp seconds.
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
standNoHuman clock 'YYYY-MM-DD HH:MM:SS CEST|CET' Europe/Berlin.
localeNoLocale actually used for URLs (args.locale or de).
holidayNotrue if date is a BW statutory holiday.
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
weekdayNoen-GB short weekday (Mon…Sun).
whenKeyNoPrice bucket. Pass to get_invoice_line_items.whenKey or use whenKey=now there.
timezoneNo
pricesToolNo
weekdayIsoNoISO weekday 1=Monday … 7=Sunday.
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
holidayNameNoGerman holiday name or null. Holidays force whenKey=night.
invoiceToolNo
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnly, but the description discloses the exact day/night rule, holiday dependence, Baden-Württemberg holiday nuance, Berlin timezone, and the returned fields. This makes the tool's behavior predictable beyond what readOnlyHint conveys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but cleanly structured with WHAT/THIS/RULE/RETURNS/USE/NEXT prefixes, and each fragment carries decision-relevant information. The core purpose is front-loaded, and the rule is stated precisely before workflow guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only clock/time tool with two optional params and an output schema, the description fully covers the operational rule, timezone, holiday edge case, disambiguation from a sibling, and downstream pricing/invoicing usage. An agent has everything needed to call and apply the result correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverrage is 100%, so the two optional parameters are already fully documented. The description adds contextual framing (clock, prices, before invoicing) but no new syntax or parameter-level detail, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with WHAT, stating it is a Europe/Berlin wall clock to the second plus a day/night price key, and explicitly disambiguishes it from a maps.ikeytz.com geo-clock and from place lookup. An agent can identify the tool's exact role without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit USE-before-invoicing instruction and a NEXT step calling get_invoice_line_items, and it says the maps tool is a different clock. It also states what the tool does NOT do (no slug/plz lookup), which prevents misuse for geo queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_page_summaryGet Page SummaryA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
pathNoPath without locale prefix
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses that the tool is only a stub, does not return page body content, and returns a path with the locale prefix stripped. This is meaningful behavioral context. Error conditions and exact output format are not discussed, but the output schema likely covers return structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short and front-loaded with 'WHAT', but several fragments are cryptic, such as 'summary says to use ai-pages or HTML' and the trailing 'Required path.' These add confusion rather than clarity, even though the overall length is appropriate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only tool with an output schema, the description covers the tool's purpose, return value, and alternatives. The 'Required path' note is ambiguous, but it does not prevent correct use because there are no input parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has zero parameters and 100% coverage, so there is no parameter information for the description to add. A score of 4 is appropriate for a zero-parameter tool where parameter semantics are not applicable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states exactly what the tool does: it is a stub pointer that returns a path, not the page body. It explicitly contrasts itself with get_ai_page and get_serp_snippet, making its distinct role among siblings clear despite the possibly misleading title.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly directs agents to use get_ai_page or get_serp_snippet when real text is needed, which establishes the main alternative. It does not fully articulate every scenario for using this stub pointer, but 'stub pointer only' and 'RETURNS path' make the intended use reasonably clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_partner_infoGet Partner InfoA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavior beyond readOnlyHint=true by warning that formSubmit=false and instructing agents not to claim they submitted the form. It also clarifies the main output (partnerEmail) and the expected next action, which is valuable operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly concise and uses clear labels (WHAT, RETURNS, NEXT) to front-load the essential information. Every segment serves a distinct purpose and there is no redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-optional-parameter read-only tool with an output schema, the description provides the key behavioral warning, return value, and recommended follow-up. It is slightly thin on when the tool should be chosen over siblings, but overall it gives an agent enough to call and use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, locale, has 100% schema description coverage with detailed explanation of defaults, URL prefixes, and non-locale behavior. The description adds no parameter-specific information, but with complete schema coverage the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool returns partner-werden info and specifically RETURNS partnerEmail for a mailto, so an agent can tell what the tool produces. It does not explicitly differentiate itself from sibling get_* tools, but the partner-werden context and next-step hint make the resource clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied by the name and 'Partner-werden info' rather than explicitly stated. There is no comparison to alternative tools or a clear 'use when the user asks about becoming a partner' condition, though the NEXT instruction gives useful follow-up context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pricesGet PricesA
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
noteNoLegal/price note
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
openingNoDoor-opening price blocks
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
packagesNoInvoice packages (day/night)
surchargesNoSurcharge rows
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
compositionNoHow to assemble: 10 end-invoices, factors, question routes, formulas. Required reading before quoting €.
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
cylinderOnlyNoCylinder-only prices
cylinderAfterOpeningNoCylinder price after an opening

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes far beyond the readOnlyHint annotation by disclosing exact composition rules, pitfalls like 'never add 49 again,' exclusions for night/weekend/holiday, and the return structure: composition, opening, packages, surcharges, note. It also states 'No VAT (§ 19),' which is useful behavioral context not present in the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and every sentence adds a constraint, return detail, or routing hint. It is front-loaded with the core purpose and avoids fluff, though the all-caps style and high information density make it slightly harder to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a pricing-composition tool with an output schema and one optional locale parameter, the description is unusually complete. It covers the tool's purpose, return shape, associated pitfalls, contact paths, and relationship to the sibling that computes totals. No critical calling information is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100% and fully documents the single optional 'locale' parameter, including default behavior and URL prefix effects. The description adds no parameter-specific detail, but the baseline of 3 applies because the schema already carries the burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Official Festpreis matrix + composition SYSTEM' and immediately states the tool's purpose: 'USE to understand how to assemble a price.' It also distinguishes itself from a sibling by saying 'DOES NOT compute one customer total — that is get_invoice_line_items(situationKey, whenKey).' This gives a specific verb, resource, and differentiation from other tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use the tool ('USE to understand how to assemble a price') and when not to ('DOES NOT compute one customer total'), naming the exact alternative: get_invoice_line_items. It also gives routing hints to related tools like compose_whatsapp/compose_mailto and get_ort_datetime.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ratgeberGet RatgeberA
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesRequired. Exact Ratgeber slug from list_ratgeber.slugs (ASCII hyphenated).
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
slugNoResolved Ratgeber slug
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, it discloses that the tool returns a pointer rather than content, signals the next step (get_ai_page), and specifies unknown_ratgeber behavior for invalid slugs. This is useful additional behavioral context for a read-only lookup.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Compact and structured with WHAT/REQUIRED/Unknown/NEXT labels; no filler. Every sentence contributes to call correctness or workflow.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read-only tool with an output schema and a detailed schema description, the definition covers the prerequisite, invalid-input result, and follow-up call. It could explicitly contrast list_ratgeber vs. get_ratgeber, but the source requirement already implies it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents slug and locale in detail. The description adds a source constraint for slug but does not materially extend parameter meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States with a specific verb ('get') and resource ('one Ratgeber'), explicitly contrasting with list_ratgeber by requiring a single slug. The description's 'pointer' role makes it clear this is not a content fetch and differentiates it from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly requires a slug obtained from list_ratgeber and defines the unknown-slug behavior, which gives an agent clear call prerequisites. It does not enumerate exclusions or compare alternatives, but the workflow context is concrete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_review_urlGet Review UrlA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
googleReviewUrlNoFull Google review URL

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds that this is a redirect and enumerates the return fields (googleReviewUrl and canonicalUrl), plus the exclusion of rating lists. This is adequate behavioral context for a simple read-only URL getter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every clause earns its place: WHAT, RETURNS, USE, and the not-a-list exclusion. The label-prefixed structure front-loads the key behavior and avoids filler. It is short but information-dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one optional parameter, a fully documented schema, an output schema, and readOnlyHint, all information needed to invoke the tool correctly is present. The description also prevents the natural confusion with aggregate review data. Nothing important is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema documents locale with an enum, default, and a detailed explanation of path-prefix behavior, so 100% of parameter semantics are already in the schema. The tool description itself adds no parameter-level detail, but the schema makes that unnecessary. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'WHAT: Short /review redirect to the Google review URL,' naming the exact resource and behavior. It closes with 'Not a list of existing ratings,' which disambiguates it from rating/snippet tools. This is a specific verb-and-resource description that clearly separates it from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'USE when the user wants to leave a review' is an explicit condition for invoking the tool. The negative clause 'Not a list of existing ratings' tells the agent when it is not appropriate. This is clear when/when-not guidance even though no sibling alternative is named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_serp_snippetGet Serp SnippetA
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoIf this starts with http, it is used as the search needle instead of path.
pathNoSite path (/preise) or used with locale to build the www URL to find in llms-serp.txt.
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
matchContextNoSurrounding SERP lines

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds valuable behavioral detail: it searches the first occurrence, returns matchContext with approximate character counts, returns serp_not_found on no match, and describes path-to-www conversion. This goes well beyond the annotation and is not contradicted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with WHAT, and uses clear labels such as RETURNS and 'Not a Google API.' Every clause earns its place, with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the read-only annotation, full schema coverage, and presence of an output schema, the description covers the essential invocation details: required parameter combination, locale behavior, failure return, and output format. An agent has enough context to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds extra meaning by stating that path or url is required in practice, explaining how non-http(s) paths are turned into www(locale, path), and clarifying that url can serve as the search needle. This is useful beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it returns a slice of /llms-serp.txt around the first occurrence of a target URL, including title/description/URL rows. It also explicitly disambiguates from a Google API, making the tool's scope clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives practical guidance like 'path or url required in practice' and a negative exclusion ('Not a Google API'), so usage is partly implied. However, it never names alternative sibling tools or explains when to prefer this over related tools like get_llms_txt or get_sitemap_txt.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_service_areaGet Service AreaA
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
plzNo5-digit German PLZ. First matching place wins (71638 → pattonville). Use slug if you already know it.
nameNoGerman name substring, case-insensitive (e.g. 'Vaihingen'). First includes() match. Prefer slug.
slugNoPreferred. Exact orte slug: pattonville, asperg, bietigheim-bissingen, kornwestheim, … (52). Not 'ludwigsburg' as a catch-all unless that slug exists.
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
latNoWGS84 latitude of THIS place or the office. Unique per slug — never a silent Pattonville fallback. Example Pattonville ≈ 48.863.
lngNoWGS84 longitude of THIS place or the office. Example Pattonville ≈ 9.185.
plzNoGerman postcode. First match wins if several places share a PLZ (e.g. 71638 → pattonville).
urlNowww keyword page https://www.ikeytz.com[/locale]/schluesseldienst-ludwigsburg-{slug}
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
icbmNoICBM 'lat, lng' string (same as google_maps).
kindNoPlace kind from orte SSOT (stadtteil / gemeinde / …).
nameNoGerman place name as on the website.
slugNoURL slug of a service-area place, e.g. pattonville, bietigheim-bissingen, walheim. Matches maps.ikeytz.com/{slug} and www /schluesseldienst-ludwigsburg-{slug}.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
parentNoParent place name when this is a district; else empty/omit.
geo_apiNohttps://maps.ikeytz.com/api/v1/embed/ort/{slug} JSON for the embed.
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
maps_mcpNomaps machine MCP endpoint. www /mcp does not proxy this.
embed_mapNoiframe/src and maps page: https://maps.ikeytz.com/{slug} (German host, no /en/).
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
google_mapsNoPaste-ready 'lat, lng' for Google Maps search (same digits as lat/lng).
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses the exact lookup precedence (slug before plz before substring), case-insensitive matching, the absence of a silent fallback, and the exact unknown-place error shape including ok=false, error=unknown_place, and hint=/einsatzgebiet.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-labeled with WHAT, RETURNS, USE, NOT, and NEXT sections. Every segment carries operational meaning, though some implementation jargon like 'getOrt' and 'ORTE' makes it slightly less crisp than it could be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich input schema, readOnlyHint annotation, and presence of an output schema, the description covers everything needed to invoke correctly: lookup rules, error behavior, return fields, use-case trigger, and a suggested next step. No critical operational gap remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers all four parameters at 100% coverage, so the baseline is 3. The description adds value above the schema by explaining how the parameters interact in the lookup order and by warning about the concrete 'plz 71638 → pattonville' first-match behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with 'WHAT: One service-area place', which states a specific verb, resource, and singular scope. It distinguishes itself from sibling list_service_areas by emphasizing it returns one place, and it explicitly warns against nonexistent verify_zip_code/verify_coordinates tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'USE when the user names a town or PLZ' gives a clear trigger condition. The 'NOT verify_zip_code / verify_coordinates' warning and 'maps MCP is a second machine' note help prevent misrouting, though the description does not explicitly contrast with list_service_areas or other related siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sitemap_txtGet Sitemap TxtA
Read-only
Inspect

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, not here.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of lines to return after offset. Omit or null = return every remaining line in the fetch window (not the whole disk file if the fetch itself truncated). Clamped to 1..10000. For sitemap.txt (~807 URL lines) omit limit to get the full list. For llms-keywords.txt prefer a window; the file is huge.
offsetNo0-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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
pathNoPublic path on www, e.g. /llms.txt or /.well-known/ai.txt
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
limitNoApplied line limit, or null if the caller omitted limit.
whichNoResolved discovery id after alias fold (llms, sitemap-txt, ard, ai-catalog, …).
localeNoLocale actually used for URLs (args.locale or de).
offsetNoApplied 0-based line offset.
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
totalUrlsNohttp(s) lines in the fetched text.
truncatedNotrue if fetch hit a byte cap OR offset+limit left more lines.
nextOffsetNooffset + returnedLines when more lines remain; else null. Pass as the next offset.
totalLinesNoLine count of the fetched text (after byte cap).
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.
returnedUrlsNoLines in this window that start with http(s)://
bytesReturnedNoUTF-8 byte length of the returned body window.
returnedLinesNoHow many lines are in summary/body this call.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true already covering the safety profile, the description adds rich behavioral context: the file is ~807 HTTP lines of known composition ('marketing ×7 + discovery/media'), contains zero maps URLs by deliberate design, and paginates via a nextOffset protocol. Disclosing the intentional absence prevents a common wrong expectation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A compact, front-loaded 'WHAT:' label introduces the fetch target, then delivers size, composition, intentional exclusions, and paging in five short sentences with zero filler. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and both parameters are fully documented in the input schema, so the description only needs to cover resource identity, content, and paging behavior — which it does thoroughly. Nothing an agent needs to select or invoke this tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters well documented in the schema, so the baseline is 3. The description earns the extra point by stating the file is ~807 lines — telling the agent it can safely omit limit to fetch the whole list — and by showing how offset/limit combine with nextOffset for paging.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a 'WHAT:' statement naming the exact resource ('Fetch /sitemap.txt') and anchors it against a known format ('same URL set as sitemap.xml'). The content composition, approximate size, and the explicit note that it contains no maps.ikeytz.com URLs leave no doubt about what this tool returns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tells the agent when not to use this tool ('Contains 0× maps.ikeytz.com (intentional)… Dedicated maps list is on maps.ikeytz.com, not here') and how to page through results ('Use offset/limit + totalUrls + nextOffset to page'). It stops short of naming a specific sibling alternative to switch to, so it earns a 4 rather than a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_wissen_entryGet Wissen EntryA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRequired. Exact Wissen article id from list_wissen.items[].id.
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoArticle id
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
titleNoArticle title
localeNoLocale actually used for URLs (args.locale or de).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses behavioral specifics beyond the readOnlyHint annotation: summary truncation to 500 chars, structuredContent excluding full body, and the wissen_not_found error. These shape agent expectations about response content and failure modes, which is exactly the kind of additive transparency needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Compact label-based structure (WHAT, REQUIRED, summary, structuredContent, NEXT) makes it scannable and front-loaded. Each section earns its place; slightly dense, but efficient for an agent parsing it at runtime.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete for a read-only single-item fetch: output schema covers return structure, annotations cover safety, and description covers truncation, error, and next steps. Minor omission is explaining whether locale affects content language or only URLs, but overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds value by stating id must be an exact list_wissen item id, and clarifies locale prefix/default behavior. Schema coverage is 100%, so the description reinforces rather than compensates, but the error-case and content-shape details are useful semantic additions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the exact resource ('One Wissen article'), the required parameter (id), and the key behavioral aspects upfront. The WHAT/NEXT structure makes it clear this is a single-item retrieval tool, distinguishing it from list_wissen and other get_* siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says id is required and must come from list_wissen.items[].id, and documents the unknown-id error case. It doesn't explicitly contrast with list_wissen or other content getters, but the NEXT fallback (get_ai_page) gives some routing guidance. Slightly more explicit alternative guidance would push this higher.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_auswahlList AuswahlA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
groupsNoAuswahl groups with slugs and URLs
localeNoLocale actually used for URLs (args.locale or de).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true already covering the safety profile, the description adds valuable context beyond the annotation: the return shape (groups[] with id/hash/hubUrl/slugs/urls) and the cross-tool behavioral contract where an unknown slug produces ok=false unknown_auswahl in get_auswahl_item. It does not describe pagination or ordering, but those are minor for a hub listing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The WHAT/RETURNS/USE format is front-loaded and zero-waste: the core purpose comes first, followed by the return contract and the usage routing. Every clause earns its place, and the structure makes scanning trivial for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity tool (one optional param, readOnly annotation, output schema present), the description is complete: it states what it does, what it returns, when to use it, and the downstream failure mode. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the locale parameter's schema description is exceptionally detailed (defaults, URL prefix behavior, what it does not change, maps-locale exclusion). The tool description adds nothing about locale, so the baseline 3 applies — the schema does the heavy lifting, which is acceptable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (list) and resource ('Auswahl hub groups'), anchors it to a concrete endpoint (/auswahl), and differentiates it from the sibling get_auswahl_item by framing this as the slug-discovery counterpart. An agent can tell exactly what this tool does without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit use case ('USE to discover valid slugs for get_auswahl_item') and names the sibling it feeds into, plus the downstream failure contract for unknown slugs. It lacks explicit when-not-to-use exclusions versus other listing/search siblings, but the primary routing logic is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_faqList FaqA
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
itemsNoFAQ ids and questions
localeNoLocale actually used for URLs (args.locale or de).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description adds meaningful behavioral detail: the list contains only id and question, no answers, and is 'Policy/text only'. The warning that euro amounts in answers are SSOT tokens rather than live invoice data provides useful extra context even though answers are not returned by this tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with 'WHAT', and uses 'USE' to signal alternatives. The sentence about euro amounts in answers and the customer-total chain is slightly noisy for a list tool, but it does serve as a routing warning without bloating the description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with one optional, fully documented parameter and an output schema available, the description covers the key points: what is returned, what is excluded, and which sibling tool to use for details. It does not describe ordering or pagination, but these are not essential given the output schema and simple nature of the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the locale parameter is thoroughly documented in the schema with defaults, URL prefix behavior, and exclusions. The tool description itself adds no additional parameter-level semantics, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'WHAT: FAQ question list (id + question, no answers)', which names a specific verb, resource, and scope. It also differentiates the tool from get_faq by explicitly stating that this returns only IDs and questions while get_faq is for individual entries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly names get_faq({id}) or get_faq({q}) as the alternative when a user needs answers, giving clear routing guidance. It also points to a specific chain (get_prices.composition → get_ort_datetime → get_invoice_line_items) for a customer total, effectively saying when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_localesList LocalesA
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
localesNoSeven locales with URL prefix
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals safety, and the description adds valuable behavioral context beyond it: the result is always the same, host behavior is fixed, and maps subdomain returns 404s. This goes beyond the minimal read-only declaration.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and densely informative, using clear labels like WHAT, RETURNS, and USE. Every sentence contributes either return semantics, host rules, or usage guidance, with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With zero parameters and an output schema available, the description fully covers what the agent needs: return fields, prefix formatting, host constraints, a caveat about maps.ikeytz.com, and when to call it. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description reinforces the expected invocation with 'Call with {}', and the schema confirms no arguments are required, so nothing is left ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific operation and resource: listing the seven public HTML locales, and specifies the exact return shape locales[] with id, name, and prefix. It also includes concrete details like the prefix values and host, which distinguishes it from the many sibling list_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says 'USE before resolve_locale_url', giving a direct ordering instruction relative to a sibling. It also provides exclusion context by noting that maps.ikeytz.com has no locales and that the apex host redirects, helping the agent decide when this tool applies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_navList NavA
Read-only
Inspect

WHAT: Curated main-header hubs (not a 1:1 dump of every 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
itemsNoHeader hub links
localeNoLocale actually used for URLs (args.locale or de).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds meaningful behavioral context beyond the annotation: the list is curated rather than exhaustive, it deliberately excludes certain routes and the locale switcher, and each item carries a path, locale URL, and label. This helps set expectations about scope and output shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense yet scannable, using clear labels (WHAT, RETURNS, DOES NOT, USE, NEXT). Every clause adds value: scope, output shape, exclusions, and follow-up actions. There is no filler or duplication of schema information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with a full output schema and a self-documenting locale parameter, the description covers the essential decisions: what is returned, what is excluded, how to use the result, and what to call next. The exclusions also prevent an agent from incorrectly using this tool for /it or /mcp-hub content.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the only parameter (locale) with a detailed description, enum values, defaults, and URL-prefix behavior, so the description does not need to repeat it. The description adds no parameter-specific semantics, but schema coverage is 100%, which meets the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource ('main-header hubs') and explicitly distinguishes itself from a raw dump of every <a> in the header. It enumerates the exact returned items and clearly separates itself from sibling get_* tools by stating which URLs it does not include.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states direct usage ('USE to pick a hub URL') and gives a concrete next step ('NEXT: get_ai_page(path) or get_page_summary(path) for body text'). It does not explicitly contrast with sibling list_* tools or say when NOT to use it, but the exclusions and next-step guidance are sufficient for routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_ratgeberList RatgeberA
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
urlsNoLocale Ratgeber URLs
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
slugsNoRatgeber slugs
localeNoLocale actually used for URLs (args.locale or de).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already establishes safety. The description adds that the result is limited to slugs and locale URLs rather than fulltext, which is useful boundary-setting, but it does not disclose pagination, ordering, or whether all locales are always returned. Adequate but not richly transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two neatly tagged sentences: 'WHAT: ...' and 'USE ...'. There is no filler, the resource is front-loaded, and every phrase contributes either to scope or to downstream usage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, read-only, zero-required-parameter list tool with a detailed schema and an output schema, the description plus inputs are sufficient. It even provides the URL pattern and the follow-up workflow, so an agent can invoke it without missing context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully documents the only parameter, including its default, allowed locales, and URL-prefix behavior. The description itself adds no parameter-level detail, so the baseline 3 applies because the schema carries the burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states what the tool returns: 'All Ratgeber slugs and locale URLs /ratgeber/{slug}.' It names a specific resource, gives the URL pattern, and distinguishes itself from get_ratgeber by pointing to that tool for fulltext access.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly routes the agent onward: 'USE get_ratgeber({slug}) then get_ai_page for fulltext.' This tells the agent when list_ratgeber is appropriate (enumeration of slugs/URLs) and which alternative tools to use for the actual content.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_service_areasList Service AreasA
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
countNoAlways 52 when ok.
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
itemsNoOne object per place; fields = PLACE geo + maps URLs.
localeNoLocale actually used for URLs (args.locale or de).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses the fixed count (52), the exact item fields, the non-verification of live GPS, and the relationship to maps.ikeytz.com. Some extra statements about the sitemap and iframe are cryptic but still add behavioral nuance.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with WHAT/USE/NEXT labels, making it easy to scan. A few asides about the www sitemap and HTML iframe are tangential for an agent deciding to call this tool, but they do not bloat the description significantly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only listing tool with no required parameters, the description plus annotations and output schema cover what the tool returns, when to use it, what it does not do, and how to proceed afterward. Nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description itself does not discuss the locale parameter, but the input schema fully documents locale behavior, defaults, and URL-prefix rules. With 100% schema coverage, the schema carries the parameter-semantics weight, so a baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'WHAT: All 52 service-area places (orte SSOT)' and enumerates the available fields, giving a precise verb, resource, and scope. It also distinguishes itself from get_service_area and maps MCP find_by_geo, so an agent can tell them apart without inspecting schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'USE to pick a slug before get_service_area' and names the alternative path: 'NEXT: get_service_area({slug}) or maps MCP find_by_geo (not this server).' It also states a limitation, 'DOES NOT verify GPS live,' which helps an agent decide when this tool is not sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_servicesList ServicesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
servicesNoCore services with locale URLs
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true, safety is already disclosed. The description adds meaningful behavioral context about what the call returns (the service menu) and the URL pattern (/leistungen#anchor URLs). It does not cover pagination or ordering, but these are not critical for this simple read-only list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every sentence earns its place: WHAT defines content, USE defines purpose, and the final two sentences direct to alternatives. It is compact and front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The annotation, output schema, and parameter schema cover safety and return structure, while the description fills in purpose, content, and routing. Nothing an agent needs to call this tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the locale parameter's schema description is already rich (defaults, path-prefix behavior, examples, exclusions). The description only lightly reinforces locale URL behavior, so it adds no significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb-resource pair: lists the core service list from SITE.services, and offers concrete examples of contents (Türöffnung, Notdienst, Sicherheitstechnik, Schlosswechsel). It also differentiates itself from list_auswahl and get_prices by what each contains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use it ('USE as a menu') and when not to, naming the alternatives list_auswahl/get_auswahl_item for specific situations and get_prices for euro amounts. This gives unambiguous routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_whatsapp_optionsList Whatsapp OptionsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
optionsNoPrefab WhatsApp options with wa.me URLs
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark readOnlyHint=true, and the description adds meaningful behavioral context: these are prefab deep links with no sending, pricing rules are disclosed (49 € = mount only, night/WE/holiday pricing), and there is an explicit caveat never to claim delivery. This goes well beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with WHAT/RETURNS/USE structure, and every sentence provides useful information. Slight deduct for dense shorthand like '10 end-invoices + cylinder_mount (49 €, not night) + beratung' and domain-specific labels that require interpretation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the single optional parameter, present output schema, and readOnly annotation, the description covers the essential selection semantics, return fields, pricing caveats, and downstream usage. Nothing critical is missing for an agent to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the locale parameter is fully documented in the schema, including defaults, path-prefix behavior, and scope limitations. The tool description itself adds no additional parameter-level semantics, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the specific action (list prefab WhatsApp and mailto deep links) and the resource with clear constraints (no send). It further differentiates from related tools by explicitly listing what is NOT included (zugefallen|abgeschlossen|zylinder) and directs the agent to compose_whatsapp/compose_mailto for actual sending.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit next-step guidance: 'USE compose_whatsapp or compose_mailto with id.' It also identifies exclusions (NOT zugefallen|abgeschlossen|zylinder) and states a behavioral rule ('Never claims a message was delivered'), so the agent knows when and how to use this tool correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_wissenList WissenA
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
itemsNoWissen articles id/title/url
localeNoLocale actually used for URLs (args.locale or de).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already communicates the safety profile. The description adds useful context about the result shape (id, title, url with #id), but it does not discuss pagination, sorting, or anything about how the index might change across locales. This is acceptable but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and clearly structured with WHAT and USE prefixes. Every clause earns its place: the result fields, the snippet alternative, and the full-article alternative all contribute without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-optional-parameter, read-only index tool with an output schema, the description plus schema is complete. It supplies the essential return shape, tells the agent where to go for body content and full articles, and does not need to repeat return values already covered by the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers the only parameter, locale, with high detail and a 100% description coverage. The text adds no parameter-specific meaning, so the schema carries this dimension. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Wissen lexicon index' listing (id, title, url with #id). It clearly distinguishes this listing tool from related siblings by saying what it returns and pointing to get_wissen_entry for article bodies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly names alternatives and when to use them: get_wissen_entry for a body snippet, get_ai_page for a full article or opening the hash URL. It does not explicitly say 'use this when you need the index', but that is strongly implied and it effectively excludes the main alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_locale_urlResolve Locale UrlA
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesRequired. 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.
localeYesRequired. Target locale for the rewritten URL.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
pathNoPath without locale prefix
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
toLocaleNoRequested target locale
fromLocaleNoLocale parsed from input path
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations only declare readOnlyHint=true, but the description adds meaningful behavioral detail: no HTML fetching, path/full-URL acceptance, stripping of existing locale prefixes, and the exact return fields. None of this contradicts the read-only annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every sentence earns its place: WHAT, example, accepted input, return value, limitation, and next step are all packed into a compact structured format. The most important behavior is front-loaded and nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only URL transformation tool, the description fully covers input semantics, output fields, limitations, fallback guidance, and a suggested follow-up call. The presence of an output schema further reduces the need to explain return structure in the description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Even though schema coverage is 100%, the description enriches both parameters: it gives a concrete path→URL example, clarifies accepted input formats, explains prefix-stripping behavior, and notes that an invalid locale is still schema-required. This adds real value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action ('Rewrite one marketing path into another locale') and names the exact resource and outcome, reinforced by a concrete example. It is clearly distinct from sibling read/get tools because it transforms a URL rather than fetching content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says what the tool does not do ('DOES NOT translate body text'), points to list_locales when the locale is invalid, and suggests get_ai_page as the next step. This gives an agent practical routing and workflow guidance beyond the schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

site_overviewSite OverviewA
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoHTML 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).de

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue = use summary, canonicalUrl, and extra keys. false = do not invent data; read error + hint and retry with valid args or open hint.
hintNoPresent when ok=false. Absolute URL the agent should open or pass to get_ai_page / get_discovery.
toolYesEcho of the tool name that produced this object (e.g. get_service_area).
errorNoPresent when ok=false. Codes include: unknown_tool, unknown_place, unknown_auswahl, unknown_ratgeber, unknown_doc, unknown_discovery, faq_not_found, wissen_not_found, serp_not_found, q_required, bad_datetime, bad_when_key, plus HTTP errors from fetch.
localeNoLocale actually used for URLs (args.locale or de).
relatedNoAlways includes https://www.ikeytz.com/llms.txt. Geo tools also include https://maps.ikeytz.com/llms.txt.
summaryNoPrimary text for the model. For discovery tools this is the file window (possibly thousands of characters). For list tools a compact one-liner. Quote with attribution.
tradeNameNoPublic trade name
priceRangeNoPrice-range hint for schema
attributionYesRequired citation: 'Quelle: Schlüsseldienst Ludwigsburg ikeytz (ikeytz.com) · ai-train=no · https://www.ikeytz.com/.well-known/ai.txt'
gewerbeNameNoRegistered business name
canonicalUrlNoBest URL to show the user: https://www.ikeytz.com… page, or tel:+49…, mailto:…, https://wa.me/…. Prefer this over constructing URLs.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, it discloses the exact structuredContent fields, the envelope shape with canonicalUrl=home, and the important no-walk-in behavior. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Uses compact labeled sections (WHO/WHAT, RETURNS, USE, DOES NOT, NEXT) that are front-loaded and free of filler. Every clause adds decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with one optional parameter and an output schema, the description covers purpose, return shape, exclusions, and downstream alternatives. Nothing necessary for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole parameter locale is already documented at 100% coverage in the schema, so the description does not need to expand it. It adds no input-parameter meaning beyond the schema's detailed locale behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Identifies the tool as a public brand card for ikeytz and states the exact data it returns (tradeName, gewerbeName, priceRange), with examples of queries it answers. The DOES NOT/NEXT lines distinguish it from siblings like get_prices or get_business_identity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly lists USE conditions ('who ikeytz is, whether there is a shop, opening hours positioning') and exclusions (booking, live quotes, geocoding, form submission, walk-in). It also names sibling tools for follow-ups, making selection unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 6 tool updates
    • Changedget_ai_txt1 field changed
      • changedOutput schema / properties / which / description
        Previous value: -"Resolved discovery id after alias fold (llms, sitemap-txt, ai-catalog, …)."New value: +"Resolved discovery id after alias fold (llms, sitemap-txt, ard, ai-catalog, …)."
    • Changedget_discovery2 fields changed
      • changedInput schema / properties / which / description
        Previous value: -"Required discovery id or alias. Examples: llms, llms-full, llms-mcp-server, llms-mcp-web, sitemap-txt, robots, ai-txt, ai-catalog, auth-md, mcp-readme, llms-orte-geo, llms-urheberrecht. Underscores accepted (llms_full → llms-full). get_ prefix and _txt suffix stripped."New value: +"Required discovery id or alias. Examples: llms, llms-full, 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."
      • changedOutput schema / properties / which / description
        Previous value: -"Resolved discovery id after alias fold (llms, sitemap-txt, ai-catalog, …)."New value: +"Resolved discovery id after alias fold (llms, sitemap-txt, ard, ai-catalog, …)."
    • Changedget_llms_mcp_server1 field changed
      • changedOutput schema / properties / which / description
        Previous value: -"Resolved discovery id after alias fold (llms, sitemap-txt, ai-catalog, …)."New value: +"Resolved discovery id after alias fold (llms, sitemap-txt, ard, ai-catalog, …)."
    • Changedget_llms_mcp_web1 field changed
      • changedOutput schema / properties / which / description
        Previous value: -"Resolved discovery id after alias fold (llms, sitemap-txt, ai-catalog, …)."New value: +"Resolved discovery id after alias fold (llms, sitemap-txt, ard, ai-catalog, …)."
    • Changedget_llms_txt1 field changed
      • changedOutput schema / properties / which / description
        Previous value: -"Resolved discovery id after alias fold (llms, sitemap-txt, ai-catalog, …)."New value: +"Resolved discovery id after alias fold (llms, sitemap-txt, ard, ai-catalog, …)."
    • Changedget_sitemap_txt1 field changed
      • changedOutput schema / properties / which / description
        Previous value: -"Resolved discovery id after alias fold (llms, sitemap-txt, ai-catalog, …)."New value: +"Resolved discovery id after alias fold (llms, sitemap-txt, ard, ai-catalog, …)."
  2. 3 tool updates
    • Changedcompose_mailto11 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / description
        Removed value: -"This tool takes no arguments. Call tools/call with arguments: {}. Extra keys are ignored. Result is always the same public href (tel/mailto) or locale list."
      • addedInput schema / properties / option
        Added value: +{
        +  "description": "Same ids as compose_whatsapp. Omit = beratung template, still a prefab.",
        +  "enum": [
        +    "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",
        +    "zugefallen",
        +    "abgeschlossen",
        +    "zylinder"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / ambiguous
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / amountEur
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / href / description
        Previous value: -"mailto:info@ikeytz.com"New value: +"mailto:info@ikeytz.com?subject=…&body=…"
      • addedOutput schema / properties / isEndInvoice
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / option
        Added value: +{
        +  "description": "Resolved contactOption id",
        +  "type": "string"
        +}
      • addedOutput schema / properties / situationKey
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / subject
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / whenKey
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedcompose_whatsapp8 fields changed
      • changedInput schema / properties / option / description
        Previous value: -"Prefab id. zugefallen=door slammed / lockout; abgeschlossen=locked out; zylinder=cylinder change; beratung=general advice. Omit = first prefab. Unknown id also falls back to first — prefer the enum."New value: +"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."
      • changedInput schema / properties / option / enum
        Previous value: -[
        -  "zugefallen",
        -  "abgeschlossen",
        -  "zylinder",
        -  "beratung"
        -]New value: +[
        +  "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",
        +  "zugefallen",
        +  "abgeschlossen",
        +  "zylinder"
        +]
      • addedOutput schema / properties / ambiguous
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / amountEur
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / isEndInvoice
        Added value: +{
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / option / description
        Previous value: -"Resolved option id"New value: +"Resolved contactOption id"
      • addedOutput schema / properties / situationKey
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / whenKey
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedget_invoice_line_items3 fields changed
      • changedInput schema / properties / whenKey / description
        Previous value: -"day = Mo–Fr 08:00–18:00 Berlin except BW holidays. night = weekend, holiday, or outside those hours. now or omit = live get_ort_datetime (or at=). Do not invent dusk/dawn."New value: +"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."
      • addedOutput schema / properties / contactOption
        Added value: +{
        +  "description": "Prefab id for compose_whatsapp / compose_mailto (opening_slam_day … cylinder_only_night, or cylinder_mount).",
        +  "type": "string"
        +}
      • removedOutput schema / properties / knownSituations
        Removed value: -{
        -  "description": "Valid keys when ok=false",
        -  "type": "array"
        -}
  3. 45 tool updates
    • First observedcompose_mailto
    • First observedcompose_tel_landline
    • First observedcompose_tel_mobile
    • First observedcompose_whatsapp
    • First observedfind_by_keyword
    • First observedget_about
    • First observedget_ai_page
    • First observedget_ai_txt
    • First observedget_auswahl_item
    • First observedget_business_identity
    • First observedget_contact
    • First observedget_discovery
    • First observedget_emergency
    • First observedget_faq
    • First observedget_geo_office
    • First observedget_invoice_line_items
    • First observedget_it
    • First observedget_legal
    • First observedget_links
    • First observedget_llms_mcp_server
    • First observedget_llms_mcp_web
    • First observedget_llms_txt
    • First observedget_mcp_hub
    • First observedget_ort_datetime
    • First observedget_page_summary
    • First observedget_partner_info
    • First observedget_prices
    • First observedget_ratgeber
    • First observedget_review_url
    • First observedget_serp_snippet
    • First observedget_service_area
    • First observedget_sitemap_txt
    • First observedget_wissen_entry
    • First observedlist_auswahl
    • First observedlist_faq
    • First observedlist_footer
    • First observedlist_locales
    • First observedlist_nav
    • First observedlist_ratgeber
    • First observedlist_service_areas
    • First observedlist_services
    • First observedlist_whatsapp_options
    • First observedlist_wissen
    • First observedresolve_locale_url
    • First observedsite_overview

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Free SSL/TLS scanning and Let's Encrypt certificate issuance (private key stays local), plus certificate-expiry monitoring via one MCP server. Public scan and cert tools need no account.
    MIT
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides access to a curated database of over 1,500 MCP tools with quality scores. Enables searching, browsing trending tools by category, discovering random tools, and retrieving detailed information about specific MCP tools.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A3.9/5.0
Disambiguation3/5

Many tools have clearly distinct roles, but there is real overlap: get_discovery duplicates get_llms_txt/get_llms_mcp_server/get_sitemap_txt, get_it and get_mcp_hub describe the same machines, and get_page_summary is a stub that competes with get_ai_page/get_serp_snippet. The detailed descriptions help, but an agent could still misselect among the discovery and pointer tools.

Naming Consistency4/5

The overwhelming majority follow a consistent snake_case verb-noun pattern: get_*, list_*, compose_*, resolve_*. Minor deviations like site_overview, get_it, and find_by_keyword are readable but break the dominant convention.

Tool Count2/5

45 tools for a single small-business website is excessive and well above the 25+ threshold. Many tools are pointer/list aliases or discovery-file accessors that could be consolidated without losing capability.

Completeness4/5

Core workflows are well covered: identity, contact, emergency info, pricing, invoicing, service areas, FAQs, legal pages, and generic page content via get_ai_page. Minor gaps exist around explicit opening-hours details, existing customer reviews, and maps-domain functionality, but these are mostly declared out of scope rather than dead ends.

Resources