FrankKi
Server Details
The agentic layer of letters. Agents send real printed mail worldwide, German compliance built in.
- Status
- Unhealthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- datPascal/frankki-mcp
- GitHub Stars
- 1
- Server Listing
- FrankKi MCP
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4/5 across 72 of 72 tools scored. Lowest: 2.7/5.
Many tools have overlapping purposes, such as letter_design_list vs letterhead_list, letter_preview vs template_preview, and the *_app tools (approval_decide_app, template_status_app, etc.) which are only for interactive cards but are not distinguishable by name alone. An agent would struggle to pick the right tool without reading every description.
Most tools follow a verb_noun snake_case pattern (address_list, approval_submit, order_send), but there are notable deviations: order_einlieferungsbeleg is a German noun phrase, mcp_health starts with a domain prefix rather than a verb, and schedule_list_or_cancel combines two verbs. The mixed German/English terms add inconsistency.
With 72 tools, the server is extremely overloaded. Even for a broad postal/document service, this volume creates significant navigation and selection overhead, and most tools are edge cases or interactive-card helpers that could be consolidated or exposed differently.
The tool surface is exceptionally thorough: address management, sender profiles, wallet operations, letter drafting/previewing/sending, approvals, templates, documents, scheduling, archives, and order recovery are all covered. There are no obvious dead ends; even edge cases like address fixes and post-send cancellation have dedicated tools.
Available Tools
72 toolsaddress_listAdressen auflistenCRead-onlyInspect
Listet die Adressen im Partner-Adressbuch. Optional nach Name, Stadt oder Mandant gefiltert. EN: Lists the addresses in the partner address book. Optionally filtered by name, city or client.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| reasoning | No | ||
| searchQuery | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds the context of listing from the partner address book and optional filter fields, but does not disclose any additional behavioral details such as pagination, default result limits, or how the 'reasoning' parameter behaves. With annotation coverage, a score of 3 is appropriate: the description adds some value but not rich context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of two sentences (one in German and one in English). It front-loads the primary action ('Listet die Adressen') and then mentions optional filters. The bilingual repetition is somewhat redundant but not excessive. It earns a high score for brevity and clarity, though the repetition could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple list operation with three optional parameters and no output schema. The description provides the basic purpose and filter capability but fails to explain the meaning of all parameters (especially 'reasoning' and how 'searchQuery' maps to the mentioned filters). It also does not describe the return format or any pagination behavior. Given the lack of output schema and parameter descriptions, the description is incomplete for an agent to fully understand the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning parameter properties have no descriptions. The description mentions filtering by name, city, or client, but the actual parameters are 'limit', 'reasoning', and 'searchQuery'. There is no mapping of filter fields to 'searchQuery', and 'reasoning' remains entirely unexplained. The description does not adequately compensate for the lack of parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists addresses in the partner address book and optionally filters by name, city, or client. It uses a specific verb (list) and resource (addresses), making the primary purpose obvious. However, it does not explicitly differentiate from the sibling tool 'address_search_company', which likely serves a similar search purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description mentions optional filtering but does not explain scenarios where this tool is preferred over address_search_company or address_upsert. There is no mention of exclusions or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
address_search_companyFirmenadresse suchenARead-onlyInspect
Sucht Firmen und Behörden im Verzeichnis und liefert die passende Versandadresse inklusive Behörden-Postfach. EN: Searches companies and public authorities in the directory and returns the matching mailing address including an authority PO box.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| country | No | ||
| reasoning | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds the detail about returning authority PO boxes but does not disclose any further behavioral traits like rate limits or response structure. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, bilingual, and front-loaded with the core function. No unnecessary words, and the structure is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool, the description covers the main purpose and return value, but lacks elaboration on parameter details, potential multiple results, or error scenarios. Given the annotations and simple schema, it is adequate but not fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the parameters query, country, or reasoning. The parameter names are somewhat self-explanatory, but the description fails to add meaning beyond the schema, leaving the agent to guess formats or usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: searching for companies and public authorities in a directory and returning the matching mailing address, including authority PO boxes. This distinguishes it from siblings like address_list (listing addresses) or address_validate (validating addresses).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for when to use the tool: when you need a mailing address for a company or public authority from the directory. However, it does not explicitly mention alternatives or when not to use it, which is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
address_upsertAdresse speichernAInspect
Legt eine Adresse im Partner-Adressbuch an oder aktualisiert sie. Validiert die Adresse anhand landesspezifischer Regeln. EN: Creates or updates an address in the partner address book. Validates the address using country-specific rules.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | ||
| city | Yes | ||
| name | Yes | ||
| pobox | No | ||
| street | Yes | ||
| company | No | ||
| country | No | ISO-3166-alpha-2, default DE. EN: ISO 3166-1 alpha-2, defaults to DE. | |
| addressId | No | ||
| isDefault | No | ||
| addressType | No | ||
| houseNumber | No | ||
| mandantennummer | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (readOnlyHint false, destructiveHint false). The description adds behavioral context by stating 'Validates the address using country-specific rules,' indicating that invalid addresses may be rejected. It does not, however, disclose behavior around upsert semantics (e.g., addressId handling) or side effects, so it's adequate 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, concise and front-loaded with the core action. The bilingual repetition (German and English) is somewhat redundant, but the structure is clean and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite being a 12-parameter tool with no output schema and minimal annotations, the description is only two sentences. It doesn't explain return values, upsert key behavior (addressId), addressType enum meaning, or when validation fails. The overall package is inadequate for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 8% (only 'country' is described), and the tool description does not compensate. It does not clarify cryptic parameters like 'mandantennummer', 'pobox', 'addressType', or 'isDefault', nor does it explain which fields are required beyond what's in the schema. The description adds no parameter-level guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Creates or updates an address in the partner address book' with a specific verb and resource, distinguishing it from siblings like address_list (listing only) and address_validate (validation only). The validation behavior is mentioned, further clarifying scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly conveys the tool's purpose for creating/updating addresses, but it does not explicitly address when to use this instead of address_validate or address_list. Given there is an address_validate sibling, a direct alternative reference is missing, so not a 5. However, the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
address_validateAdresse prüfenARead-onlyInspect
Prüft eine Adresse anhand landesspezifischer Regeln und meldet harte Fehler als ADDRESS_INVALID. Nur eine Prüfung, das Adressbuch bleibt unverändert; zum Anlegen oder Ändern einer Adresse nimm address_upsert. EN: Validates an address using country-specific rules and reports hard failures as ADDRESS_INVALID. A check only, the address book is left untouched; to create or change an address use address_upsert.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | ||
| city | Yes | ||
| name | Yes | ||
| pobox | No | ||
| street | Yes | ||
| company | No | ||
| country | No | ISO-3166-alpha-2, default DE. EN: ISO 3166-1 alpha-2, defaults to DE. | |
| isDefault | No | ||
| reasoning | No | ||
| addressType | No | ||
| houseNumber | No | ||
| mandantennummer | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds useful context by reinforcing the non-mutating nature ('address book is left untouched') and explaining the error reporting mechanism (hard failures as ADDRESS_INVALID). While it doesn't cover all behavioral aspects, it complements the annotations well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is bilingual and efficiently packs purpose, behavior, and an alternative into two short sentences per language. It is front-loaded with the core function and adds no filler, making every sentence earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and low parameter coverage, the description could be more complete, but it does convey the essential context: the tool is a read-only validation that returns ADDRESS_INVALID on hard failures. It omits details about success responses and parameter semantics, but for a simple validation tool with strong annotations, this covers the main use case adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is very low (8%, only country has a description). The description does not compensate for the 12 parameters; it provides no details on fields like reasoning, mandantennummer, addressType, etc. Users must infer meanings from names alone, which is insufficient for several ambiguous parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: validating an address using country-specific rules and reporting hard failures as ADDRESS_INVALID. It explicitly distinguishes itself from related tools by noting it only performs a check and leaves the address book unchanged, with a direct pointer to address_upsert for modifications.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: 'Nur eine Prüfung' (only a check) and excludes creating/changing addresses, directing users to address_upsert. This is a clear, actionable usage guideline with a named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analytics_summaryAuswertungen abrufenARead-onlyInspect
Liefert die aggregierten Kennzahlen des Partnerkontos: Briefe pro Monat, Kosten pro Mandant zur Weiterberechnung, Laufzeiten bis zur Zustellung, Fehlerquoten und Ausgaben gegen die gesetzten Limits. Betraege sind Netto-Kosten in Cent. EN: Returns the partner account's aggregated metrics: letters per month, cost per mandant for rebilling, transit times to delivery, failure rates, and spend against configured limits. Amounts are net cost in cents.
| Name | Required | Description | Default |
|---|---|---|---|
| topN | No | Anzahl Mandanten in cost_per_mandant, 1 bis 50, Standard 10. EN: Number of mandants in cost_per_mandant, 1 to 50, default 10. | |
| since | No | Zeitraumbeginn fuer cost_per_mandant und delivery_times, zum Beispiel 2026-01-01. Standard: letzte 90 Tage. EN: Range start, for example 2026-01-01. Default: last 90 days. | |
| until | No | Zeitraumende, Standard jetzt. EN: Range end, default now. | |
| metric | No | Welche Auswertung. overview (Standard) fasst die letzten drei Monate zusammen. EN: Which report. overview (default) summarises the last three months. | |
| months | No | Trendlaenge fuer letters_per_month und failure_rates, 1 bis 24, Standard 12. EN: Trend length for letters_per_month and failure_rates, 1 to 24, default 12. | |
| reasoning | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that amounts are net costs in cents and lists the included metric categories, providing interpretative context beyond the annotations. No contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, using two bilingual sentences. The first sentence states the core purpose and lists deliverables; the second adds essential unit information. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose and output categories well. Since there is no output schema, the exact response structure is not described, and the influence of parameters like topN or months on the output is left to the schema. Still, it is fairly complete for an analytics summary tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (83%), with each parameter already described. The description lists the metric categories and unit details but does not add new parameter-level semantics beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Liefert die aggregierten Kennzahlen des Partnerkontos' and enumerates specific metrics, making it clear that this tool returns aggregated account analytics. This distinct purpose is not covered by any sibling tool, so it is well differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for retrieving account metrics, but it does not explicitly state when to use this tool over alternatives or mention exclusions. It provides context but no direct comparison with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approval_decideFreigabe entscheidenADestructiveInspect
Gibt eine wartende Freigabe im Namen des Menschen frei oder lehnt sie ab. WICHTIG: Bevor du hier 'approve' aufrufst, MUSST du dem Menschen (a) den Vorschau-Link (previewUrl) des Briefs, (b) den genauen Gesamtpreis in Euro und (c) die Versandart (z. B. Einschreiben Uebergabe oder Standard) zeigen und seine ausdrueckliche Zustimmung einholen; setze dann user_saw_preview:true. Bei Freigabe per Chat geht der Brief erst nach 10 Minuten raus; bis dahin kann der Mensch ihn stoppen (sage einfach 'stopp', dann rufst du order_cancel auf). Bei Ablehnung bleibt der Brief ein Entwurf und die Reservierung wird zurueckgebucht. EN: Approves or rejects a pending approval on the human's behalf. IMPORTANT: before calling 'approve' here you MUST show the human (a) the preview link (previewUrl) of the letter, (b) the exact total price in euros and (c) the delivery type (e.g. registered mail hand delivery or standard) and obtain their explicit consent; then set user_saw_preview:true. A chat approval dispatches after a 10-minute grace window: the letter goes out then and can be stopped until it does (if the human says 'stop', call order_cancel). On rejection the letter stays a draft and the reservation is refunded.
| Name | Required | Description | Default |
|---|---|---|---|
| comment | No | ||
| decision | Yes | ||
| reasoning | No | ||
| approvalId | Yes | ||
| clientOrderId | No | ||
| user_saw_preview | No | Bestaetigung, dass du dem Menschen die Vorschau-PDF, den genauen Preis und die Versandart gezeigt und seine Zustimmung eingeholt hast. Fuer eine Freigabe erforderlich. EN: Confirmation that you showed the human the preview PDF, the exact price and the delivery type and obtained consent. Required to approve. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint=true), the description discloses the 10-minute dispatch delay, the cancellation path via order_cancel, the draft/refund behavior on rejection, and the mandatory consent gate. This is rich behavioral context that annotations alone do not provide, and there is 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and uses a clear warning structure, but the entire content is repeated in German and English, doubling the length without adding new information. As a result, not every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-complexity decision tool with destructive side effects and no output schema, the description thoroughly covers the required preconditions, the 10-minute grace period, cancellation via order_cancel, and the consequences of rejection. It is sufficient for safe and correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17%, and the description compensates well for the key parameters: it explains user_saw_preview's consent requirement and defines approve/reject semantics (delay vs. draft+refund). It does not elaborate on comment, reasoning, or clientOrderId, but these are optional and reasonably inferable from their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Gibt eine wartende Freigabe ... frei oder lehnt sie ab' (approves or rejects a pending approval). It clearly states the tool's scope, but does not distinguish itself from the sibling 'approval_decide_app', so it lacks explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit procedural guidance: before calling 'approve', the agent MUST show the preview link, exact price, and delivery type, obtain explicit consent, and then set user_saw_preview:true. It also names order_cancel as the alternative for stopping during the 10-minute window and describes rejection behavior. However, it doesn't contrast with approval_decide_app.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approval_decide_appFreigabe auf der Karte entscheidenAInspect
Nur fuer die interaktive Freigabe-Karte: gibt die angezeigte Freigabe frei oder lehnt sie ab, nachdem der Mensch auf der Karte gedrueckt hat. Bei Freigabe geht der Brief erst nach 10 Minuten raus und kann bis dahin gestoppt werden. EN: For the interactive approval card only: approves or rejects the displayed approval after the human pressed the button on the card. On approval the letter goes out after 10 minutes and can be stopped until then.
| Name | Required | Description | Default |
|---|---|---|---|
| decision | Yes | ||
| cardNonce | No | ||
| reasoning | No | ||
| approvalId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnly=false and destructive=false. The description adds valuable behavioral detail: on approval, the letter is sent after 10 minutes and can be stopped until then. This goes beyond the structured annotations, though it does not cover all potential side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description duplicates all content in German and English, roughly doubling the length. Each language part is concise, but the repetition is unnecessary and could be streamlined. The core information is front-loaded in the 'Nur fuer' phrase, but the structure could be tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and moderate complexity (4 params). The description explains the core behavior and the 10-minute delay, but omits parameter semantics and any return behavior. It is functional but leaves gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 4 parameters with 0% description coverage. The description only implies a decision (approve/reject) but does not explain approvalId, cardNonce, or reasoning. This leaves the agent without guidance on how to populate the parameters correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (approves or rejects) and the specific resource (the displayed approval on the interactive card). It also distinguishes itself from the sibling 'approval_decide' by explicitly stating it is for the interactive approval card only.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit context: 'Only for the interactive approval card' and 'after the human pressed the button on the card'. This sets a clear usage condition and implies when not to use the tool, though it does not explicitly name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approval_listFreigaben auflistenARead-onlyInspect
Listet die Freigaben deines Kontos, neueste zuerst, mit einer zeitlich begrenzten PDF-Vorschau, den Kosten, dem Grund und den Fristen. Standardmäßig nur die offenen Freigaben. Über eine der zurückgegebenen approvalIds entscheidest du anschließend mit approval_decide. EN: Lists your account's approvals, newest first, with a time-limited PDF preview, the cost, the reason and the deadlines. Only the pending approvals by default. You then decide on one of the returned approvalIds with approval_decide.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Standard 20, maximal 100. EN: Default 20, maximum 100. | |
| since | No | Nur Freigaben, die seit diesem Zeitpunkt eingereicht wurden (ISO 8601). EN: Only approvals submitted since this time (ISO 8601). | |
| offset | No | Versatz für die Seitennavigation. Standard 0. EN: Offset for pagination. Default 0. | |
| status | No | Standard pending. EN: Default pending. | |
| reasoning | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint, so the description does not need to repeat safety. It adds valuable behavioral details: ordering (newest first), time-limited PDF preview, included fields (cost, reason, deadlines), and default pending filter. This meaningfully complements the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose. The bilingual repetition (German and English) is redundant but not excessive; each clause provides useful information. It is appropriately sized for the content covered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description lists what the response includes (PDF preview, cost, reason, deadlines) and the default filter. It covers the essential behavior for a list tool, with parameters handled by the schema. It is complete enough for the agent to understand what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so the schema already documents most parameter semantics. The description adds only minor context (default pending status aligns with status parameter) but does not elaborate on limit, since, offset, or reasoning. It does not strongly compensate for the undocumented reasoning parameter but remains adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists account approvals with specific details (newest first, PDF preview, cost, reason, deadlines). It distinguishes itself from siblings by explicitly mentioning the follow-up approval_decide tool, making its role in the workflow unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use to list approvals, then decide via approval_decide. It notes the default pending status and implies the status parameter for filtering. While it does not explicitly exclude alternatives like approval_status_app, the workflow guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approval_page_urls_appBildlinks der Freigabe-Karte erneuernARead-onlyInspect
Nur fuer die interaktive Freigabe-Karte: erneuert die zeitlich begrenzten Bildlinks der Briefseiten, wenn die alten abgelaufen sind. EN: For the interactive approval card only: renews the time-limited image links of the letter pages once the old ones have expired.
| Name | Required | Description | Default |
|---|---|---|---|
| approvalId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds valuable context about the time-limited nature of the image links and the expiration condition. It does not contradict the annotations; 'renew' in this context refers to generating fresh URLs rather than mutating persistent data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using two short sentences (German and English) that deliver the essential scope, action, and condition without fluff. It is front-loaded with the key restriction ('Nur fuer...') and follows with the operational trigger.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers what it does, when to use it, and its scope. It does not explicitly describe the return value, but the action implies the output is the renewed image links. Overall, it is sufficiently complete for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the single parameter 'approvalId' is self-explanatory and its purpose is implied by the tool's scope ('approval card'). The description does not explicitly explain the parameter, leaving slight ambiguity, but the parameter name and context are sufficient for basic correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('renew') and resource ('image links of the letter pages'), and explicitly scopes it to the interactive approval card. This clearly differentiates it from sibling tools like letter_page_urls_app and template_page_urls_app by stating 'Nur fuer die interaktive Freigabe-Karte' / 'For the interactive approval card only.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it is only for the interactive approval card and should be used when old time-limited image links have expired. It does not explicitly name alternatives or state when not to use it, but the 'only' constraint and expiration condition give adequate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approval_status_appFreigabestand fuer die Karte lesenARead-onlyInspect
Nur fuer die interaktive Freigabe-Karte: liest den aktuellen Zustand einer Freigabe, damit eine alte Karte den richtigen Endzustand und den Countdown zeigt. EN: For the interactive approval card only: reads the current state of an approval so an old card renders the correct end state and countdown.
| Name | Required | Description | Default |
|---|---|---|---|
| approvalId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description's 'reads' aligns with this. It adds the card-specific context (old card rendering) but no additional behavioral traits such as error handling, authentication requirements, or rate limits. Doesn't contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short bilingual sentences, front-loaded with the core action and scoping. Every word earns its place, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read-only tool with good annotations, the description covers the purpose and specific use case (countdown/end state rendering). It lacks explicit return format details, but given the simplicity and lack of output schema, it's adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 1 required parameter (approvalId) with 0% description coverage. The description does not mention or explain the parameter directly, and while the purpose makes it somewhat obvious, it fails to compensate for the schema gap by clarifying the parameter's role or format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads the current state of an approval (specific verb + resource), and explicitly scopes it to 'the interactive approval card only', distinguishing it from siblings like approval_list or approval_submit. The intended use case (rendering correct end state and countdown on old cards) adds specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Nur fuer die interaktive Freigabe-Karte' ('For the interactive approval card only'), providing a clear usage restriction. It also explains the purpose in context (rendering end state and countdown), though it doesn't explicitly name alternative tools or exclusions beyond the 'only' qualifier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approval_submitZur Freigabe einreichenAInspect
Reicht einen Brief zur menschlichen Freigabe ein, statt ihn sofort zu versenden: prüft Pflichtangaben, Empfänger, AVV und Limits, erstellt die finale PDF, berechnet den Preis, reserviert die Kosten und legt eine Freigabe in der Warteschlange an. Der Versand passiert erst, wenn die zurückgegebene approvalId über approval_decide freigegeben wird. Mit dryRun bleibt es bei der Prüfung: Guthaben und Warteschlange bleiben unberührt. EN: Submits a letter for human approval instead of sending it right away: checks mandatory details, recipient, AVV and limits, creates the final PDF, calculates the price, reserves the cost and adds an approval to the queue. The send only happens once the returned approvalId is approved via approval_decide. With dryRun it stops at the check: balance and queue stay untouched.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | Ohne Angabe wird die Farbe automatisch erkannt. EN: If omitted, colour is detected automatically. | |
| dryRun | No | ||
| reason | No | Kurzer Grund fuer die Freigabe, den die pruefende Person auf der Karte liest. EN: Short reason for the approval, shown to the reviewer on the card. | |
| content | No | ||
| express | No | ||
| subject | No | ||
| auditTag | No | ||
| letterId | No | Bestehender Entwurf. Alternativ den Brief inline angeben. EN: Existing draft. Alternatively provide the letter inline. | |
| reasoning | No | ||
| presetName | No | ||
| templateId | No | ||
| scheduledAt | No | ||
| signatureId | No | ||
| approvalMode | No | ||
| deliveryType | No | Standard standard. EN: Defaults to standard. | |
| maxCostEuros | No | Maximalbetrag in Euro. Liegt der Preis darueber, wird abgebrochen. EN: Maximum amount in euros. If the price is above it, the call is aborted. | |
| recipientZip | No | ||
| clientOrderId | No | Idempotenzschluessel. Ein erneuter Aufruf mit demselben Wert liefert dieselbe Freigabe, statt ein zweites Mal einzureichen. Der Praefix 'approval:' ist reserviert. EN: Idempotency key. A repeat call with the same value returns the same approval instead of submitting a second time. The 'approval:' prefix is reserved. | |
| recipientCity | No | ||
| recipientName | No | ||
| mandantennummer | No | ||
| recipientStreet | No | ||
| senderAddressId | No | ||
| senderProfileId | No | ||
| includeSignature | No | ||
| recipientCompany | No | ||
| recipientCountry | No | ISO-3166-alpha-2, Standard DE. EN: ISO 3166-1 alpha-2, defaults to DE. | |
| requesterContext | No | Zusatzkontext zur einreichenden Person oder zum Anlass. EN: Additional context about the submitter or the occasion. | |
| recipientHouseNumber | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=false, destructiveHint=false, which are minimal. The description goes far beyond by disclosing side effects: it checks mandatory details, recipient, AVV and limits, creates the final PDF, calculates price, reserves costs, and adds an approval to the queue. It also explains dryRun behavior (balance and queue untouched) and that approvalId is returned for later approval. This is rich behavioral context that helps the agent anticipate consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long due to bilingual repetition, but every clause carries meaningful information: the action, the checks, the side effects, and the dryRun behavior. It is front-loaded with the purpose and structurally clear. The length is justified by the tool's complexity, though the German/English duplication makes it less concise than a single-language version.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (29 parameters, no output schema, minimal annotations), the description covers the overall workflow, side effects, and the returned approvalId. It explains the approval lifecycle and dryRun semantics. However, it omits details about return values beyond approvalId, error conditions, what AVV specifically means, and how it relates to draft creation or sending tools. Still, it is substantially more complete than typical for a tool of this size.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low (~28%), so the description must compensate for under-documented parameters. The description does clarify some parameter-related semantics: dryRun stops before reserving costs, maxCostEuros relates to limits, recipient fields to the recipient check, and approvalMode to the approval flow. However, many parameters (e.g., approvalMode, scheduledAt, templateId, signatureId, auditTag, reasoning) remain unexplained, and the description does not map to all parameters. The compensation is partial, not sufficient for 29 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: submitting a letter for human approval instead of sending it immediately. It specifically identifies the resource (letter) and the action (submit for approval), and distinguishes itself from approval_decide by explaining that sending only occurs after approval. This is a specific verb+resource description that also 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool: when a letter needs human approval before sending, and explicitly mentions that sending happens only after approval via approval_decide. It contrasts with immediate sending, indicating a clear alternative context. However, it does not explicitly name alternative tools like order_send or letter_schedule, so the guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_exportArchiv exportierenARead-onlyInspect
Plant einen Archiv-Export (GoBD-CSV, DATEV, PDF-Bundle oder Mandanten-Allokation) für einen Zeitraum ein und liefert eine Job-ID zur Statusabfrage. EN: Schedules an archive export (GoBD CSV, DATEV, PDF bundle or client allocation) for a date range and returns a job ID to query its status.
| Name | Required | Description | Default |
|---|---|---|---|
| since | Yes | ||
| until | Yes | ||
| format | Yes | ||
| target | No | ||
| reasoning | No | ||
| notifyEmail | No | ||
| senderProfileFilter | No | ||
| mandantennummerFilter | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds that this is a scheduling operation returning a job ID rather than executing the export directly. However, it does not disclose potential side effects such as email notifications or file generation, though these are partly covered by the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, one in German and one in English, with no filler or redundant detail. It front-loads the core purpose and returns valuable information concisely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides the essential purpose and return value (job ID), but with 8 parameters and no output schema, it lacks detail on optional filters, target destination, and notification behavior. It is adequate for basic understanding but incomplete for confidently invoking the tool with complex options.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the burden of explaining parameters. It mentions date range and format types (GoBD CSV, DATEV, etc.), but it does not explain the meaning or expected format of 'since', 'until', 'target', 'senderProfileFilter', 'mandantennummerFilter', or 'notifyEmail', leaving most parameters underspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool schedules an archive export, lists the supported formats, and mentions it returns a job ID for status queries. This distinguishes it from the sibling archive_export_status, which is for querying status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this tool to schedule an export for a date range and obtain a job ID. It implicitly distinguishes from the status-checking sibling by mentioning the job ID, but it does not explicitly name alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_export_statusArchiv-Export-Status abrufenARead-onlyInspect
Liefert den Status eines Archiv-Export-Jobs und bei Fertigstellung eine 90 Tage gültige Download-URL. EN: Returns the status of an archive export job and, once complete, a download URL valid for 90 days.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | ||
| reasoning | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, which the description does not contradict. It adds useful behavioral context by specifying the 90-day validity of the download URL and that the URL is provided only upon completion, which goes beyond the basic annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is bilingual but compact, with two sentences conveying purpose, the asynchronous nature, and the URL validity. Every word contributes meaningful information, and the key details are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description gives a high-level summary of return values (status and download URL) but lacks details on possible statuses, error handling, or what happens if the job is not complete. It is adequate for basic understanding but leaves gaps in fully predicting behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does not mention jobId (though likely inferable from name and context) or the optional 'reasoning' parameter at all. Given the low coverage and lack of explanation, the description adds minimal value for parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'returns the status of an archive export job' and adds the key detail of a 90-day download URL upon completion. This specific verb+resource combination distinguishes it from sibling archive_export and other tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that this tool is for checking archive export job status. It does not explicitly exclude other uses or name alternatives, but the pairing with archive_export is obvious from the name and sibling list, giving sufficient guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
attachment_upload_imageBild-Anhang hochladenAInspect
Lädt ein Bild (PNG/JPEG) als Anhang zu einem Partner-Brief hoch. Das Bild wird serverseitig auf eine A4-PDF-Seite skaliert (optional gedreht) und wie ein PDF gespeichert. Prüft vor dem Speichern die zusammengeführte Seitenzahl (max. 30 Seiten). Die EXIF-Orientierung wird automatisch in die Pixel eingerechnet, ein Handyfoto steht also von selbst aufrecht. rotation wirkt zusätzlich dazu: lass es auf 0, außer du willst das Bild bewusst weiterdrehen. EN: Uploads an image (PNG/JPEG) as an attachment to a partner letter. The image is scaled to an A4 PDF page server-side (optionally rotated) and stored like a PDF. Before saving, it checks the merged page count (max. 30 pages). EXIF orientation is applied to the pixels automatically, so a phone photo is upright by itself. rotation applies on top of that: leave it at 0 unless you deliberately want to turn the image further.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| imageUrl | No | Öffentliche URL des Bildes (Alternative zu imageBase64). EN: Public URL of the image (alternative to imageBase64). | |
| letterId | Yes | ||
| position | No | ||
| rotation | No | Zusätzliche Drehung in Grad, im Uhrzeigersinn. Die EXIF-Orientierung des Bildes wird bereits automatisch in die Pixel eingerechnet, das Bild steht also von sich aus richtig. Dieser Wert dreht es danach ein zweites Mal. Für ein Handyfoto ist deshalb 0 richtig. EN: Additional clockwise rotation in degrees. The image's EXIF orientation is already baked into the pixels automatically, so the image is upright on its own. This value turns it a second time on top of that. For a phone photo, 0 is therefore the correct value. | |
| reasoning | No | ||
| imageBase64 | No | Bild als Base64 (Alternative zu imageUrl). EN: Image as Base64 (alternative to imageUrl). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate mutation (readOnlyHint=false), so the description adds valuable context: server-side scaling to A4, merged page count check (max 30), automatic EXIF orientation application, and rotation behavior. These behaviors go beyond the annotations and help predict side effects. However, it does not disclose error handling when the page limit is exceeded or any auth requirements, preventing a perfect score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, but the bilingual repetition (German and English) doubles the length without adding unique value. Despite this redundancy, it remains readable and every key behavior is covered without excessive verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and 7 parameters, the description explains the main processing flow but lacks details on return values, error conditions (e.g., page limit exceeded, invalid image source), and prerequisites (e.g., letter existence or permissions). It is adequate for a basic understanding but leaves important operational gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 43%, so the description must compensate. It provides significant extra meaning for the rotation parameter by explaining that EXIF orientation is already baked in and rotation applies on top, which is crucial. However, it does not elaborate on title, position, reasoning, or the imageUrl/imageBase64 alternative beyond what the schema already states, leaving gaps for less obvious parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action (upload image) and resource (partner letter), and differentiates from sibling tools like attachment_upload_pdf by specifying that images (PNG/JPEG) are converted to PDF pages. The verb 'Lädt ... hoch' is explicit and the scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (uploading images to letters) and provides guidance on the rotation parameter ('leave it at 0 unless you deliberately want to turn the image further'), but does not explicitly state when to prefer this over attachment_upload_pdf or mention exclusions. No explicit alternative is named, so it is below the 'clear context with alternatives' level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
attachment_upload_pdfPDF-Anhang hochladenAInspect
Lädt ein PDF als Anhang zu einem Partner-Brief hoch. Prüft vor dem Speichern die Dateigröße (max. 50 MB) und die zusammengeführte Seitenzahl (max. 30 Seiten inkl. Brief und übriger Anhänge). EN: Uploads a PDF as an attachment to a partner letter. Before saving, it checks the file size (max. 50 MB) and the merged page count (max. 30 pages including the letter and other attachments).
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| pdfUrl | No | Öffentliche URL des PDF (Alternative zu pdfBase64). EN: Public URL of the PDF (alternative to pdfBase64). | |
| letterId | Yes | ||
| position | No | ||
| pdfBase64 | No | PDF als Base64 (Alternative zu pdfUrl). EN: PDF as Base64 (alternative to pdfUrl). | |
| reasoning | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations indicate the tool is not read-only and not destructive. The description adds valuable behavioral context beyond annotations by disclosing pre-save validation checks: file size (max 50 MB) and merged page count (max 30 pages including letter and other attachments). This informs the agent of potential failure conditions and sets expectations for what the tool will reject.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is bilingual but remains concise, with each language version providing the same core action and validation constraints. The first sentence states the purpose, the second adds critical limits, making it well-structured and front-loaded without redundancy or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 6 parameters, no output schema, and only 33% schema description coverage. While the description covers the main upload action and validation limits, it omits meanings for parameters like title, position, reasoning, and the mutual exclusivity of pdfUrl/pdfBase64. It also does not mention any return value or success/failure indicators. Overall, the description is adequate for understanding the general purpose but incomplete for full operational usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (2 of 6 parameters have descriptions). The tool description does not compensate by explaining the remaining parameters (title, letterId, position, reasoning) or clarify that exactly one of pdfUrl/pdfBase64 is required. It adds no parameter-specific semantics, leaving a significant gap for the low-coverage fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's function: 'Lädt ein PDF als Anhang zu einem Partner-Brief hoch' (uploads a PDF as an attachment to a partner letter). It is specific with a verb and resource, and it distinguishes itself from sibling tools like 'attachment_upload_image' by specifying PDF and partner letter context. The extra validation details further clarify the exact operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that this tool is for uploading PDF attachments to partner letters, with specific constraints (file size, page count). However, it does not explicitly mention alternatives or exclusionary guidance, such as 'for images use attachment_upload_image' or 'do not use for other file types'. Thus it lacks explicit when-not-to-use instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
brand_import_from_websiteMarke von der Website uebernehmenAInspect
Liest eine oeffentliche Firmenwebsite aus und schlaegt daraus ein Briefkopf-Design vor: Markenfarben, Hausschriftzuordnung, Logo-Kandidaten und Firmendaten aus dem Impressum. Die gefundenen Logos werden als Design-Assets im Konto gespeichert, damit du sie sofort verwenden kannst. Das Ergebnis ist ein Vorschlag zur Abstimmung mit der Kundin oder dem Kunden; uebernommen wird die Marke erst durch einen anschliessenden Aufruf von brand_kit_save mit brandingOwnershipConfirmed. Suche technisch nach brand_import_from_website. EN: Reads a public company website and proposes a letterhead design from it: brand colours, a mapped house typeface, logo candidates and company details from the imprint. Found logos are stored as design assets in the account so you can use them right away. The result is a proposal to review with the customer; the brand is adopted by a following brand_kit_save call carrying brandingOwnershipConfirmed. Search technically for brand_import_from_website.
| Name | Required | Description | Default |
|---|---|---|---|
| reasoning | No | Kurze Begruendung fuer das Audit-Protokoll. EN: Short rationale for the audit log. | |
| websiteUrl | Yes | Oeffentliche Adresse der Firmenwebsite, zum Beispiel https://beispiel.de. EN: Public company website address. | |
| maxLogoCandidates | No | Wie viele Logo-Kandidaten heruntergeladen und gespeichert werden. Standard 3. EN: How many logo candidates get downloaded and stored. Default 3. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that found logos are stored as design assets in the account (a write side effect), and that the result is only a proposal until brand_kit_save is called. This goes beyond the annotations, which only set readOnlyHint=false, and provides clear behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is unnecessarily long and repetitive, including full German and English versions plus a redundant 'Suche technisch nach brand_import_from_website'. The duplication and meta-instruction waste space and reduce clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description adequately explains the outcome (a proposal to review) and the required follow-up (brand_kit_save). It covers side effects and website accessibility, but could further clarify return value structure or edge cases like no logos found.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions already cover all 100% of parameters, so baseline is 3. The description adds no new param-level details, though the mention of 'Logo-Kandidaten' indirectly relates to maxLogoCandidates without adding syntax or additional meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads a public company website and proposes a letterhead design, listing specific outputs (brand colors, typeface, logo candidates, company details). It differentiates from siblings like brand_kit_save by emphasizing the website import and proposal nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides workflow guidance: result is a proposal for customer review, and the brand is only adopted via a subsequent brand_kit_save call with brandingOwnershipConfirmed. It implies when to use, though it doesn't explicitly mention alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
brand_kit_getBriefkopf & Marke abrufenARead-onlyInspect
Liest die gespeicherten Markenwerte fuer das nutzerseitige Ergebnis Briefkopf & Marke. Liefert Logo-Referenzen, Farben und Schrift fuer die weitere Gestaltung mit letter_design_preview und letter_design_save. Suche technisch nach brand_kit_get. EN: Reads the saved brand values for the user-facing result letterhead and brand. Returns logo references, colours and font for further work with letter_design_preview and letter_design_save.
| Name | Required | Description | Default |
|---|---|---|---|
| reasoning | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only nature is confirmed. The description adds the return payload (logo references, colours, font), which is useful, but it does not disclose any additional behavioral traits such as data freshness, caching, or permissions. This is adequate given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is duplicated in German and English, which doubles its length without adding information, and includes an extraneous sentence 'Suche technisch nach brand_kit_get.' It is not overly long but contains redundant and confusing elements that prevent it from being tightly structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 no output schema, the description explains what is returned (logos, colors, font) and its place in the design workflow. It does not cover error cases or the reasoning parameter, but the overall context is complete enough for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'reasoning' has no description in the schema (0% coverage) and is not mentioned in the tool description. The agent is left to infer its purpose from the name alone. While the parameter is optional, the description does nothing to clarify its meaning or usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action (Liest/Reads), the resource (saved brand values for Briefkopf & Marke), and the specific outputs (logo references, colours, font). It distinguishes itself from siblings by positioning it as the retrieval step before letter_design_preview and letter_design_save.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states that the returned brand values are 'fuer die weitere Gestaltung mit letter_design_preview und letter_design_save', giving a clear usage context. It does not explicitly list exclusions or alternatives, but the workflow hint is sufficient for a read-only tool with an obvious save counterpart (brand_kit_save).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
brand_kit_saveBriefkopf & Marke speichernAInspect
Speichert Logo-Referenzen, Farben und Schrift fuer das nutzerseitige Ergebnis Briefkopf & Marke. brandingOwnershipConfirmed muss true sein und bestaetigt die Nutzungsrechte an den angegebenen Marken-Assets. Die Antwort enthaelt den gespeicherten Stand und den Prueflink. Suche technisch nach brand_kit_save. EN: Saves logo references, colours and font for the user-facing result letterhead and brand. brandingOwnershipConfirmed must be true and confirms the usage rights for the supplied brand assets. The response includes the saved state and review link.
| Name | Required | Description | Default |
|---|---|---|---|
| brandKit | Yes | ||
| reasoning | No | ||
| brandingOwnershipConfirmed | Yes | Bestaetigt die Nutzungsrechte an Logo und eigener Schrift. Muss true sein. EN: Confirms usage rights for the logo and custom font. Must be true. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that ownership confirmation is mandatory and that the response contains the saved state and review link, adding context beyond the annotations. It does not disclose whether the operation overwrites existing data or what permissions are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The bilingual German/English repetition doubles length, and the sentence 'Suche technisch nach brand_kit_save' is unnecessary meta-commentary. The core information is present but could be expressed more efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description gives useful return info (saved state and review link) and the required validation flag. Yet it omits the 'reasoning' parameter and any error or overwrite semantics, so it is only minimally complete for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
It adds meaning to the brandKit parameter by explaining it contains logo references, colors, and font, and clarifies brandingOwnershipConfirmed's purpose. However, it does not mention the optional 'reasoning' parameter, and schema coverage is low at 33%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool saves logo references, colors, and font for the user-facing letterhead/brand result, distinguishing it from sibling tools like brand_kit_get (retrieve). The verb 'Saves/Speichert' and resource are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for use (saving brand kit for letterhead) and explicitly requires brandingOwnershipConfirmed to be true as a precondition. However, it does not explicitly mention alternatives or 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.
document_createBeleg erstellenAInspect
Erzeugt aus strukturierten Belegdaten ein fertiges Dokument und legt es als Briefentwurf an: FrankKi rechnet Positionen, Netto, USt-Sätze und Brutto nach, prüft die Pflichtangaben nach § 14 UStG, vergibt auf Wunsch die Belegnummer aus deinem Nummernkreis und setzt alles im DIN-5008-Layout mit deinem Briefdesign. Der Entwurf bleibt kostenfrei liegen, bis du ihn versendest. Alle Beträge in ganzen Cent. Kompaktes Beispiel: {"document":{"documentType":"rechnung","documentNumber":"RE-2026-014","documentDate":"2026-07-30","leistungszeitraum":{"von":"2026-06-01","bis":"2026-06-30"},"zahlungszielTage":14,"lineItems":[{"description":"Beratung Juni","quantity":4,"unit":"Std","unitPriceCents":12000,"ustRate":19,"lineNetCents":48000}],"totals":{"nettoCents":48000,"ustLines":[{"rate":19,"netCents":48000,"ustCents":9120}],"bruttoCents":57120}},"recipientAddressId":"…"} Nächster Schritt mit der zurückgegebenen letterId: order_send versendet den Brief, approval_submit legt ihn stattdessen einem Menschen zur Freigabe vor, letter_schedule versendet ihn später. EN: Turns a structured billing payload into a finished document and stores it as a letter draft: FrankKi re-computes line items, net, VAT rates and gross, checks the mandatory details under § 14 UStG, optionally draws the document number from your sequence, and typesets everything in the DIN 5008 layout with your letter design. The draft stays free of charge until you send it. All amounts in integer cents. Compact example: {"document":{"documentType":"rechnung","documentNumber":"RE-2026-014","documentDate":"2026-07-30","leistungszeitraum":{"von":"2026-06-01","bis":"2026-06-30"},"zahlungszielTage":14,"lineItems":[{"description":"Beratung Juni","quantity":4,"unit":"Std","unitPriceCents":12000,"ustRate":19,"lineNetCents":48000}],"totals":{"nettoCents":48000,"ustLines":[{"rate":19,"netCents":48000,"ustCents":9120}],"bruttoCents":57120}},"recipientAddressId":"…"} Next step with the returned letterId: order_send sends the letter, approval_submit puts it in front of a human for approval instead, letter_schedule sends it later.
| Name | Required | Description | Default |
|---|---|---|---|
| subject | No | Betreff des Briefs. Ohne Angabe setzt FrankKi ihn aus Dokumentart und Belegnummer, z. B. 'Rechnung RE-2026-014'. EN: letter subject. If omitted FrankKi builds it from the document type and number. | |
| designId | No | ||
| document | Yes | Die Belegdaten. Alle Betraege in ganzen Cent. Du lieferst die Summen, FrankKi rechnet sie nach und lehnt Abweichungen ab. EN: the document payload. All amounts in integer cents. You supply the sums, FrankKi re-computes them and rejects mismatches. | |
| language | No | Standard de. EN: defaults to de. | |
| reasoning | No | ||
| reference | No | ||
| signatureId | No | ||
| sequenceScope | No | ||
| clientLetterId | No | Idempotenzschluessel fuer den Briefentwurf. EN: idempotency key for the letter draft. | |
| mandantennummer | No | Mandant, dem das Dokument zugeordnet wird. Nur Zuordnung fuer Liste und Auswertung. EN: client this document is filed under. Filing only. | |
| senderAddressId | No | ||
| senderProfileId | No | Absenderprofil, aus dem die Pflichtangaben (USt-IdNr oder Steuernummer) gelesen werden. Ohne Angabe gilt dein Standardprofil. EN: sender profile the mandatory tax details are read from. Defaults to your default profile. | |
| includeSignature | No | ||
| recipientAddressId | No | Empfaenger aus deinem Adressbuch (address_list / mandant_search liefern die id). Entweder das oder recipientAddressInline. EN: recipient from your address book. Either this or recipientAddressInline. | |
| recipientAddressInline | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=false, destructiveHint=false), the description adds important behavioral context: drafts remain free until sent, FrankKi re-computes and validates amounts, and the document is set in a specific layout. It also mentions the returned letterId. No contradictions 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is excessively long due to full bilingual repetition and a large inline example. The opening sentence is clear, but the overall size is inflated and not every sentence earns its place, affecting conciseness and efficient token use.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with nested objects and no output schema, the description covers the core behavior, validation, numbering, layout, and next steps. It is fairly complete but lacks explicit error behavior or what happens on validation failure, and does not describe all parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The compact example and the 'all amounts in integer cents' note add valuable meaning beyond the schema. However, with schema description coverage at only 47%, many top-level parameters (designId, signatureId, includeSignature) remain unexplained in the description, so it only partially compensates for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a finished document from structured billing data and stores it as a letter draft, with specific actions like recomputing amounts, checking §14 UStG, and drawing document numbers. This distinguishes it from siblings like letter_create_draft by emphasizing billing validation and document generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context implies usage for billing documents (invoices, reminders, dunning) and provides next-step workflow guidance (order_send, approval_submit, letter_schedule), but it does not explicitly name alternatives or state when not to use this tool. It is clear but not explicit about exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
document_getBeleg abrufenARead-onlyInspect
Liefert ein Dokument mit allen Belegdaten (Positionen, Summen, USt-Sätze, Bezug) sowie letterId und orderId des Briefs, in dem es steckt. Das Feld referencePrefill enthält den fertigen references-Block für einen Folgebeleg: übernimm ihn unverändert als document.references in ein document_create für Mahnung, Zahlungserinnerung oder Gutschrift. Unter exports liefert FrankKi für versendete Rechnungen und Gutschriften signierte Download-Links: zugferdPdfUrl ist ein PDF/A-3 mit eingebetteter EN-16931-XML (ZUGFeRD), xrechnungXmlUrl die reine XRechnung-XML. Beide sind zum Herunterladen und Archivieren gedacht; die Übermittlung an ein Portal bleibt bei dir. Fehlt ein Export, nennt das Feld den Grund: DOCUMENT_EXPORT_NOT_READY heisst später erneut versuchen (Versand oder Freischaltung stehen noch aus), DOCUMENT_EXPORT_NOT_SUPPORTED heisst dauerhaft (der Export gilt für Rechnungen und Gutschriften; bei Mahnung und Zahlungserinnerung nutze die Rechnung, auf die sie sich beziehen). Nächster Schritt: order_status verfolgt den Versand, document_create legt mit references eine Mahnung oder Gutschrift dazu an. EN: Returns one document with its full payload (line items, totals, VAT rates, reference) plus the letterId and orderId of the letter it lives in. The field referencePrefill carries the ready-made references block for a follow-up document: paste it unchanged into document.references of a document_create for a dunning letter, payment reminder or credit note. Under exports FrankKi returns signed download links for sent invoices and credit notes: zugferdPdfUrl is a PDF/A-3 with embedded EN 16931 XML (ZUGFeRD), xrechnungXmlUrl the pure XRechnung XML. Both are download-only; transmitting an e-invoice to a portal stays with you. When an export is missing the slot names the reason: DOCUMENT_EXPORT_NOT_READY means try again later (the send or the activation is still pending), DOCUMENT_EXPORT_NOT_SUPPORTED means permanently (the export covers invoices and credit notes; for a dunning letter or payment reminder use the invoice they refer to). Next step: order_status tracks the send, document_create creates a dunning letter or credit note via references.
| Name | Required | Description | Default |
|---|---|---|---|
| reasoning | No | ||
| documentId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. The description adds substantial behavioral context: referencePrefill is meant to be pasted unchanged, exports are signed download links only, and error reasons (DOCUMENT_EXPORT_NOT_READY vs NOT_SUPPORTED) are explained. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, but it is very long and duplicates the entire content in German and English. Every sentence does not earn its place due to the bilingual repetition, making it about twice as long as necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the full burden of explaining return values. It does so exhaustively: referencePrefill usage, export formats (ZUGFeRD, XRechnung), download-only semantics, error reasons, and next steps. This makes the tool's behavior highly predictable for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema contains documentId and reasoning, but the description never mentions either parameter. With 0% schema description coverage, the description should have compensated by explaining what documentId refers to, but it only implies it through the word 'document'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: it returns one document with full payload, including line items, totals, VAT rates, and reference, plus letterId and orderId. This is specific and distinguishes it from siblings like document_list and document_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides recommended follow-up actions (order_status, document_create) and explains when exports are not available, thus implying when this tool is the right choice for retrieving a document with follow-up context. However, it does not explicitly contrast with other retrieval tools like document_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
document_listBelege auflistenARead-onlyInspect
Listet deine erzeugten Dokumente (Rechnung, Zahlungserinnerung, Mahnung, Gutschrift), neueste zuerst, gefiltert nach Art, Mandant, Empfänger oder Bezugsbeleg. Nächster Schritt: document_get liefert die vollständigen Belegdaten, document_create legt mit references einen Folgebeleg dazu an. EN: Lists the documents you created (invoice, payment reminder, dunning letter, credit note), newest first, filtered by type, client, recipient or referenced document. Next step: document_get returns the full payload, document_create creates a follow-up document via references.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Standard 20, maximal 100. EN: default 20, maximum 100. | |
| since | No | ||
| offset | No | Versatz für die Seitennavigation. Standard 0. EN: offset for pagination. Default 0. | |
| reasoning | No | ||
| documentType | No | ||
| recipientQuery | No | Freitext über Name, Firma oder Ort des Empfängers. EN: free text over the recipient name, company or city. | |
| mandantennummer | No | ||
| referencesNumber | No | ||
| referencesDocumentId | No | Nur Dokumente, die sich auf dieses FrankKi-Dokument beziehen (z. B. alle Mahnungen zu einer Rechnung). EN: only documents referring to this FrankKi document (for example every dunning letter for one invoice). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal a read-only, non-destructive operation. The description adds useful behavioral details beyond that: 'neueste zuerst' (newest first) and 'deine erzeugten' (documents you created) scope, plus filtering dimensions. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the action and scope. The bilingual repetition is somewhat redundant but acceptable. Every sentence provides useful information, no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with 9 parameters and no output schema, the description is decent but incomplete. It hints that document_get returns the full payload, implying this list returns partial data, but it does not describe the return structure, pagination behavior, or the meaning of 'since' and 'reasoning'. More detail would be needed for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 44%, so the description must compensate. It explains filter parameters (Art, Mandant, Empfänger, Bezugsbeleg) at a high level, but leaves 'since', 'offset', and 'reasoning' unexplained. Limit/offset are partially covered by schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists user-created documents with specific types (invoice, payment reminder, dunning letter, credit note), newest first, with filter dimensions. It explicitly distinguishes from document_get (full payload) and document_create (follow-up), satisfying the differentiation criterion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear usage context: lists documents you created, filtered by specific criteria, and names next-step tools (document_get, document_create). However, it does not explicitly exclude letters or other sibling tools like letter_list, though the scope is implicitly limited to financial document types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letter_create_draftBriefentwurf anlegenAInspect
Legt einen Briefentwurf an: erstellt eine Vorschau-PDF im hinterlegten Briefdesign (nur der Brieftext), speichert den Entwurf und liefert eine Seitenzahl, einen Vorschau-Link (24 Stunden gültig) und eine unverbindliche Kostenvorschau. Der Entwurf bleibt kostenfrei liegen, bis du ihn versendest. Der Brieftext ist entweder content (Fliesstext) ODER blocks (strukturiert: Tabellen, Ueberschriften, Summenzeilen), genau eines von beiden. Kompaktes blocks-Beispiel: {"blocks":[{"type":"heading","text":"Rechnung"},{"type":"table","columns":[{"key":"text","label":"Artikel","width":"grow"},{"key":"sum","label":"Summe","align":"right","format":"eur"}],"rows":[{"text":"Beratung","sum":32000}]},{"type":"totals","lines":[{"label":"Gesamt","amountCents":32000,"emphasis":true}]}]} Volle Referenz inkl. styleDefs und Limits: MCP-Ressource frankki://blocks-guide. Die ersten Seiten kommen als Bild zurück: sieh sie dir an, bevor du versendest, und prüfe Betreff, Anschrift im Adressfenster, Absender, Datum und Umbrüche. Gemeldete Auffälligkeiten stehen in warnings. Findest du einen Fehler, korrigiere ihn und lege den Entwurf neu an, solange er noch Entwurf ist: gedruckt geht der Brief endgültig raus. Nächster Schritt mit der zurückgegebenen letterId: letter_preview zeigt den Entwurf als Bild zum Nachbessern, order_send versendet ihn, letter_schedule versendet ihn zu einem späteren Zeitpunkt. EN: Creates a letter draft: produces a preview PDF in the stored letter design (letter body only), stores the draft and returns a page count, a preview link (valid for 24 hours) and a non-binding cost estimate. The draft stays free of charge until you send it. The body is either content (plain text) OR blocks (structured: tables, headings, totals lines), exactly one of the two. Compact blocks example: {"blocks":[{"type":"heading","text":"Rechnung"},{"type":"table","columns":[{"key":"text","label":"Artikel","width":"grow"},{"key":"sum","label":"Summe","align":"right","format":"eur"}],"rows":[{"text":"Beratung","sum":32000}]},{"type":"totals","lines":[{"label":"Gesamt","amountCents":32000,"emphasis":true}]}]} Full reference incl. styleDefs and limits: MCP resource frankki://blocks-guide. The first pages come back as images: look at them before sending and check the subject, the address inside the address window, sender, date and line breaks. Reported findings are in warnings. If you find a defect, fix it and create the draft again while it is still a draft: once printed, the letter is out for good. Next step with the returned letterId: letter_preview shows the draft as an image to refine it, order_send sends the draft, letter_schedule sends it at a later time.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | Strukturierter Briefinhalt als typisierte Bloecke (Alternative zu content, nie beides). Limits: 200 Bloecke, 100 Zeilen/Tabelle, 20 Spalten, 2000 Zeichen/Zelle, 10 Bilder, 262144 Bytes. EN: structured letter content as typed blocks (alternative to content, never both). Jeder Block braucht type; erlaubte Typen: paragraph, heading, keyValue, checkboxRow, fillLine, table, totals, columns, box, image, spacer, pageBreak. Die vollstaendige Feldreferenz liegt in der MCP-Ressource frankki://blocks-guide. EN: every block needs type; read frankki://blocks-guide for the complete field reference. | |
| content | No | Brieftext als Fliesstext. Entweder content ODER blocks, nie beides. EN: letter body as plain text. Either content OR blocks, never both. | |
| subject | Yes | ||
| designId | No | Ein gespeichertes Briefdesign fuer diesen Brief verwenden. Es wird bereits in der Vorschau-PDF gerendert und am Entwurf gespeichert, sodass ein spaeterer Versand ueber die letterId es uebernimmt (ausser der Versand nennt selbst ein Design). Ohne Angabe gilt das Standard-Design des Absenderprofils, in der Vorschau wie beim Versand. EN: Use a saved letter design for this letter. It is already rendered into the preview PDF and stored on the draft so a later send by letterId inherits it (unless the send names its own design). If omitted, the sender profile default design applies, in the preview as well as on send. | |
| language | No | Standard de. EN: Defaults to de. | |
| reasoning | No | ||
| reference | No | Werte fuer diesen Brief (Vorgangsnummer, Ihr Zeichen, Kundennummer, QR-Parameter ...). Sie fuellen den Infoblock und den Barcode. EN: Per-letter values (Vorgangsnummer, your reference, customer number, QR parameters ...). They fill the info block and the barcode. | |
| styleDefs | No | Benannte Stile fuer das ganze Dokument (max. 24). Bloecke referenzieren sie ueber style. EN: named document styles (max 24); blocks reference them via style. Vollstaendige Stilfelder: frankki://blocks-guide. EN: complete style fields: frankki://blocks-guide. | |
| presetName | No | ||
| signatureId | No | Eine bestimmte gespeicherte Unterschrift verwenden statt der zuerst hinterlegten. EN: Use a specific stored signature instead of the first one on file. | |
| clientLetterId | No | Idempotenzschluessel. Ein erneuter Aufruf mit demselben Wert UND derselben Nutzlast liefert denselben Entwurf, statt einen zweiten anzulegen. Fuer einen anderen Brief brauchst du einen neuen Schluessel: derselbe Schluessel mit anderem Inhalt wird mit IDEMPOTENCY_CONFLICT abgelehnt, damit du keinen Brief fuer angelegt haeltst, den es nicht gibt. EN: Idempotency key. A repeat call with the same value AND the same payload returns the same draft instead of creating a second one. A different letter needs a new key: the same key with different content is refused with IDEMPOTENCY_CONFLICT, so you never believe a letter exists that does not. | |
| senderAddressId | No | ||
| senderProfileId | No | Absenderprofil, mit dem spaeter versendet wird. Fuer die Vorschau zaehlt daraus nur das Standard-Briefdesign. EN: Sender profile the letter will later be sent with. For the preview only its default letter design is used. | |
| includeSignature | No | Hinterlegte Unterschrift unter den Brieftext setzen. Standard aus, wie beim Versand. EN: Place the stored signature under the letter text. Off by default, same as on send. | |
| recipientAddressInline | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which only say readOnly=false, destructive=false), the description thoroughly discloses behavior: it creates and stores a draft, generates a preview PDF, returns a 24h preview link, delivers warnings, returns images for checking, and clarifies that paid/print is final. This is far more transparent than the annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and logically organized, but the full German content is repeated in English, doubling the length unnecessarily. While every sentence provides value, the bilingual duplication makes it less concise than it could be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, the description explains the key return values (page count, preview link validity, cost estimate, images, warnings) and the draft lifecycle. It also references the blocks-guide resource for detailed parameter semantics. For a complex 15-parameter tool, this is quite complete, though the output payload structure is not fully specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds critical parameter semantics not fully in the schema: clear exclusivity between content and blocks, a compact blocks example, limits, and a pointer to the full blocks-guide resource. With schema coverage at 67%, the description compensates for the most complex parameters, though many simpler parameters are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Legt einen Briefentwurf an' and then concretely explains what it does: creates a preview PDF, stores the draft, and returns page count, preview link, and cost estimate. It also names related sibling tools (letter_preview, order_send, letter_schedule) as next steps, distinguishing this creation tool from send/preview operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear workflow guidance: drafts stay free until sent, you can fix and recreate drafts, and after creation you can preview, send, or schedule via the returned letterId. It does not explicitly state when NOT to use this tool, but the context strongly implies it is for drafting before sending.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letter_design_deleteBriefdesign löschenADestructiveInspect
Archiviert (loescht) ein gespeichertes Briefpapier (Briefdesign). Neue Sendungen laufen danach ueber die verbleibenden Briefpapiere, egal ob Kuendigung, Rechnung, Mahnung, Angebot, Vertrag oder Behoerdenpost; bereits versendete Briefe behalten ihr Original zur Nachvollziehbarkeit. EN: Archives (deletes) a saved letterhead (letter design). New sends then run on the remaining letterheads, whether cancellation, invoice, payment reminder, quote, contract or letter to a public authority; already-sent letters keep their original for auditability.
| Name | Required | Description | Default |
|---|---|---|---|
| designId | Yes | Das zu loeschende Briefdesign. EN: The letter design to delete. | |
| reasoning | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate this is a destructive operation (destructiveHint: true). The description adds significant behavioral context beyond annotations: it clarifies that the operation is an 'archive/delete' and explains the impact on future sends versus already-sent letters, including the retention of original letterheads for auditability. This provides valuable transparency about the operation's side effects and non-reversibility (or archival nature).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured well, front-loading the core action and then explaining consequences. However, it duplicates the same content in German and English, which introduces redundancy. Each language version essentially repeats the other, making the description longer than necessary for an AI agent to parse. It is not as concise as it could be, but the information is organized logically.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description is responsible for conveying behavior. It thoroughly covers the lifecycle impact: new sends use remaining letterheads, and sent letters retain the original for auditability. This is sufficient for a delete/archive tool. It does not describe return values or error conditions, but for this operation the description is essentially complete given the annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 50% coverage (designId has a description, reasoning does not). The tool description does not mention either parameter or provide any additional meaning beyond the schema. For example, it does not explain what 'reasoning' is for or how designId should be obtained. Since the schema coverage is moderate and the description does not compensate, the parameter semantics are underrepresented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Archiviert (loescht) ein gespeichertes Briefpapier' (archives/deletes a saved letterhead). It uses a specific verb and resource, and it distinguishes this tool from siblings like letter_design_save (create/update) and letter_design_list by explicitly describing the deletion/archival function and its consequences.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the practical effect of deletion ('New sends then run on the remaining letterheads') and notes that sent letters keep their original for auditability. This provides clear context on the tool's impact but does not explicitly state when to use it versus alternatives (e.g., letter_design_save for modifications) or provide when-not-to-use guidance. Usage is implied rather than explicitly directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letter_design_listBriefdesigns auflistenBRead-onlyInspect
Listet die gespeicherten Briefpapiere (Briefdesigns) des Partners samt vollstaendigem Design-JSON. Ein Design wird per Name oder ID beim Versand referenziert und traegt jede Post: Kuendigung, Rechnung, Mahnung, Angebot, Vertrag und Behoerdenpost. EN: Lists the partner's saved letterheads (letter designs) with the full design JSON. A design is referenced by name or id when sending and carries every kind of mail: cancellation, invoice, payment reminder, quote, contract and letters to public authorities.
| Name | Required | Description | Default |
|---|---|---|---|
| reasoning | No | ||
| includeArchived | No | Auch archivierte (geloeschte) Designs einschliessen. Standard false. EN: Include archived (deleted) designs too. Defaults to false. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and non-destructive. The description adds context that designs are referenced by name/id and can carry all mail types, but it does not disclose return structure or pagination. This is acceptable given the annotations, but the added behavioral detail is limited.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is bilingual and front-loaded with the core purpose, but it repeats the same information in German and English, making it longer than necessary. Every sentence does not earn its place overall, though the structure is clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool, the description covers the resource and its purpose, but it does not explicitly differentiate from sibling list tools or address archived behavior beyond the schema. With no output schema, it could still benefit from noting pagination or the absence of filtering.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: only 'includeArchived' has a description, while 'reasoning' is undocumented. The tool description does not explain either parameter or add meaning beyond the schema, failing to compensate for the missing rationale behind the 'reasoning' parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists the partner's saved letter designs (Briefpapiere) including full design JSON. It specifies the resource and verb, and distinguishes from siblings by emphasizing 'gespeicherten' (saved) designs and the reference by name/id when sending, which separates it from presets or preview tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to view saved designs for later referencing when sending mail, and lists the mail types covered (cancellation, invoice, etc.). However, it does not explicitly mention when to use this over sibling tools like letter_design_list_presets or letterhead_list, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letter_design_list_presetsBriefdesign-Vorlagen auflistenARead-onlyInspect
Liefert die vom Inhaber freigegebenen native-v2 Briefpapiere als sichere Ausgangspunkte fuer Kuendigung, Rechnung, Mahnung, Angebot, Vertrag und Behoerdenpost. Sie waechst mit jeder abgenommenen Vorlage. Die normale Liste bleibt reiner Text und damit guenstig; mit presetId wird genau eine echte Composer-Vorschau samt Inline-PNG erzeugt. EN: Returns the owner-approved native-v2 letterheads as safe starting points for cancellations, invoices, payment reminders, quotes, contracts and letters to public authorities. It grows with every curated design that passes review. The plain list stays text-only and therefore cheap; presetId renders exactly one real-composer preview with an inline PNG.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | ||
| presetId | No | Optional: genau eine Vorlage samt gerenderter Vorschau laden. Ohne presetId bleibt die Liste bildfrei und guenstig. EN: Optional: load one preset with its rendered preview. Without presetId the list stays image-free and cheap. | |
| reasoning | No | ||
| resolution | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only, but the description adds valuable behavioral context: the plain list is text-only and cheap, while presetId triggers a real composer preview with inline PNG, and the list grows with approved templates. No contradictions 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and informative but repeats the same content in both German and English, which adds length without additional value. Despite this, it is still reasonably concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should clarify what the list contains (e.g., fields, metadata) and how parameters like resolution and pages affect output. It covers the core behavior and use cases but leaves these gaps, making it slightly incomplete for a 4-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning for presetId (switching to preview mode) and mentions the list becomes image-free without it. However, pages and resolution are not explained, and with only 25% schema coverage, these parameters remain unclear for an agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns owner-approved native-v2 letterheads as safe starting points for various document types, and emphasizes it grows with approved templates. This distinguishes it from sibling tools like letter_design_list by focusing on curated presets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the tool is for cancellations, invoices, etc., and provides guidance on choosing between a cheap text-only list and a rendered preview via presetId. However, it does not explicitly name sibling alternatives or state when NOT to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letter_design_previewBriefdesign ansehenARead-onlyInspect
Rendert ein gespeichertes oder inline uebergebenes Briefdesign mit schemaVersion 1 oder 2 durch dieselbe Aufloesung und denselben Composer wie ein echter Versand. Nutzt echte Partner-Absenderdaten und einen erfundenen Empfaenger sowie Beispieltext. Liefert standardmaessig eine Inline-PNG-Seite; Seite 2 nur fuer continuationHeader. Mit sampleVariant empty siehst du das Briefpapier allein: Kopf und Fuss stehen echt, die Textflaeche bleibt frei, und genau dieses Bild zeigt auch das Dashboard. So siehst du vorab, wie Kuendigung, Rechnung, Mahnung, Angebot, Vertrag und Behoerdenpost auf diesem Briefpapier aussehen. Der Lauf bleibt kostenfrei und der Brief bleibt ein Entwurf. EN: Renders a saved or inline schemaVersion 1 or 2 letter design through the same resolution and composer as an actual send. It uses real partner sender data with a fictional recipient and sample body. Returns one inline PNG page by default; page 2 only for continuationHeader. With sampleVariant empty you see the stationery on its own: header and footer are typeset for real, the text area stays open, and this is the very picture the dashboard shows. It shows in advance how a cancellation, invoice, payment reminder, quote, contract or letter to a public authority looks on this stationery. The run stays free of charge and the letter stays a draft.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Standard ist nur Seite 1. Seite 2 wird ausschliesslich bei continuationHeader geliefert. EN: The default is page 1 only. Page 2 is returned only for continuationHeader. | |
| design | No | ||
| designId | No | ||
| reasoning | No | ||
| reference | No | ||
| resolution | No | ||
| sampleContent | No | ||
| sampleSubject | No | ||
| sampleVariant | No | typical zeigt eine vollstaendige Beispielseite, an der du Lesbarkeit und Rhythmus beurteilst. empty zeigt das Briefpapier allein: Kopf und Fuss stehen echt, die Textflaeche bleibt frei. Ein eigener sampleContent hat Vorrang vor beidem. EN: typical shows a full example page for judging readability and rhythm. empty shows the stationery on its own: header and footer are typeset for real and the text area stays open. Your own sampleContent takes precedence over both. | typical |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the readOnlyHint annotation: it states the run is free, the letter remains a draft, it uses real partner sender data with a fictional recipient and sample body, returns an inline PNG page, and page 2 only appears for continuationHeader. It also explains the visual behavior of sampleVariant empty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the primary purpose and structured into render behavior and sampleVariant empty use case. It is long due to bilingual German/English repetition, but each sentence adds relevant detail rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with no output schema, the description covers the return format (inline PNG page), page count behavior, cost/draft effects, and the difference between typical and empty sample variants. It doesn't fully document all parameters but gives enough context to invoke the tool for design preview.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 22% schema description coverage, the description partially compensates by explaining pages behavior, sampleVariant empty, and schemaVersion support. However, several parameters (designId, reasoning, reference, resolution, sampleContent, sampleSubject) receive no descriptive help, so the agent must rely on schema names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb: 'Rendert ein gespeichertes oder inline uebergebenes Briefdesign' (renders a saved or inline letter design) and clarifies scope: schemaVersion 1 or 2, same resolution/composer as a real send. It clearly differentiates from sibling tools like letter_preview or template_preview by focusing on letter design preview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for when to use the tool: to preview how a design looks on stationery, with sampleVariant empty for the exact dashboard picture. It doesn't explicitly name alternatives or say when not to use it, but the use cases (cancellation, invoice, etc.) make the intended scenario evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letter_design_saveBriefdesign speichernAInspect
Speichert ein wiederverwendbares Briefpapier (Briefdesign) mit schemaVersion 1 oder 2 im Partnerprofil und gibt designId sowie den Hash der gespeicherten Quelldaten zurueck. Dasselbe Briefpapier traegt danach jede Post: Kuendigung, Rechnung, Mahnung, Angebot, Vertrag und Behoerdenpost. Falls das Tool clientseitig entfernt wurde, suche exakt nach letter_design_save. Das Design wird vor dem Speichern vollstaendig validiert und gegen die Zustellzonen geprueft. EN: Saves a reusable schemaVersion 1 or 2 letterhead (letter design) in the partner profile and returns its designId and stored-source hash. The same stationery then carries every kind of mail: cancellation, invoice, payment reminder, quote, contract and letters to public authorities. If the client unloaded the tool, search for letter_design_save. The design is fully validated and checked against postal clear zones before it is stored.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Eindeutiger Name des Briefdesigns. EN: Unique name of the letter design. | |
| design | Yes | ||
| designId | No | ||
| reasoning | No | ||
| brandingOwnershipConfirmed | No | Bei einer Neuanlage oder geaenderten Branding-Asset-Referenz zwingend true. Unveraenderte Folgespeicherungen brauchen keine erneute Bestaetigung. EN: Required as true when creating or changing a branding asset reference. Unchanged iterative saves need no renewed confirmation. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-destructive operation. The description adds valuable context: the design is fully validated and checked against postal clear zones before storage, and it returns a stored-source hash. This goes beyond the annotations, although it does not disclose error behavior or potential side effects like overwriting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and includes useful use-case context. However, it duplicates content in German and English and contains an odd sentence about client-side tool unload, which adds unnecessary length and distracts from the tool's behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complex schema (5 params, nested design object) and no output schema, the description is incomplete. It covers purpose and validation but misses key details about parameter semantics (especially designId as both input and output), update vs. creation behavior, and error handling. An agent would need more information to invoke the tool correctly with all parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, so the description should compensate by explaining parameters. It mentions schemaVersion 1 or 2 in the design but does not clarify the roles of designId (which appears as both input and output), reasoning, or brandingOwnershipConfirmed. The description's statement that it returns designId could confuse agents since designId is also a schema property.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: "Speichert ein wiederverwendbares Briefpapier (Briefdesign) mit schemaVersion 1 oder 2 im Partnerprofil und gibt designId sowie den Hash der gespeicherten Quelldaten zurueck." This clearly distinguishes it from sibling tools like letter_design_delete, letter_design_list, and letter_design_preview by focusing on the save action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear usage context: the letterhead is reusable and applies to all mail types (cancellation, invoice, payment reminder, etc.), which implies when to use it. However, it does not explicitly name alternatives or state when not to use it, nor mention prerequisites such as branding assets or ownership confirmation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letter_getBrief abrufenBRead-onlyInspect
Liefert einen Brief des Partners samt zugehörigem Auftrag und einer 24 Stunden gültigen Download-URL für die PDF. EN: Returns one of the partner's letters together with its order and a download URL for the PDF valid for 24 hours.
| Name | Required | Description | Default |
|---|---|---|---|
| orderId | No | ||
| letterId | No | ||
| reasoning | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and non-destructive. The description adds useful behavioral context by specifying that the download URL is valid for 24 hours and that the response includes the associated order, which helps the agent handle time-sensitive data. This goes beyond the annotation baseline, though it omits details like error handling or authentication.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and starts with the verb, but it duplicates the same information in German and English. The English sentence adds no new content, so the second sentence is redundant. It is not overly verbose but could be improved by removing duplication or adding unique details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema and three parameters, the description provides a high-level overview but lacks critical details about how the letter/order is selected via parameters and the exact structure of the response. The 24-hour URL validity is a good detail, but the absence of parameter semantics and return-field documentation leaves gaps in the tool's completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, and the description does not explain the meaning or usage of orderId, letterId, or reasoning. Although the description mentions returning a letter and order, it never maps these to the parameters, leaving the agent to infer how to specify the target letter. The description fails to compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a partner's letter along with its order and a time-limited PDF download URL. The verb 'Returns' plus the specific resource distinguishes it from sibling tools like letter_list and letter_search, which are for listing or searching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as letter_list or letter_search. It does not mention prerequisites, preferred scenarios, or when another tool would be more appropriate, leaving the agent without explicit selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letterhead_listBriefköpfe auflistenARead-onlyInspect
Listet die im Partnerprofil gespeicherten Briefköpfe mit einer kurzlebigen Vorschau-URL (24 Stunden gültig). EN: Lists the letterheads stored in the partner profile with a short-lived preview URL (valid for 24 hours).
| Name | Required | Description | Default |
|---|---|---|---|
| reasoning | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the readOnlyHint and destructiveHint annotations by disclosing that the preview URL is short-lived (valid for 24 hours). It does not cover other behaviors like pagination or error handling, but the annotations already cover the safety profile, so this added detail earns a 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, providing the core purpose and a key detail (URL validity) in just two short sentences. It is front-loaded and every word earns its place, with no redundancy despite being bilingual.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and no output schema, the description covers the primary behavior and the preview URL expiration. However, it fails to explain the reasoning parameter and does not describe the response structure, leaving some gaps that could be filled given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, 'reasoning', is entirely unexplained in the description. With schema description coverage at 0%, the description should compensate by clarifying the parameter's purpose or expected values, but it does not. This leaves the agent without guidance on how to use the optional parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states that the tool lists letterheads stored in the partner profile and highlights the unique feature of a short-lived preview URL (24 hours). This clearly distinguishes it from sibling tools like letterhead_upload (uploading) or letter_list (listing letters), making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you need a list of letterheads with preview URLs) but does not explicitly mention alternatives or exclusion criteria. It lacks guidance on preferring this over letter_design_list or letterhead_upload, so usage is implied rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letterhead_uploadBriefkopf hochladenAInspect
Lädt einen Briefkopf als PNG oder PDF hoch und speichert ihn im Partnerprofil. Quelle ist entweder fileUrl (bevorzugt) oder fileBase64, genau eine von beiden. PNG wird auf die Seite gedruckt; ein PDF-Briefkopf wird vorerst nur abgelegt, gedruckt wird bisher nur PNG (rendered=false). Beim Nachbau eines vorhandenen Briefs: Logo und Titelblock aus dem Kopf der Seite gehören hierher (dann letter_design_save); der Brieftext bleibt den blocks vorbehalten. EN: Uploads a letterhead as PNG or PDF and stores it in the partner profile. The source is either fileUrl (preferred) or fileBase64, exactly one of the two. PNG is printed on the page; a PDF letterhead is only filed for now, printing stays PNG-only (rendered=false). When rebuilding an existing letter: the logo and title block at the top of the page belong here (then letter_design_save); the letter body stays reserved for blocks.
| Name | Required | Description | Default |
|---|---|---|---|
| fileUrl | No | Öffentliche http(s)-URL des Briefkopfs (PNG oder PDF), Alternative zu fileBase64. Bevorzuge diese Variante: Base64 kostet unnötig Kontext und verleitet zu starker Farbreduktion, die den gedruckten Briefkopf verschlechtert. Maximal 20 MB. EN: Public http(s) URL of the letterhead (PNG or PDF), alternative to fileBase64. Prefer this variant: base64 wastes context and encourages heavy colour reduction, which degrades the printed letterhead. Maximum 20 MB. | |
| widthMm | No | Breite in mm (optional). EN: Width in mm (optional). | |
| heightMm | No | Höhe in mm (optional). EN: Height in mm (optional). | |
| placement | No | Platzierung auf der Seite. EN: Placement on the page. | |
| reasoning | No | ||
| fileBase64 | No | Der Briefkopf als PNG oder PDF (Base64), Alternative zu fileUrl. EN: The letterhead as PNG or PDF (Base64), alternative to fileUrl. | |
| displayName | No | Anzeigename des Briefkopfs (optional). EN: Display name of the letterhead (optional). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that PDF letterheads are stored but not printed (rendered=false), while PNG is printed. This is critical behavioral information beyond the empty annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The bilingual structure duplicates content and lengthens the description, but each section carries unique information and the layout is logical. Slightly verbose but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 optional parameters and no output schema, the description covers the core behavior, constraints, and contextual usage thoroughly, including the rendered=false nuance and letter-rebuild guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (86%) and includes detailed parameter descriptions. The description adds the exclusive-or relationship between fileUrl and fileBase64 and the preference for fileUrl, complementing the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it uploads a letterhead as PNG or PDF and stores it in the partner profile. It distinguishes from siblings like letterhead_list and letter_design_save by specifying the exact action and resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly explains when to use fileUrl vs fileBase64 and requires exactly one of them. Also gives contextual guidance on what belongs here versus letter_design_save and blocks when rebuilding a letter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letter_listBriefe auflistenBRead-onlyInspect
Listet die Briefe des Partners mit optionalen Filtern nach Empfängername, Betreff, Status und Zeitpunkt. EN: Lists the partner's letters with optional filters by recipient name, subject, status and time.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| since | No | ||
| offset | No | ||
| reasoning | No | ||
| statusFilter | No | ||
| subjectContains | No | ||
| recipientNameContains | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond the filters, such as pagination behavior or default sorting. It neither conflicts with annotations nor provides extra useful behavioral details, hence a mid-range score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using two short sentences (one per language) with no filler. It gets straight to the point, describing the purpose and filter capabilities efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and multiple parameters, the description omits return format, pagination behavior, and how filters combine. It doesn't explain the meaning of offset/limit or the reasoning parameter. This leaves significant gaps for an agent to invoke the tool correctly beyond basic listing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate. It maps 'recipient name' to recipientNameContains, 'subject' to subjectContains, 'status' to statusFilter, and 'time' to since, but leaves limit, offset, and reasoning unexplained. This partial semantic help warrants a 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Listet die Briefe des Partners mit optionalen Filtern...' (Lists the partner's letters with optional filters). It specifies the resource (letters) and the verb (list), and differentiates from siblings like letter_get and letter_search by emphasizing the list-with-filters capability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool vs alternatives. It doesn't mention letter_search or letter_get as alternatives, nor any exclusions or prerequisites. The usage context is merely implied by the name 'list'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letter_page_urls_appBildlinks der Brief-Ansicht erneuernBRead-onlyInspect
Nur fuer die interaktive Brief-Ansicht: erneuert die zeitlich begrenzten Bildlinks der Briefseiten, wenn die alten abgelaufen sind. EN: For the interactive letter view only: renews the time-limited image links of the letter pages once the old ones have expired.
| Name | Required | Description | Default |
|---|---|---|---|
| letterId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds context about time-limited links and expiration, which is useful. The verb 'erneuert' could imply mutation, but it is not a clear contradiction with the read-only annotation, especially since the tool is scoped to an interactive view.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, with a German sentence and an English translation. It front-loads the scope and action. The bilingual repetition is slightly redundant but still concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with annotations, the description conveys the purpose and trigger condition. However, it does not mention what the response contains (e.g., the renewed URLs), and there is no output schema to provide that information, leaving a minor completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the single parameter letterId. The description does not explicitly explain the parameter, relying on its name and the context of 'letter pages' to infer meaning. It adds minimal semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('reneuert' / 'renews'), the resource (time-limited image links of letter pages), and the scope ('interactive letter view'). It does not explicitly differentiate from sibling tools like template_page_urls_app, but the resource is specific enough for an agent to understand its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: 'Nur fuer die interaktive Brief-Ansicht' (only for the interactive letter view) and the condition 'when the old ones have expired'. This implies exclusions (not for other views) but does not name alternatives or explicitly state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letter_previewBrief und Vorlage prüfenARead-onlyInspect
Brief und Entwurf als Bild pruefen, Formularvorschau rendern: komponiert wie einen echten Versand und liefert Inline-PNGs, PDF-Link, Seitenzahl, Preis und designRender mit dem tatsaechlichen documentMode, den gezeichneten Brief-Elementen und bodyStartMm. Die Vorschau bleibt kostenfrei und der Brief bleibt liegen. Der Brief kommt ueber letterId oder inline mit content ODER blocks. Ein ungespeichertes design kann direkt mitgegeben werden und gilt nur für diese eine Vorschau. WICHTIG FUER FORMULARE: Selbstauskunft, Fragebogen, Zertifikat und andere eigenstaendige Formulare immer zuerst mit design: { "schemaVersion": 1, "documentMode": "form" } pruefen; genau dann entfallen Empfaengerblock, Datum und Betreff und der Inhalt beginnt bei 27 mm. Kompaktes blocks-Beispiel: {"blocks":[{"type":"heading","text":"Rechnung"},{"type":"table","columns":[{"key":"text","label":"Artikel","width":"grow"},{"key":"sum","label":"Summe","align":"right","format":"eur"}],"rows":[{"text":"Beratung","sum":32000}]},{"type":"totals","lines":[{"label":"Gesamt","amountCents":32000,"emphasis":true}]}]} Volle Referenz: frankki://blocks-guide. Beim Nachbau ist letter_preview PFLICHT: PNG Seite fuer Seite mit dem Original vergleichen. Weichen Seitenzahl oder wesentliche Geometrie ab, korrigiere blocks oder design und rufe letter_preview erneut auf; gespeichert wird erst, wenn beides passt. Wenn das Layout sitzt mit template_save als Entwurf sichern und danach template_release nutzen. EN: Preview letter and draft as images, render form preview: composes like a real send and returns inline PNGs, PDF link, page count, cost and designRender with the actual documentMode, rendered letter chrome and bodyStartMm. The preview stays free of charge and the letter stays put. Use letterId or inline content OR blocks. An unsaved design may be supplied directly and applies to this one preview only. IMPORTANT FOR FORMS: always preview self-declarations, questionnaires, certificates and other standalone forms first with design: { "schemaVersion": 1, "documentMode": "form" }; that is what drops recipient block, date and subject and starts content at 27 mm. Full reference: frankki://blocks-guide. For a rebuild, compare every PNG page against the original. If page count or major geometry differs, correct blocks or design and preview again; save once both match. Once matched, save with template_save, then use template_release.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Wie viele Seiten als Bild zurueckkommen. Standard 3, Maximum 8. Der PDF-Link enthaelt immer alle Seiten. EN: How many pages come back as images. Default 3, maximum 8. The PDF link always contains every page. | |
| blocks | No | Strukturierter Briefinhalt als typisierte Bloecke (Alternative zu content, nie beides). Limits: 200 Bloecke, 100 Zeilen/Tabelle, 20 Spalten, 2000 Zeichen/Zelle, 10 Bilder, 262144 Bytes. EN: structured letter content as typed blocks (alternative to content, never both). Jeder Block braucht type; erlaubte Typen: paragraph, heading, keyValue, checkboxRow, fillLine, table, totals, columns, box, image, spacer, pageBreak. Die vollstaendige Feldreferenz liegt in der MCP-Ressource frankki://blocks-guide. EN: every block needs type; read frankki://blocks-guide for the complete field reference. | |
| design | No | Ungespeichertes Briefdesign nur fuer diese Vorschau. Hat Vorrang vor designId und erzeugt keinen Eintrag im Konto. Fuer eigenstaendige Formulare documentMode: "form" setzen. EN: Unsaved letter design for this preview only. Takes precedence over designId and creates no account entry. Set documentMode: "form" for standalone forms. | |
| content | No | Brieftext als Fliesstext. Entweder content ODER blocks, nie beides. EN: letter body as plain text. Either content OR blocks, never both. | |
| subject | No | Betreff. Ohne letterId erforderlich. EN: Subject. Required without a letterId. | |
| designId | No | Ein gespeichertes Briefdesign fuer diese Vorschau verwenden. EN: Use a saved letter design for this preview. | |
| language | No | ||
| letterId | No | Einen gespeicherten Entwurf in der Vorschau anzeigen. Alternativ den Brief inline angeben. EN: Preview a stored draft. Alternatively provide the letter inline. | |
| reasoning | No | ||
| reference | No | Werte fuer diesen Brief (Vorgangsnummer, Ihr Zeichen, Kundennummer, QR-Parameter ...). Sie fuellen Infoblock und Barcode in der Vorschau. EN: Per-letter values (Vorgangsnummer, your reference, customer number, QR parameters ...). They fill the info block and barcode in the preview. | |
| styleDefs | No | Benannte Stile fuer das ganze Dokument (max. 24). Bloecke referenzieren sie ueber style. EN: named document styles (max 24); blocks reference them via style. Vollstaendige Stilfelder: frankki://blocks-guide. EN: complete style fields: frankki://blocks-guide. | |
| resolution | No | thumb (96 dpi, Standard, schnell und klein) oder full (150 dpi, zum Pruefen von Details). EN: thumb (96 dpi, default, fast and small) or full (150 dpi, for checking details). | |
| senderProfileId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=true, destructiveHint=false), the description discloses that the preview is free of charge, the letter remains unsent ('bleibt liegen'), an unsaved design applies only to that preview, and form mode drops recipient block/date/subject and starts content at 27mm. This is significant additional behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but front-loaded with the core function, then provides input modes, warnings, a JSON example, and a workflow. It is bilingual, which repeats content, but is well-organized and each section has a purpose. A slightly shorter version could preserve the essential guidance, but the structure is logical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (13 params, nested design object) and absence of an output schema, the description covers the primary use cases (preview, form preview, rebuild), the key return components, and the critical behavioral nuances. It doesn't explain every parameter, but the schema descriptions fill most gaps, and it references frankki://blocks-guide for deeper specification, so it is sufficiently complete for an agent to use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes most parameters (77% coverage), giving a baseline of 3. The description adds a concrete blocks example, explains the content/blocks mutual exclusivity, highlights the transient nature of an inline design, and gives the specific design object needed for form mode, which goes beyond the schema's field-level descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool previews letters and drafts as images, renders form previews, and returns inline PNGs, PDF link, page count, cost and designRender. It also distinguishes the tool's scope by mentioning 'actual documentMode, rendered letter chrome and bodyStartMm' and by making it mandatory for rebuilds, which sets it apart from generic preview tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit instructions: it says letter_preview is mandatory for rebuilds (PFLICHT), that forms should always be previewed first with a specific design, and that template_save/template_release should follow once the layout matches. However, it does not explicitly contrast with sibling tools like template_preview or letter_design_preview, so agents may need extra context to choose among them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letter_scheduleVersand planenAInspect
Plant den Versand eines bestehenden Entwurfs für einen späteren Zeitpunkt (fester Termin, relative Verzögerung oder wiederkehrend per cron). Alle Prüfungen und der Preis werden sofort ermittelt und die Kosten reserviert; der eigentliche Versand läuft zum geplanten Zeitpunkt durch dieselbe Versandpipeline. EN: Schedules the sending of an existing draft for a later time (fixed date, relative delay or recurring via cron). All checks and the price are determined immediately and the cost is reserved; the actual send runs at the scheduled time through the same send pipeline.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | at = fester Zeitpunkt, in = relative Verzögerung, cron = wiederkehrend. EN: at = fixed time, in = relative delay, cron = recurring. | |
| color | No | ||
| delay | No | Verzögerung bei mode='in': '2d', '1w', '3h', 'next-business-day', 'next-monday', 'end-of-month'. EN: Delay for mode='in': '2d', '1w', '3h', 'next-business-day', 'next-monday', 'end-of-month'. | |
| dryRun | No | Prüft und bepreist die Planung, legt aber nichts an und reserviert nichts. Liefert dryRunWouldHaveCost. EN: Validates and prices the schedule but creates nothing and reserves nothing. Returns dryRunWouldHaveCost. | |
| sendAt | No | Zeitpunkt bei mode='at' (ISO 8601, Berlin-Zeit wenn ohne Offset). EN: Time for mode='at' (ISO 8601, Berlin time if no offset). | |
| endDate | No | Enddatum für eine cron-Serie. EN: End date for a cron series. | |
| express | No | ||
| auditTag | No | ||
| letterId | Yes | Bestehender Entwurf, der geplant versendet wird. EN: Existing draft to be sent on schedule. | |
| reasoning | No | ||
| presetName | No | ||
| templateId | No | ||
| signatureId | No | ||
| deliveryType | No | ||
| maxCostEuros | No | Maximalbetrag in Euro. Liegt der Preis darüber, wird abgebrochen. EN: Maximum amount in euros. If the price is above it, the call is aborted. | |
| cronExpression | No | 5-Felder cron bei mode='cron': 'min std tag monat wochentag'. EN: 5-field cron for mode='cron': 'min hour day month weekday'. | |
| sendBeforeHour | No | Versand-Cutoff in Berliner Ortszeit. Nach dieser Stunde wird auf den nächsten Werktag verschoben. EN: Send cutoff in Berlin local time. After this hour it shifts to the next business day. | |
| mandantennummer | No | ||
| senderAddressId | No | ||
| senderProfileId | No | ||
| businessDaysOnly | No | Nur an Werktagen versenden, sonst auf den nächsten Werktag verschieben. Standard true. EN: Send on business days only, otherwise shift to the next business day. Default true. | |
| includeSignature | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that all checks and pricing are performed immediately with cost reservation, and that the actual send runs later through the same pipeline. This adds valuable behavioral context beyond the sparse annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two bilingual sentences are efficient and front-loaded, though the English translation effectively doubles length. No wasted words, but slight redundancy from bilingual repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 22 parameters and no output schema, the description conveys the essential operation but lack details on response format, error handling, and the many parameters the schema doesn't document.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no specific parameter semantics beyond the schema; it only outlines the three scheduling modes. With schema coverage at 45%, many parameters remain undocumented without description assistance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool schedules the sending of an existing draft for a later time, with fixed, relative, or cron modes. This distinguishes it from immediate-send tools like order_send and from list/cancel tools like schedule_list_or_cancel.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies use for delayed sending ('for a later time') and notes checks are done immediately, but it doesn't explicitly name alternatives or exclusions. Context is clear, though not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letter_searchBriefe durchsuchenARead-onlyInspect
Durchsucht die Briefe des Partners per Freitext über Betreff, Empfängername und Briefinhalt. EN: Full-text searches the partner's letters across subject, recipient name and letter content.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Standard 20, maximal 100. EN: Default 20, maximum 100. | |
| query | Yes | ||
| since | No | Nur Briefe, die seit diesem Zeitpunkt geändert wurden (ISO 8601). EN: Only letters modified since this time (ISO 8601). | |
| offset | No | Versatz für die Seitennavigation. Standard 0. EN: Offset for pagination. Default 0. | |
| reasoning | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive behavior, so the bar is lower. The description adds context about search scope (subject, recipient name, content) but doesn't disclose additional behavioral traits such as pagination defaults, matching behavior, or response format. It provides some value beyond annotations but not extensive context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, repeated in English for clarity, with no wasted words. It front-loads the primary action and scope, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a straightforward search operation with helpful schema annotations and parameter descriptions for limit, since, and offset. The description covers the core scope and query semantics. It doesn't explicitly describe the return format, but the tool's purpose is clear and the read-only annotations cover safety. Overall, it is sufficiently complete for most use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 60%, and the description adds meaning to the 'query' parameter by specifying the fields it searches. However, the 'reasoning' parameter remains undocumented, and the description does not fully compensate for the schema gaps. It is adequate but not exceptional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: full-text searching the partner's letters across subject, recipient name, and content. The specific verb 'Durchsucht' and the resource scope distinguish it from sibling tools like letter_list and letter_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (when you need full-text search across letter fields) but does not explicitly state alternatives or when not to use it. It is clear enough for basic selection but lacks exclusionary guidance that would help an agent choose between it and letter_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mandant_getMandant abrufenBRead-onlyInspect
Liefert einen Mandanten mit Adressen, Kategorie, Sachbearbeiter, Monatslimit, verbrauchtem Monatsbudget, Aufbewahrungsdauer und der Briefanzahl der letzten 12 Monate. EN: Returns a client (Mandant) with addresses, category, case handler, monthly cap, monthly budget used, retention period and the letter count of the last 12 months.
| Name | Required | Description | Default |
|---|---|---|---|
| mandantId | No | ||
| reasoning | No | ||
| mandantennummer | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds context about the returned fields, but it does not disclose potential edge cases or constraints (e.g., what happens if no identifier is provided, or whether the operation can fail). This adds some value but leaves gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: a single German sentence followed by an exact English translation. It front-loads the action verb and efficiently lists the included data fields with no superfluous words, making it fully concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lists the returned fields, which is helpful given the absence of an output schema. However, it leaves unresolved the fact that no parameters are required, creating ambiguity about how the tool selects a single Mandant. It also does not explain the reasoning parameter, leaving the overall context incomplete for a get tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description offers no explanation of mandantId, mandantennummer, or reasoning. The parameter names are self-explanatory to a degree, but the description does not clarify which identifier is required or how reasoning is used, failing to compensate for the absence of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Liefert' / 'Returns') and resource ('einen Mandanten' / 'a client'), and enumerates the exact set of returned attributes (addresses, category, case handler, etc.). This distinguishes it from sibling tools like mandant_list and mandant_search, which would list or search rather than retrieve a single entity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as mandant_list or mandant_search. It does not mention required identifiers or exclusions, leaving the usage context entirely implied by the tool name and parameter names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mandant_listMandanten auflistenARead-onlyInspect
Listet die Mandanten des Partners, optional gefiltert nach Suchbegriff, Kategorie oder Tag. EN: Lists the partner's clients (Mandanten), optionally filtered by search term, category or tag.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Standard 20, maximal 100. EN: Default 20, maximum 100. | |
| since | No | Nur Mandanten, die seit diesem Zeitpunkt angelegt wurden (ISO 8601). EN: Only clients created since this time (ISO 8601). | |
| offset | No | Versatz für die Seitennavigation. Standard 0. EN: Offset for pagination. Default 0. | |
| reasoning | No | ||
| tagFilter | No | ||
| searchQuery | No | ||
| kategorieFilter | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds the scope 'des Partners' (of the partner) and optional filtering, which is useful context but not extensive. No significant behavioral traits beyond annotations are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences (German and English), front-loaded with the action and resource, and contains no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only listing tool with good annotations, the description is largely complete: it states purpose, scope, and filter options. It lacks return format details (though no output schema exists) and leaves the 'reasoning' parameter unexplained, preventing a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 43% (3 of 7 parameters documented). The description compensates by explicitly naming three filter parameters: Suchbegriff (searchQuery), Kategorie (kategorieFilter), and Tag (tagFilter), providing semantic meaning not present in the schema. However, the 'reasoning' parameter remains unexplained, and limit/since/offset are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'listet' (lists) and clearly identifies the resource 'Mandanten des Partners' (partner's clients). It distinguishes from sibling tools like mandant_get (single client) and mandant_search (search) by specifying it's a list operation with optional filters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool by mentioning optional filters for search term, category, or tag, suggesting it's for listing with possible narrowing. However, it does not explicitly name alternatives or state when not to use it, leaving the choice among siblings to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mandant_searchMandanten suchenARead-onlyInspect
Sucht Mandanten über Mandantennummer, Name, Tags oder Sachbearbeiter und nennt für jeden Treffer die passende Spalte. Nächster Schritt mit der gefundenen mandantennummer: document_create erzeugt daraus eine Rechnung, Mahnung, Zahlungserinnerung oder Gutschrift, mandant_get liefert die vollständigen Stammdaten, letter_create_draft schreibt einen normalen Brief. EN: Searches clients (Mandanten) by client number, name, tags or case handler and names the matching column for each hit. Next step with the matched mandantennummer: document_create turns it into an invoice, dunning letter, payment reminder or credit note, mandant_get returns the full record, letter_create_draft writes a normal letter.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Standard 20, maximal 100. EN: Default 20, maximum 100. | |
| query | Yes | ||
| since | No | Nur Mandanten, die seit diesem Zeitpunkt angelegt wurden (ISO 8601). EN: Only clients created since this time (ISO 8601). | |
| offset | No | Versatz für die Seitennavigation. Standard 0. EN: Offset for pagination. Default 0. | |
| reasoning | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true and destructiveHint=false, so the agent knows it's a safe read. The description adds a concrete behavioral detail: 'nennt für jeden Treffer die passende Spalte' (names the matching column for each hit), which goes beyond the annotations. It does not describe pagination behavior, but with annotations covering safety, this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and next steps, but it is duplicated in German and English, making it longer than strictly necessary. Every sentence is informative, and the duplication is justifiable for a bilingual context. No filler words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 5 parameters, no output schema, and read-only annotations, the description covers search criteria, output behavior (matching column), and follow-up tool options. It does not describe the response format in detail (e.g., pagination metadata), but given the schema provides offset/limit and the behavior is hinted, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 60%; query and reasoning lack schema descriptions. The description compensates for 'query' by listing search dimensions (Mandantennummer, Name, Tags, Sachbearbeiter). The other parameters (limit, since, offset) already have schema descriptions. This adds meaningful semantics for the undocumented query parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Sucht Mandanten über Mandantennummer, Name, Tags oder Sachbearbeiter' (searches clients by client number, name, tags, or case handler). It also distinguishes from siblings by noting it names the matching column for each hit, which is a unique behavioral trait not covered by mandant_list or mandant_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear next-step guidance: 'Nächster Schritt mit der gefundenen mandantennummer: document_create... mandant_get... letter_create_draft...' This implicitly tells when to use this search tool (to locate a client before using those tools). It does not explicitly state when not to use it, but the context is clear and useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_healthVerbindung prüfenARead-onlyInspect
Health-/Echo-Probe - prüft das Partner-Token und die Verarbeitungskette von Anfang bis Ende und sagt dir unter setup, welche Voraussetzungen für einen echten Versand schon erfüllt sind (Absender-Profil, AVV, Guthaben, Sandbox, Freigabe) und was der nächste Schritt ist. Mit checkRender: true wird zusätzlich geprüft, ob gerade überhaupt gerendert werden kann (Vorschau, Thumbnail). Rufe das auf, bevor du eine Vorlage baust, die du danach ansehen musst. EN: Health/echo probe - verifies the partner token and the chain end to end, and reports under setup which prerequisites for a real send are already met (sender profile, data processing agreement, balance, sandbox, approval) and what the next step is. With checkRender: true it additionally checks whether rendering currently works at all (preview, thumbnail). Call it before building a template you will need to look at.
| Name | Required | Description | Default |
|---|---|---|---|
| reasoning | No | ||
| checkRender | No | Prüft zusätzlich den Render-Pfad (Composer + Rasterizer). Default false. EN: Additionally probes the render path (composer + rasterizer). Defaults to false. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals what the probe checks (token, processing chain, render path) and what it reports (setup prerequisites). Annotations already indicate read-only safety, and the description adds behavioral context without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core information is clear and front-loaded, but the German and English versions are duplicated, roughly doubling the length. A single concise bilingual paragraph would be more efficient without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple health-check tool without an output schema, the description provides adequate context: what is verified, what is reported, and when to call it. It does not describe the exact response format, but that is not required given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description elaborates on checkRender by explaining it tests rendering for preview/thumbnail, going slightly beyond the schema. However, the 'reasoning' parameter has no description in either the schema or the tool description, leaving its purpose unexplained. Schema coverage is only 50%, so the description should have compensated more.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a health/echo probe that verifies the partner token and the full processing chain end-to-end. It distinguishes itself from sibling tools by focusing on system health and setup readiness rather than sending or document management.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly advises calling this tool before building a template that will need to be viewed, giving a concrete use case. It does not mention when not to use it or name alternative tools, but the provided context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_cancelAuftrag stornierenADestructiveInspect
Storniert einen Brief und schreibt den Betrag deinem Wallet gut (geschlossener Kreislauf, Gutschrift ins Wallet statt auf die Karte). Mit orderId wird eine bereits erstellte Bestellung im Stornofenster storniert; ist der Brief bereits im Druck, wird sauber abgelehnt. Mit approvalId wird eine per Chat freigegebene Sendung im 10-Minuten-Stornofenster gestoppt, bevor sie ueberhaupt versendet wird (der Mensch sagt 'stopp'). EN: Cancels a letter and credits the amount to your wallet (closed loop, credited to the wallet rather than the card). With orderId it cancels an existing order within the cancellation window; if the letter is already printing the call is cleanly rejected. With approvalId it stops a chat-approved send within its 10-minute grace window before it is even sent (the human says 'stop').
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optionaler Stornogrund. EN: Optional cancellation reason. | |
| orderId | No | Die zu stornierende Bestellung. EN: The order to cancel. | |
| reasoning | No | ||
| approvalId | No | Statt orderId: eine per Chat freigegebene Sendung im 10-Minuten-Stornofenster stoppen, bevor sie versendet wird (der Mensch sagt 'stopp'). EN: Instead of orderId: stop a chat-approved send within its 10-minute grace window before it is sent (the human says 'stop'). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description discloses specific behavioral traits: the amount is credited to the wallet instead of the card, cancellation is rejected if printing has started, and the approvalId path stops a send before dispatch. This adds meaningful context about side effects and limits, with no contradiction to annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense, covering the two cancellation modes, the wallet credit, and the rejection condition in two sentences. The bilingual repetition adds length but is justified for accessibility; no sentence is purely filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description explains the key outcomes (wallet credit, rejection if printing, stop before send) but does not specify the return format or behavior when outside the cancellation window. Given the moderate complexity and clear parameter guidance, it is largely 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning to orderId and approvalId by explaining their distinct use cases and the 10-minute window, going beyond the schema's field descriptions. However, the optional reason and reasoning parameters are not elaborated in the description, and schema coverage is 75%, leaving a small gap for those parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool cancels a letter and credits the amount to the wallet, naming the specific resource (order/approval) and the effect. It distinguishes two distinct modes (orderId vs approvalId) and differentiates from sibling tools like order_send or order_fix_resubmit by focusing on cancellation with a financial credit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is given for when to use each parameter: orderId for an existing order within the cancellation window (with clean rejection if already printing), and approvalId for a chat-approved send within a 10-minute grace window. This provides clear context and exclusion criteria, effectively replacing the need to consult sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_einlieferungsbelegEinlieferungsbeleg abrufenARead-onlyInspect
Liefert den Einlieferungsbeleg (Einlieferungsnachweis) zu einem versendeten Auftrag: eine 90 Tage gültige Download-URL für die Beleg-PDF, den Poststempel, den Versanddienstleister sowie den geprüften Nachweis aus dem GoBD-Archiv. EN: Returns the proof of posting (Einlieferungsbeleg) for a sent order: a download URL for the receipt PDF valid for 90 days, the postmark, the mail provider and the verified record from the GoBD archive.
| Name | Required | Description | Default |
|---|---|---|---|
| orderId | Yes | ||
| reasoning | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description need not re-state safety. It adds useful behavioral details: download URL validity (90 days), inclusion of postmark and provider, and verification from GoBD archive. This exceeds the annotation coverage 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences (German and English), concise, and front-loaded with the core purpose and key return values. Every phrase adds value, and there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only retrieval tool with no output schema, the description covers the main return values and context. It lacks mention of error scenarios (e.g., order not found or not sent) and any prerequisites beyond 'sent order', but given the simplicity of the operation, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% as the description does not mention orderId or reasoning. While orderId is implied by the context of retrieving a receipt for a specific order, the optional reasoning parameter is entirely unexplained. The description fails to compensate for the low schema coverage, especially for a two-parameter interface.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Liefert') and resource ('Einlieferungsbeleg'), and details the exact data returned (download URL valid for 90 days, postmark, mail provider, GoBD record). It clearly distinguishes itself from sibling tools like order_status or order_send.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies that the tool is for 'versendeten Auftrag' (sent orders), implying when it should be used. It does not explicitly exclude alternatives, but the unique resource and return data make the usage context clear. It lacks an explicit 'when not to use' statement but provides adequate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_fix_resubmitAdresse korrigieren und erneut sendenADestructiveInspect
Korrigiert die Empfaengeradresse eines Briefs, der auf eine Korrektur wartet (Status awaiting_partner_fix), und gibt ihn erneut zum Versand frei. Der Preis bleibt der alte: das reservierte Guthaben bzw. die bereits gebuchte Belastung bleibt bestehen. Das Tool verlangt den Status awaiting_partner_fix; jeder andere Status antwortet mit ORDER_NOT_FIXABLE. EN: Corrects the recipient address of a letter awaiting a fix (status awaiting_partner_fix) and releases it for sending again. The price stays as it was: the reserved balance or the already-booked charge stays. Requires status awaiting_partner_fix; any other status answers ORDER_NOT_FIXABLE.
| Name | Required | Description | Default |
|---|---|---|---|
| orderId | Yes | ||
| reasoning | No | ||
| recipient | Yes | Die korrigierte Empfaengeradresse als Einzelfelder oder als { addressId } aus dem Partner-Adressbuch. EN: The corrected recipient address as inline fields or as { addressId } from the partner address book. | |
| clientOrderId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as destructive and not read-only. The description adds valuable context: it preserves the current price/charge, thereby clarifying financial implications, and specifies the exact error response for invalid status. It does not contradict annotations and enhances understanding of side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with two sentences per language covering the core action, the status requirement, price implications, and error behavior. Every sentence contributes meaningful information without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (4 parameters, no output schema), the description provides adequate context: the target state, the error condition, and the financial outcome. It lacks elaboration on reasoning and clientOrderId parameters, but the core behavior and constraints are well covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, covering just the recipient parameter. The description does not explain the semantics of orderId (requires recipient?), reasoning, or clientOrderId beyond their names. Since coverage is low, the description was expected to compensate but does not, leaving key parameter meanings implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool's function: correcting the recipient address of a letter specifically in status awaiting_partner_fix and releasing it for sending. The verb 'Korrigiert'/'Corrects' and resource 'letter' are specific, and the inclusion of the required status distinguishes it from sibling tools like order_send or order_cancel.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when the tool applies: only for letters with status awaiting_partner_fix, and that any other status returns ORDER_NOT_FIXABLE. This provides a clear usage condition and implicit when-not-to-use, though it does not name specific alternative tools such as order_cancel or order_send.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_sendBrief versendenADestructiveInspect
Versendet einen Brief physisch per Post: prüft die Pflichtangaben des Absenders, die Empfängeradresse, den AVV und die Limits, erstellt die finale PDF, berechnet den Preis und gibt den Versand frei. Sieh dir den Brief vorher als Bild an: letter_create_draft und letter_preview liefern die gerenderten Seiten, und Satzprobleme wie ein zu langer Betreff zeigen sich erst dort. Ein Brief kommt entweder ueber letterId (ein bereits erstellter Entwurf) oder inline: dann ist der Text entweder content (Fliesstext) ODER blocks (strukturiert: Tabellen, Ueberschriften, Summenzeilen), genau eines von beiden. Kompaktes blocks-Beispiel: {"blocks":[{"type":"heading","text":"Rechnung"},{"type":"table","columns":[{"key":"text","label":"Artikel","width":"grow"},{"key":"sum","label":"Summe","align":"right","format":"eur"}],"rows":[{"text":"Beratung","sum":32000}]},{"type":"totals","lines":[{"label":"Gesamt","amountCents":32000,"emphasis":true}]}]} Volle Referenz inkl. styleDefs und Limits: MCP-Ressource frankki://blocks-guide. Standardmäßig landet der Versand zuerst als Freigabe in der Warteschlange, ein Mensch entscheidet über approval_decide. Danach fragst du den Fortschritt mit order_status ab. Zwei Wege zurück: order_cancel storniert einen Brief vor dem Druck, order_fix_resubmit korrigiert einen vom Dienstleister abgelehnten Brief und schickt ihn erneut. Mit dryRun wird der Versand nur geprobt: kostenfrei, und der Brief bleibt liegen. dryRun ist die vollständige Probe genau dieses Briefes durch alle sechs Gates und liefert damit den genauesten Preis. Ein dryRun bleibt eine reine Probe: die zurückgegebene letterId ist eine Probe-Kennung und liefert in letter_get oder letter_preview NOT_FOUND. Für einen echten Entwurf nutze letter_create_draft. shipping_quote beantwortet dagegen die Frage, was ein Brief kosten würde, solange der Inhalt erst geplant ist; letter_preview zeigt einen blocks-Entwurf vorab als Bild, bevor er hier versendet wird. EN: Sends a letter physically by post: checks the sender's mandatory details, the recipient address, the AVV and the limits, creates the final PDF, calculates the price and releases the send. Look at the letter as an image first: letter_create_draft and letter_preview return the rendered pages, and typesetting defects such as an over-long subject show up only there. A letter arrives either via letterId (an existing draft) or inline: then the body is either content (plain text) OR blocks (structured: tables, headings, totals lines), exactly one of the two. Compact blocks example: {"blocks":[{"type":"heading","text":"Rechnung"},{"type":"table","columns":[{"key":"text","label":"Artikel","width":"grow"},{"key":"sum","label":"Summe","align":"right","format":"eur"}],"rows":[{"text":"Beratung","sum":32000}]},{"type":"totals","lines":[{"label":"Gesamt","amountCents":32000,"emphasis":true}]}]} Full reference incl. styleDefs and limits: MCP resource frankki://blocks-guide. By default the send first lands in the approval queue and a human decides via approval_decide. After that, poll progress with order_status. Two recovery paths: order_cancel cancels a letter before it goes to print, order_fix_resubmit corrects a letter the provider rejected and resubmits it. With dryRun the send is only rehearsed: free of charge, and the letter stays put. dryRun is the full rehearsal of this specific letter through all six gates and therefore the highest-fidelity price. A dryRun stays a pure rehearsal: the returned letterId is a rehearsal handle and answers NOT_FOUND in letter_get or letter_preview. For a real draft, use letter_create_draft. shipping_quote instead answers what a letter would cost while the content is still only planned; letter_preview shows a blocks draft as an image before it is sent here.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | Ohne Angabe wird die Farbe automatisch erkannt. EN: If omitted, colour is detected automatically. | |
| blocks | No | Strukturierter Briefinhalt als typisierte Bloecke (Alternative zu content, nie beides). Limits: 200 Bloecke, 100 Zeilen/Tabelle, 20 Spalten, 2000 Zeichen/Zelle, 10 Bilder, 262144 Bytes. EN: structured letter content as typed blocks (alternative to content, never both). Jeder Block braucht type; erlaubte Typen: paragraph, heading, keyValue, checkboxRow, fillLine, table, totals, columns, box, image, spacer, pageBreak. Die vollstaendige Feldreferenz liegt in der MCP-Ressource frankki://blocks-guide. EN: every block needs type; read frankki://blocks-guide for the complete field reference. | |
| design | No | Exakter Briefdesign-Snapshot aus template_apply_with_merge_fields.composition.design. Hat Vorrang vor designId und verhindert, dass eine spaetere Designaenderung die freigegebene Vorlagenkomposition veraendert. EN: Exact letter-design snapshot from template_apply_with_merge_fields.composition.design. Takes precedence over designId and prevents later design edits from changing the released template composition. | |
| dryRun | No | ||
| content | No | Brieftext als Fliesstext. Entweder content ODER blocks, nie beides. EN: letter body as plain text. Either content OR blocks, never both. | |
| express | No | ||
| subject | No | ||
| auditTag | No | ||
| designId | No | Ein gespeichertes Briefdesign fuer diesen Versand verwenden. Ohne Angabe gilt in dieser Reihenfolge: das am Entwurf gespeicherte Design (beim Versand ueber letterId), sonst das Standard-Design des Absenderprofils, sonst keins. EN: Use a saved letter design for this send. If omitted, in order: the design stored on the draft (when sending by letterId), else the sender profile default design, else none. | |
| letterId | No | Bestehender Entwurf. Alternativ den Brief inline angeben. EN: Existing draft. Alternatively provide the letter inline. | |
| reasoning | No | ||
| reference | No | Werte fuer diesen Brief (Vorgangsnummer, Ihr Zeichen, Kundennummer, QR-Parameter ...). Sie fuellen den Infoblock und den Barcode. EN: Per-letter values (Vorgangsnummer, your reference, customer number, QR parameters ...). They fill the info block and the barcode. | |
| styleDefs | No | Benannte Stile fuer das ganze Dokument (max. 24). Bloecke referenzieren sie ueber style. EN: named document styles (max 24); blocks reference them via style. Vollstaendige Stilfelder: frankki://blocks-guide. EN: complete style fields: frankki://blocks-guide. | |
| presetName | No | ||
| templateId | No | ||
| scheduledAt | No | ||
| signatureId | No | ||
| approvalMode | No | Wie der Versand freigegeben wird. 'draft' und 'review' stellen ihn in die Freigabe-Warteschlange, statt sofort zu versenden. Wichtig: auch diese beiden reservieren den Betrag beim Einreichen im Wallet, damit ein freigegebener Brief spaeter nicht am Guthaben scheitert. Ohne Deckung kommt INSUFFICIENT_FUNDS zurueck und es wird nichts angelegt. Willst du nur einen Entwurf ohne Wallet-Deckung, nutze letter_create_draft. EN: How the send is approved. 'draft' and 'review' put it into the approval queue instead of sending immediately. Note: both still reserve the amount in the wallet at submit time, so an approved letter cannot fail on funds later. Without cover the call returns INSUFFICIENT_FUNDS and nothing is created. For a plain draft with no wallet cover, use letter_create_draft. | |
| deliveryType | No | Standard standard. EN: Defaults to standard. | |
| letterheadId | No | Bestimmter Briefkopf fuer diesen Versand. Ohne Angabe wird der Standard-Briefkopf verwendet. EN: A specific letterhead for this send. If omitted, the default letterhead is used. | |
| maxCostEuros | No | Maximalbetrag in Euro. Liegt der Preis darueber, wird abgebrochen. EN: Maximum amount in euros. If the price is above it, the call is aborted. | |
| priceVersion | No | Optional: die priceVersion aus einem vorherigen shipping_quote. Weicht der Preis beim Versand davon ab, wird mit PRICE_CHANGED abgebrochen, bevor etwas berechnet wird. EN: Optional: the priceVersion from an earlier shipping_quote. If the price at send time differs, the call is aborted with PRICE_CHANGED before anything is charged. | |
| recipientZip | No | ||
| clientOrderId | No | Idempotenzschluessel: eine beliebige Zeichenkette (1-200 Zeichen, z. B. 'mahnung-kunde42-2026-07-20'; kein UUID-Format noetig). Ein erneuter Aufruf mit demselben Wert liefert dieselbe Bestellung, statt ein zweites Mal zu versenden. Der Namensraum 'approval:' ist reserviert. EN: Idempotency key: any string (1-200 characters, e.g. 'mahnung-kunde42-2026-07-20'; no UUID format required). A repeat call with the same value returns the same order instead of sending a second time. The 'approval:' namespace is reserved. | |
| recipientCity | No | ||
| recipientName | No | ||
| coverTemplateId | No | Anschreiben für eine eigenständige Formularvorlage. EN: Cover letter for a standalone form template. | |
| mandantennummer | No | ||
| recipientStreet | No | ||
| senderAddressId | No | ||
| senderProfileId | No | ||
| includeSignature | No | ||
| recipientCompany | No | ||
| recipientCountry | No | ISO-3166-alpha-2, Standard DE. EN: ISO 3166-1 alpha-2, defaults to DE. | |
| letterheadEnabled | No | Auf false setzen, um den Briefkopf fuer diesen einen Versand zu unterdruecken. EN: Set to false to suppress the letterhead for this one send. | |
| templateVersionId | No | Exakte freigegebene Vorlagenversion. Nur gemeinsam mit templateId; der Server rendert sie mit templateMergeValues neu und ignoriert mitgesendeten Betreff/Inhalt. EN: Exact released template version. Only with templateId; the server rerenders it with templateMergeValues and ignores caller-supplied subject/content. | |
| templateMergeValues | No | Merge-Werte fuer die exakte Vorlagenversion. EN: Merge values for the exact template version. | |
| quotedUnitPriceCents | No | Optional: der Stueckpreis in Cent aus einem vorherigen shipping_quote (unitPriceCents). Ist er gesetzt, entscheidet er den PRICE_CHANGED-Abgleich und liefert den alten Preis im Fehler mit. EN: Optional: the unit price in cents from an earlier shipping_quote (unitPriceCents). If set, it decides the PRICE_CHANGED comparison and returns the old price in the error. | |
| recipientHouseNumber | No | ||
| coverTemplateVersionId | No | Exakte freigegebene Version des Anschreibens. EN: Exact released version of the cover letter. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds rich context: it checks six gates, defaults to an approval queue where a human decides via approval_decide, dryRun is a full rehearsal through all six gates and is free, dryRun returned letterId is a probe handle and NOT_FOUND in letter_get/letter_preview, and there are two recovery paths. It also clarifies that the actual send is released only after approval. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured and front-loaded with the core purpose, then flows into preview guidance, content modes, approval flow, dryRun, and alternatives. Every sentence carries useful information. However, it is doubled by full German and English repetition, which makes it less concise than a single-language version would be. It is structured well enough to stay navigable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 40 parameters, nested objects, and no output schema, the description is exceptionally complete. It covers the full workflow (preview, content variants, approval queue, dryRun, recovery), explains side effects (approval, wallet reservation indirectly via approvalMode in schema), gives a concrete blocks example, references the full blocks guide, and clearly positions sibling tools. There is no major missing context that would impair an agent's ability to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 53%, so baseline is 3. The description adds semantic meaning beyond the schema for key parameters: explains content vs blocks vs letterId (exactly one of the two inline modes), gives a compact blocks example, describes dryRun semantics, and points to the blocks-guide resource. It does not cover all 40 parameters, but it compensates for the most complex/ambiguous ones, lifting it above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb and resource: 'Versendet einen Brief physisch per Post' (sends a letter physically by post), and outlines the full process (checks sender, address, AVV, limits, creates PDF, calculates price, releases). It also explicitly differentiates from siblings: letter_create_draft and letter_preview are for viewing rendered pages before sending, shipping_quote is for cost planning, and order_cancel/order_fix_resubmit are recovery paths. This provides strong distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use and when-not-to-use guidance: look at the letter as an image first with letter_create_draft/letter_preview; use letterId or inline content with exactly one of content/blocks; default goes to approval queue then order_status; dryRun is a free rehearsal with a probe letterId that returns NOT_FOUND in letter_get/letter_preview; for a real draft use letter_create_draft; shipping_quote answers cost while content is still planned. It also names recovery tools (order_cancel, order_fix_resubmit), making alternatives explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_send_batchBriefe im Stapel versendenADestructiveInspect
Versendet mehrere Briefe in einem Stapel. Jeder Eintrag wird einzeln geprüft, bepreist und versendet; ein fehlerhafter Eintrag lässt den Rest des Stapels weiterlaufen (mit stopOnError hält der Stapel dort an). Der ganze Stapel wird als EINE einzige Freigabe für alle Empfänger zusammen eingereicht: der Mensch sieht die Empfängerliste, die Anzahl und die Gesamtkosten und entscheidet mit einem approval_decide über alles. Bei Freigabe gehen alle Einträge raus, bei Ablehnung wird die gesamte Reservierung zurückgebucht. Mit dryRun bleibt es bei der Probe: kostenfrei, und die Briefe bleiben liegen. EN: Sends several letters in one batch. Each entry is checked, priced and sent individually; a failing entry lets the rest of the batch continue (with stopOnError the batch stops there). The whole batch is submitted as ONE single approval covering every recipient: the human sees the recipient list, the count and the total cost and decides on all of it with a single approval_decide. On approval every entry goes out, on rejection the entire reservation is refunded. With dryRun it stays a rehearsal: free of charge, and the letters stay put.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Liste der Briefe im Stapel. Jeder Eintrag traegt seinen eigenen clientOrderId und genau eine Quelle: eine letterId ODER einen inline Brief. EN: List of letters in the batch. Each entry carries its own clientOrderId and exactly one source: a letterId OR an inline letter. | |
| dryRun | No | Simuliert den ganzen Stapel: prueft jeden Eintrag, berechnet aber nichts und versendet nichts. EN: Simulates the whole batch: validates each entry but charges nothing and sends nothing. | |
| presetName | No | Optionales Preset fuer den ganzen Stapel; pro Eintrag ueberschreibbar ist nicht vorgesehen. EN: Optional preset for the whole batch; per-entry override is not supported. | |
| stopOnError | No | Bricht den Stapel beim ersten Fehler ab. Standard false. EN: Aborts the batch on the first error. Default false. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses critical behavior beyond the destructiveHint annotation: per-entry validation and pricing, error continuation, the single-approval submission, full dispatch on approval vs. full refund on rejection, and the free dryRun simulation. This substantially exceeds what annotations communicate, with 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is thorough and well-structured, but it is bilingual, repeating the same content in German and English, which doubles the length. It is still appropriately sized for the complexity of the batch behavior and front-loads the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the end-to-end workflow: per-item processing, approval behavior, error handling with stopOnError, and dryRun semantics, including the refund on rejection. With no output schema, the description sufficiently explains what the agent can expect without needing to enumerate return fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents dryRun, presetName, stopOnError, and items. The description mentions dryRun and stopOnError in prose but adds no parameter-specific semantics beyond the schema, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Versendet mehrere Briefe in einem Stapel' / 'Sends several letters in a batch', giving a specific verb, resource, and scope. It clearly distinguishes this batch tool from the sibling order_send by covering multiple letters and a single-approval workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clarifies when to use this tool: to send a batch of letters as one approval with a single approval_decide decision. It explains options like stopOnError and dryRun, but does not explicitly name an alternative for single-letter sending (e.g., order_send), so there is no explicit exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_statusAuftragsstatus abrufenARead-onlyInspect
Liefert den aktuellen Status eines Auftrags samt chronologischer deutscher Sendungsverfolgung, der Sendungsnummer (nur bei Einschreiben), der voraussichtlichen Zustellung und ob sich der Brief noch stornieren lässt. Beim Status awaiting_partner_fix wartet der Brief auf eine Korrektur: rufe dann order_fix_resubmit auf. Solange cancellable true ist, kann order_cancel den Versand noch stoppen. EN: Returns the current status of an order including a chronological German tracking history, the tracking number (registered mail only), the estimated delivery and whether the letter can still be cancelled. On status awaiting_partner_fix the letter is waiting for a correction: call order_fix_resubmit. While cancellable is true, order_cancel can still stop the send.
| Name | Required | Description | Default |
|---|---|---|---|
| orderId | Yes | ||
| reasoning | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, but the description adds valuable behavioral context: the conditional tracking number for registered mail only, the inclusion of estimated delivery, and the cancellable flag that influences next steps. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is bilingual, which doubles its length but serves a practical purpose. Each sentence conveys distinct information: what is returned, the conditional tracking number, and action guidance. It is structured and front-loaded with the core purpose, though a more concise single-language version could be slightly tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description lists the key return fields: status, tracking history, tracking number, estimated delivery, and cancellable flag. It also covers the important status-specific behavior and related actions. Missing minor details like possible error cases, but it is sufficiently complete for a read-only status query.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate for parameter information. However, it does not explain the 'reasoning' parameter at all, and only implicitly references orderId via 'order status'. The description adds minimal value beyond what is obvious from the tool name and schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'delivers the current status of an order' and lists specific data returned: tracking history, tracking number (registered mail only), estimated delivery, and cancellability. It uses a specific verb and resource, and the mention of related tools (order_fix_resubmit, order_cancel) distinguishes 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use vs alternatives: on status awaiting_partner_fix, call order_fix_resubmit; while cancellable is true, order_cancel can still stop the send. This clearly guides the agent on when to use this read-only status tool versus other actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preset_saveVoreinstellung speichernAInspect
Speichert eine benannte Voreinstellung (Konfigurations-Bundle) im Partnerprofil. Der Name ist pro Partner eindeutig. Limits in der Voreinstellung werden unverändert gespeichert und dienen als Notiz. Durchgesetzt werden ausschließlich die im Web gesetzten Konto- und Sub-Wallet-Limits. EN: Saves a named preset (configuration bundle) in the partner profile. The name is unique per partner. Limits inside the preset are stored as-is and serve as a note. Enforcement runs exclusively on the account and sub-wallet limits set in the web app.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Eindeutiger Name der Voreinstellung (pro Partner). EN: Unique name of the preset (per partner). | |
| preset | Yes | Das Konfigurations-Bundle (Absender/Unterschrift/Briefkopf, Versand, Kennzeichnung, Freigabe, Planung, Limits, auditTagPrefix). EN: The configuration bundle (sender/signature/letterhead, shipping, labelling, approval, scheduling, limits, auditTagPrefix). | |
| reasoning | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description reveals that limits inside the preset are stored as-is and serve only as a note, while enforcement runs on web-set limits. It also notes that the name is unique per partner. This adds meaningful behavioral context, though it does not address overwrite behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is bilingual, repeating the same content in German and English, which doubles length. Despite the repetition, each sentence provides valuable information and the main action is front-loaded. It remains reasonably concise for the information conveyed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, and the description does not explain return values or error behavior. Key behaviors like unique names and limit enforcement are covered, but the 'reasoning' parameter is unexplained, and there is no mention of handling duplicate names. Sufficient for a save tool but with notable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, covering 'name' and 'preset' but not 'reasoning'. The description adds that the name is unique per partner and that limits within the preset are non-enforced, which deepens understanding beyond the schema. However, the 'reasoning' parameter remains undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Saves a named preset (configuration bundle) in the partner profile' using a specific verb and resource. It distinguishes from sibling tools like letter_design_list_presets, which target letter design presets, by emphasizing the partner profile scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions. However, the partner-profile focus and description of preset behavior provide implied context for use, but no explicit guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pricing_tiersStaffelpreise abrufenARead-onlyInspect
Liefert die Staffelpreise (Mengenrabatte) von FrankKi: ab welcher Monatsmenge welcher Beispielpreis pro Brief gilt. Nutze das, wenn jemand nach Mengenrabatt, Volumenpreis, Staffelpreis oder Großkundenpreis fragt. Die Beispielpreise gelten für einen einseitigen Standardbrief in Schwarzweiß innerhalb Deutschlands, der echte Preis pro Brief hängt zusätzlich von Seitenzahl, Farbe, Versandart und Zielland ab (dafür shipping_quote). EN: Returns FrankKi's volume tiers (bulk discounts): from which monthly quantity which example price per letter applies. Use this when someone asks about bulk discounts, volume pricing or enterprise pricing. The example prices are for a one-page black and white standard letter within Germany; the real per-letter price also depends on page count, color, delivery type and destination country (use shipping_quote for that).
| Name | Required | Description | Default |
|---|---|---|---|
| reasoning | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds important context beyond the annotations (readOnlyHint=true, destructiveHint=false): it explicitly states the prices are 'Beispielpreise' (example prices) for a one-page black-and-white standard letter within Germany, not final quotes. It warns that actual prices depend on additional factors and directs to shipping_quote. This discloses the limitation of the tool's output, which is valuable behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main purpose, followed by usage and caveats. It is bilingual (German and English), which adds length but serves the tool's likely audience. The repetition across languages is not purely redundant; each language conveys the full message. It is concise enough without wasting words, though the double-language format keeps it from being maximally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, read-only pricing tiers lookup with no required parameters, the description covers the core purpose, usage triggers, and critical limitations. It even directs to an alternative for real quotes. However, it does not describe the return format or structure of the tier data (e.g., array of objects), and the undocumented 'reasoning' parameter leaves a small gap. Still, it is otherwise complete for the expected use case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter, 'reasoning', with zero schema description coverage. The tool description does not mention this parameter at all, let alone explain what it is for or how to use it. With 0% schema coverage and no compensation in the description, the agent has no guidance on what to pass as 'reasoning'. This is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Liefert die Staffelpreise (Mengenrabatte) von FrankKi' – delivers volume tiers/bulk discounts. It specifies the exact resource (FrankKi pricing tiers) and what information is provided (monthly quantity to example price per letter). It distinguishes itself from the sibling tool shipping_quote by clarifying that this is for example prices only.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Nutze das, wenn jemand nach Mengenrabatt, Volumenpreis, Staffelpreis oder Großkundenpreis fragt' – use when asks about bulk/volume/discount pricing. It also names an alternative: 'dafür shipping_quote' – for real per-letter pricing based on page count, color, delivery type, and destination, use shipping_quote. This gives clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
profile_getPartnerprofil abrufenARead-onlyInspect
Liefert das Partnerprofil im Überblick: Standard-Absenderadresse, hinterlegte Signatur und Briefkopf, gespeicherte Presets, eine kurze Wallet-Zusammenfassung und das aktuelle Preismodell des Partners (Standardpreis oder Mengenstaffel, inklusive nächster Staffelstufe). EN: Returns an overview of the partner profile: default sender address, stored signature and letterhead, saved presets, a short wallet summary and the partner's current pricing (standard price or volume tier, including the next tier threshold).
| Name | Required | Description | Default |
|---|---|---|---|
| reasoning | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds context about the returned contents, which is useful but does not disclose additional behavioral traits like auth requirements, rate limits, data freshness, or how the overview is assembled. It goes slightly beyond annotations but lacks richer behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence (plus an English translation). It front-loads the main purpose and lists all components efficiently. The bilingual duplication adds some length but is not wasteful; each language serves a potential audience. It could be slightly more concise if only one language were used, but the structure is clean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description does a good job of enumerating the return content (address, signature, letterhead, presets, wallet, pricing). It is complete for an overview tool, though it omits any detail about the 'reasoning' parameter and does not mention potential side effects or prerequisites. The absence of output schema raises the burden, but the description covers the major aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema contains a single optional parameter 'reasoning' with 0% description coverage in both schema and tool description. The description does not mention this parameter at all, failing to compensate for the low schema coverage. The agent is left to infer its purpose from the parameter name alone, which is insufficient for proper invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('Liefert'/'Returns') and resource ('Partnerprofil'). It enumerates the exact components returned (sender address, signature, letterhead, presets, wallet summary, pricing), which unambiguously distinguishes it from sibling tools like sender_profile_get or wallet_balance that focus on narrower subsets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies its usage as a high-level overview tool by listing the aggregated data. However, it does not explicitly state when to prefer this tool over alternatives or provide exclusions (e.g., 'for detailed wallet info use wallet_balance'). The context is clear, but there is no direct when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_list_or_cancelGeplante Sendungen verwaltenADestructiveInspect
Listet die geplanten Sendungen des Partners auf oder bricht eine geplante Sendung ab. Beim Abbrechen wird die reservierte Summe wieder freigegeben. EN: Lists the partner's scheduled sends or cancels a scheduled send. On cancellation the reserved amount is released again.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | list = Planungen auflisten, cancel = eine Planung abbrechen. EN: list = list schedules, cancel = cancel a schedule. | |
| dryRun | No | Bei action='cancel' nur eine Vorschau: zeigt die freizugebende Summe, ohne die Planung abzubrechen. EN: For action='cancel', a preview only: shows the amount to be released without cancelling the schedule. | |
| reasoning | No | ||
| scheduleId | No | Erforderlich bei action='cancel'. EN: Required for action='cancel'. | |
| statusFilter | No | Optionaler Statusfilter für action='list'. EN: Optional status filter for action='list'. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false; the description adds valuable behavioral context by explaining that cancelling releases the reserved amount. This goes beyond the annotation by describing the financial side effect, though it doesn't cover all possible behaviors like irreversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise bilingual sentences, front-loaded with the core functionality and a key side effect. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (dual action, 5 params) and the rich schema/annotations, the description covers the main purpose and the critical cancellation effect. It doesn't explain output format or error conditions, but the schema and annotations fill most gaps. A small gap remains because there's no output schema and no mention of what the list returns, so deduct one point.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80% (reasoning param lacks description). The tool description does not add new parameter-level details beyond the schema; the effect of releasing the reserved amount is already present in dryRun's schema description. Therefore baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb+resource: 'Lists the partner's scheduled sends or cancels a scheduled send.' This distinguishes it from siblings like letter_schedule or order_cancel by focusing on managing existing scheduled sends, including the effect of releasing reserved amounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (listing or cancelling scheduled sends) but does not explicitly mention alternatives or when-not-to-use conditions. It lacks a direct comparison to sibling tools, 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.
sender_profile_getAbsenderprofil abrufenARead-onlyInspect
Liefert ein einzelnes Absenderprofil mit allen Pflichtangaben, Bankverbindung und Disclaimer. EN: Returns a single sender profile with all mandatory details, bank account and disclaimer.
| Name | Required | Description | Default |
|---|---|---|---|
| profileId | Yes | ||
| reasoning | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly and non-destructive. The description adds value by specifying exactly what data is returned (mandatory details, bank account, disclaimer), which is useful behavioral context beyond the annotations. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences (one German, one English), front-loaded with the core action and result. Every word earns its place, with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one required param and no output schema, the description covers the key return information. It does not explain error cases (e.g., profile not found), but given the low complexity this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter meaning. It does not mention profileId or reasoning at all, leaving the agent to infer from the schema alone. The returned content is described, but not the input parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns a single sender profile with mandatory details, bank account, and disclaimer. It uses a specific verb (returns) and resource (sender profile), and distinguishes from list/upsert siblings by emphasizing 'single'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for fetching one specific profile via 'single', but does not explicitly mention when to use it over sender_profile_list or provide exclusions/alternatives. No clear 'use this when' guidance beyond the singular phrasing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sender_profile_listAbsenderprofile auflistenARead-onlyInspect
Listet alle Absenderprofile des Partners mit ihrer Rechtsform und ob die Pflichtangaben vollständig sind. EN: Lists all of the partner's sender profiles with their legal form and whether the mandatory details are complete.
| Name | Required | Description | Default |
|---|---|---|---|
| reasoning | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only nature is known. The description adds value by revealing that it returns all profiles (no filtering) and specifies the included attributes (legal form, mandatory details completeness). This conveys scope beyond the basic safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description duplicates the same content in German and English, making the second sentence redundant. It is not concise; the English translation adds no new information and should be omitted or merged. The front-loaded purpose is good, but the redundancy lowers the score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with no required parameters and no output schema. The description covers the main purpose and some output content, but it lacks details on return structure, pagination, or any limits on the 'all' list. This is a minimum viable description but leaves room for clarification.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one optional parameter 'reasoning' with no schema description, and schema description coverage is 0%. The description does not explain this parameter, forcing the agent to infer its purpose. Since the parameter is optional and likely meta, the impact is moderate, but the description still fails to compensate for the missing information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all sender profiles of the partner, including their legal form and completeness of mandatory details. This distinguishes it from sibling tools like sender_profile_get (single profile) and sender_profile_upsert (write operation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when you need a full overview of sender profiles, but it does not explicitly state when not to use it or mention alternatives. No exclusion or comparison to related list tools is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sender_profile_upsertAbsenderprofil anlegen oder bearbeitenAInspect
Legt ein Absenderprofil an oder bearbeitet es: Rechtsform, Pflichtangaben, optional Bankverbindung, Haftungsausschluss und Standard-Briefpapier. Ein unvollstaendiges Profil wird gespeichert und meldet die fehlenden Felder zurueck, sodass du es schrittweise ergaenzen kannst. Versenden ist mit vollstaendigen Pflichtangaben moeglich. EN: Creates or edits a sender profile: legal form, mandatory details, optionally bank details, disclaimer and default letterhead. An incomplete profile is saved and reports its missing fields back, so you can complete it step by step. Sending works once they are complete.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ID eines bestehenden Profils zum Bearbeiten. Weglassen legt ein neues an. EN: Id of an existing profile to edit. Omitting creates a new one. | |
| isDefault | No | true macht dieses Profil zum Standardabsender; jedes andere verliert die Markierung. Das erste angelegte Profil wird automatisch Standard. EN: true makes this the default sender. The first profile created becomes default. | |
| reasoning | No | ||
| disclaimer | No | Optionaler Haftungsausschluss oder Fusszeilentext, unabhaengig von der Vollstaendigkeit. EN: Optional disclaimer or footer, independent of completeness. | |
| rechtsform | Yes | Rechtsform des Absenders, zum Beispiel gmbh, ug, gbr, verein, freiberufler. Sie bestimmt die verlangten Pflichtangaben. EN: The sender's legal form. It determines the required mandatory details. | |
| displayName | No | Optionaler Anzeigename in Listen. EN: Optional display name in lists. | |
| bankverbindung | No | Optionale Bankverbindung, unabhaengig von der Vollstaendigkeit. EN: Optional bank details, independent of completeness. | |
| pflichtangaben | Yes | Pflichtangaben als Objekt, zum Beispiel firmenname, strasse, plz, ort, land, registergericht, ustIdNr. sender_profile_validate nennt die je Rechtsform verlangten Felder. EN: Mandatory details as an object. sender_profile_validate names the fields required per legal form. | |
| defaultDesignId | No | Briefpapier fuer Briefe, die selbst keines nennen. Weglassen behaelt den Wert, null loescht ihn. EN: Letterhead for letters naming none. Omitting keeps the value, null clears it. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description adds two non-obvious behaviors: incomplete profiles are persisted and missing fields are reported, and sending is gated on mandatory detail completeness. This helps the agent anticipate partial-save semantics without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is bilingual, doubling the length, but still only two short paragraphs. The German text is front-loaded with the primary action; the English mirror is useful, and there is no filler. Slight redundancy prevents a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description only mentions that missing fields are reported back, leaving the full response shape (success identifier, complete profile echo, error format) unspecified. For a 9-parameter upsert with nested objects, this is a notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 89% and the description merely restates categories that the schema already describes (e.g., 'optional Bankverbindung' matches the schema's optional flag). It does not add meaning for parameters like `reasoning` (undocumented in schema but also not in description) or the nested `bankverbindung` structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action ('Legt ein Absenderprofil an oder bearbeitet es') and enumerates the fields managed (Rechtsform, Pflichtangaben, optional Bankverbindung, Haftungsausschluss, Standard-Briefpapier), clearly distinguishing it from read/validate siblings like sender_profile_get/list/validate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the tool can store incomplete profiles and report missing fields for stepwise completion, and notes that sending requires complete mandatory details. This provides clear context, though it does not explicitly name alternatives or when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sender_profile_validateAbsenderprofil prüfenARead-onlyInspect
Prüft, ob ein Absenderprofil (per profileId) oder ein vorgeschlagener Feldsatz alle Pflichtangaben für seine Rechtsform enthält. Gib genau eine Form an: profileId ODER rechtsform + proposedFields. proposedFields ist ein Objekt; ein JSON-kodierter Objekt-String wird ebenfalls akzeptiert. Liefert valid, missingFields und weiche Hinweise. Meldet eine Lücke als Ergebnis und läuft dabei durch. EN: Checks whether a sender profile (by profileId) or a proposed field set contains all mandatory details for its legal form. Provide exactly one form: profileId OR rechtsform + proposedFields. proposedFields is an object; a JSON-encoded object string is also accepted. Returns valid, missingFields and soft hints. Reports a gap as a result and keeps running.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only safety is covered. The description adds that a validation gap is 'als Ergebnis' and 'läuft dabei durch' (keeps running), plus the return fields 'valid, missingFields und weiche Hinweise', which are behavioral details beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is organized: purpose, usage requirement, parameter type, output, and error behavior. However, the entire description is duplicated verbatim in German and English after 'EN:', roughly doubling length without new information, which makes it less concise than it could be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers both input modes, the output shape, and the non-throwing behavior, which is important because there is no output schema. It does not mention the optional 'reasoning' parameter or clarify whether proposedFields is required, but the core usage is adequately specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, baseline is 3, but the description adds that proposedFields is an object and that a JSON-encoded string is accepted, which is not in the schema. It also clarifies the oneOf exclusivity. There is a minor mismatch: it says 'rechtsform + proposedFields' while the schema only requires rechtsform, but the added format guidance still helps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Prüft' (checks) and names the resource 'Absenderprofil' or proposed field set, specifying the validation against 'Pflichtangaben für seine Rechtsform'. This clearly distinguishes it from retrieval/update siblings like sender_profile_get, sender_profile_list, and sender_profile_upsert.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to provide exactly one form—'profileId ODER rechtsform + proposedFields'—which tells the agent how to choose between the two schema variants. It lacks comparison to alternative tools, but this is a standalone validation tool, so the input-mode guidance gives sufficient context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_fix_linkAuf der Website erledigenARead-onlyInspect
Gibt einen Punkt an den Menschen im Browser weiter: Guthaben aufladen, Einwilligung (AVV) unterschreiben oder das Absender-Profil vervollstaendigen. Liefert die passende Seite und eine Karte, die den Briefentwurf sichtbar stehen laesst und selbst merkt, wenn der Mensch zurueck ist. Bezahlt wird immer im Browser. EN: Hands one item over to the human in a browser: top up the balance, sign the data processing agreement or complete the sender profile. Returns the matching page plus a card that visibly keeps the letter draft and notices by itself when the human is back. Payment always happens in the browser.
| Name | Required | Description | Default |
|---|---|---|---|
| gap | Yes | Welcher Punkt uebergeben wird: wallet (Guthaben), avv (Einwilligung) oder senderProfile (Absender-Profil). EN: Which item is handed over: wallet (balance), avv (consent) or senderProfile (sender profile). | |
| reasoning | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is established. The description adds non-obvious behavioral details: it returns a card that 'visibly keeps the letter draft' and 'notices by itself when the human is back,' plus the payment-in-browser rule. This goes beyond annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single bilingual paragraph, with each language version packed with necessary information. It is front-loaded with the main action and then explains the return value and behavior. Slightly verbose due to repetition in German and English, but acceptable for a multi-language tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately explains what the tool returns (matching page and card) and covers key behavior (auto-detection of user return, payment in browser). For a tool with a simple 2-param input, this is sufficiently complete. Missing details about the card or monitoring mechanics are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description re-states the three enum values for the 'gap' parameter, but the schema already documents them in detail. It adds no meaning for the 'reasoning' parameter, which has no schema description (coverage ~50%). The description doesn't compensate for that missing parameter, though it slightly reinforces the enum semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb phrase 'Gibt einen Punkt an den Menschen im Browser weiter' (hands one item over to the human in a browser) and clearly lists the three possible items (top up balance, sign AVV, complete sender profile). This distinguishes it from related sibling tools like wallet_topup_link or sender_profile_upsert by covering a unified hand-off mechanism with multiple gap types and a special card.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when a human needs to perform one of the three listed browser actions. It also adds a behavioral constraint ('Payment always happens in the browser') and states that it returns a page plus a card, giving clear context. However, it does not explicitly exclude alternatives or mention when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_status_appEinrichtungsstand fuer die Karte lesenARead-onlyInspect
Nur fuer die FrankKi-Karten im Chat: liest den aktuellen Einrichtungsstand, damit die Stand-Karte frisch bleibt und die Uebergabe-Karte selbst merkt, wenn der Mensch aus dem Browser zurueck ist. EN: For the FrankKi cards in the chat only: reads the current setup state so the status card stays fresh and the handover card notices by itself when the human is back from the browser.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds context about the tool's role in keeping cards fresh and detecting human return, which goes beyond the structured data. However, it doesn't detail the exact state contents or return format, but this is sufficient for a simple read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with scope and purpose, but it repeats the same content in German and English, adding redundancy. It is still concise overall, but not as tight as possible. Each sentence earns its place, though the translation is a duplication.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, read-only, no output schema), the description provides sufficient context. It explains the tool's purpose, its limited applicability, and the integration with other cards. The description is complete for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters and schema coverage is 100% (vacuously). No parameter explanation is needed. The description's mention of 'current setup state' clarifies what the tool reads, but adds no parameter-specific details. Baseline for 0 parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'liest den aktuellen Einrichtungsstand' (reads the current setup state). It specifies the resource (setup state) and adds scope ('Nur fuer die FrankKi-Karten im Chat'), which distinguishes it from other tools. This is a specific verb+resource statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: 'only for the FrankKi cards in the chat'. It also explains the purpose ('so the status card stays fresh and the handover card notices when the human is back'), which implies when to use it. It does not explicitly name alternatives, but the exclusivity clause serves as guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shipping_quoteVersandpreis ermittelnARead-onlyInspect
Ermittelt den Preis, das Briefformat, die Versandart und die voraussichtliche Laufzeit für einen geplanten Brief, bevor er versendet wird. Das ist die Schätzung für den Fall, dass der Brief erst geplant ist: du gibst nur Seitenzahl, Land und Versandart an. Steht der Brief schon fest, versendest du ihn mit order_send (order_send mit dryRun:true liefert dann den genaueren Preis für genau diesen Brief). Der Preis gilt pro Brief und enthält bereits die Mengenstaffel des Partners, falls eine greift (Feld tierId). Für die Staffelpreise selbst nutze pricing_tiers. EN: Determines the price, letter format, shipping method and estimated delivery time for a planned letter, before it is sent. This is the estimate for when the letter is still only planned: you only supply page count, country and delivery type. Once the letter exists, order_send performs the actual send (and order_send with dryRun:true gives the more precise price for that specific letter). The price is per letter and already includes the partner's volume tier where one applies (field tierId). For the volume tiers themselves, call pricing_tiers.
| Name | Required | Description | Default |
|---|---|---|---|
| color | Yes | Farbannahme fuer eine allgemeine Schaetzung. Mit letterId erkennt FrankKi die Farbe aus der gespeicherten Vorschau und ignoriert diesen Wert. EN: Colour assumption for a general estimate. With letterId, FrankKi detects colour from the stored preview and ignores this value. | |
| country | No | ISO 3166-1 alpha-2, Standard DE. EN: ISO 3166-1 alpha-2, defaults to DE. | |
| express | No | ||
| letterId | No | Optional: die letterId eines bestehenden Entwurfs. Dann kommen Seitenzahl und Farbe aus der gespeicherten Vorschau; fuer den endgueltigen Preis inklusive Anhaengen nutze order_send mit dryRun:true. EN: Optional: the letterId of an existing draft. Page count and colour then come from the stored preview; for the final price including attachments, use order_send with dryRun:true. | |
| pageCount | Yes | Seitenzahl fuer eine allgemeine Schaetzung. Mit letterId verwendet FrankKi die gespeicherte Seitenzahl und ignoriert diesen Wert. EN: Page count for a general estimate. With letterId, FrankKi uses the stored page count and ignores this value. | |
| reasoning | No | ||
| deliveryType | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description need not repeat safety. It adds useful behavior: with letterId, page count and color are taken from the stored preview and ignore input values; the price already includes the partner's volume tier. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and each sentence adds a distinct fact (planned-letter use case, alternative order_send, volume tier inclusion). The bilingual repetition doubles length but is systematic and not rambling. It earns a 4, not 5, due to the extra length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters and no output schema, the description covers purpose, key behavioral nuances, alternative tools, and pricing model. It describes the quote's output fields (price, format, shipping method, delivery time) conceptually. Missing semantics for express and reasoning prevent a perfect score, but overall it is quite complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 57%, so the description should compensate. It clarifies pageCount, color, letterId, and country default behavior, but leaves express and reasoning entirely unexplained. The line 'du gibst nur Seitenzahl, Land und Versandart' omits the required color parameter, making it slightly misleading.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('ermittelt') and clearly identifies the resource: price, letter format, shipping method, and estimated delivery time. It explicitly contrasts with order_send (actual sending) and pricing_tiers (volume tiers), making it easy to distinguish from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool (for a planned letter before sending) and when to use alternatives (order_send with dryRun:true for a more precise price on an existing letter; pricing_tiers for volume tiers). This provides clear when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
signature_listUnterschriften auflistenARead-onlyInspect
Listet die im Partnerprofil gespeicherten Unterschriften mit einer kurzlebigen Vorschau-URL (24 Stunden gültig). EN: Lists the signatures stored in the partner profile with a short-lived preview URL (valid for 24 hours).
| Name | Required | Description | Default |
|---|---|---|---|
| reasoning | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a read-only operation, and the description adds the key behavioral trait that the preview URL expires after 24 hours. It also specifies scope (partner profile), which is useful context beyond the annotations. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, one German and one English, both conveying the same essential information. It is front-loaded with the main verb 'Listet' and avoids unnecessary detail. The bilingual redundancy is acceptable for broader agent compatibility.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 one optional parameter and no output schema, the description covers the core purpose and a key detail (URL expiry). However, it omits any explanation of the 'reasoning' parameter and the exact shape of the response, leaving some ambiguity for agents. Overall adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter 'reasoning' with no description, and schema description coverage is 0%. The description does not mention this parameter at all, leaving the agent without guidance on how to populate it. This is a significant gap, as the description must compensate for the poor schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists signatures stored in the partner profile, with a specific verb and resource. It distinguishes itself from sibling tools like signature_upload by focusing on listing rather than uploading. The additional detail about the short-lived preview URL further clarifies its function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: this is for retrieving signatures with a temporary preview URL, implying when it should be used. It does not explicitly name alternatives or exclusions, but the context is sufficient for an agent to select it when listing signatures is needed. Lacks explicit comparison to other tools like signature_upload.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
signature_uploadUnterschrift hochladenAInspect
Lädt eine Unterschrift als PNG hoch und speichert sie im Partnerprofil. Die Unterschrift wird beim Versand unterhalb deines Brieftexts eingefügt. Nur PNG wird unterstützt. EN: Uploads a signature as PNG and stores it in the partner profile. On sending, the signature is inserted below your letter body. Only PNG is supported.
| Name | Required | Description | Default |
|---|---|---|---|
| widthMm | No | Gewünschte Breite in mm (optional). EN: Desired width in mm (optional). | |
| pngBase64 | Yes | Die Unterschrift als PNG (Base64). EN: The signature as PNG (Base64). | |
| reasoning | No | ||
| displayName | No | Anzeigename der Unterschrift (optional). EN: Display name of the signature (optional). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a write operation (readOnlyHint=false) and not destructive (destructiveHint=false). The description adds useful context about storage location and the only-PNG restriction, but doesn't disclose overwrite behavior, file size limits, or auth requirements. This is adequate 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core function. It is bilingual, which adds some repetition but each language version is efficient. Every sentence contributes meaning without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple upload tool with a well-covered schema and no output schema, the description sufficiently explains the purpose, storage, and usage. It lacks mention of potential side effects (e.g., overwriting existing signature) but is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, so most parameters are already documented. The description adds the meaning of the signature in the letter context and emphasizes the PNG format, but doesn't detail individual parameters further. The 'reasoning' parameter lacks description in both schema and tool description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (upload), resource (signature), format (PNG), and destination (partner profile). It explicitly mentions the signature's use in letter sending, distinguishing it from sibling tools like letterhead_upload or attachment_upload_image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context: upload a signature as PNG to be used in letters. No explicit when-not-to-use or alternatives are named, but the purpose and integration into the sending flow make the intended usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
template_apply_with_merge_fieldsVorlage mit Werten füllenARead-onlyInspect
Füllt die Platzhalter einer gespeicherten Vorlage mit deinen Werten und gibt Betreff und Inhalt oder ein vollständiges Anschreiben-Formular-Paket zurück. Bei einer Blockvorlage kommen statt content die fertigen blocks zurück. Briefkopf und Marke werden getrennt bei Vorschau oder Versand gewählt. Eine eigenständige Formularvorlage mit sendable:false und releaseBlocker:null braucht coverTemplateId aus einer direkt adressierbaren Briefvorlage; eine gespeicherte Verknüpfung bleibt nur der optionale Standard. Übergib danach templateId, templateVersionId, coverTemplateId, coverTemplateVersionId und die ursprünglichen templateMergeValues unverändert an order_send. Gib Paketabschnitte so weiter, wie sie zurückkommen. Fehlt eine Pflichtangabe, antwortet das Tool mit MERGE_FIELDS_MISSING und nennt die fehlenden oder ungültigen Felder. EN: Fills a saved template and returns subject and content or a complete cover-form package. For a block template the finished blocks are returned instead of content. Letterhead and brand are selected separately at preview or send time. A standalone form template with sendable:false and releaseBlocker:null needs coverTemplateId from a directly addressable letter template; a saved link is only the optional default. Then pass templateId, templateVersionId, coverTemplateId, coverTemplateVersionId and the original templateMergeValues unchanged to order_send. Pass package sections on exactly as they come back. If a required value is missing, the tool returns MERGE_FIELDS_MISSING and lists the missing or invalid fields.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | Sprache fuer die Formatierung von Betrag und Datum. Standard de. EN: Language for money and date formatting. Defaults to de. | |
| reasoning | No | ||
| templateId | Yes | Id der Vorlage aus template_list / template_get. EN: The template ID from template_list / template_get. | |
| mergeValues | No | Zuordnung von Platzhalter-Namen zu Werten, z. B. { "provider": "Telekom" }. Der Typ des Merge-Feldes gilt: date erwartet ISO JJJJ-MM-TT, currency ganzzahlige Cent, number eine Zahl, rows eine Liste von Zeilenobjekten mit den Spaltenschluesseln der gebundenen Tabelle. EN: Mapping of placeholder names to values, e.g. { "provider": "Telekom" }. The merge field's type applies: date expects ISO YYYY-MM-DD, currency integer cents, number a number, rows a list of row objects keyed by the bound table's column keys. | |
| coverTemplateId | No | Optionales Anschreiben für eine eigenständige Formularvorlage. Ohne gespeicherte Verknüpfung ist es zum Anwenden erforderlich. EN: Optional cover letter for a standalone form template. Required when applying a form that has no saved link. | |
| mandantennummer | No | Optionaler Mandantenbezug (nur Kontext). EN: Optional client reference (context only). | |
| templateVersionId | No | Exakte freigegebene oder ersetzte Vorlagenversion. Ohne Angabe wird die aktuell freigegebene Version verwendet. EN: Exact released or superseded template version. If omitted, the currently released version is used. | |
| coverTemplateVersionId | No | Optional: exakte freigegebene Version des gewählten Anschreibens. EN: Optional exact released version of the selected cover letter. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and non-destructive. The description adds valuable behavioral details: return type differences for block templates, separate selection of letterhead and brand, the need for coverTemplateId under certain conditions, the specific error MERGE_FIELDS_MISSING, and the instruction to pass package sections through unchanged.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is logically structured and front-loaded, but the full German and English repetition doubles its length. Many sentences are redundant across the two languages, so not every sentence earns its place. Still, the information is well organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, nested objects, and no output schema, the description does a solid job: it covers the main behavior, edge cases (block templates, standalone forms), error responses, and the chaining to order_send. It doesn't provide the exact return shape, but it gives enough for an agent to understand the expected output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (88%) and already documents each parameter's meaning. The description goes further by explaining the inter-parameter workflow (e.g., passing templateId, templateVersionId, coverTemplateId, coverTemplateVersionId, and mergeValues together to order_send) and the condition for standalone form templates (sendable:false, releaseBlocker:null), which adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description immediately states the tool's core function: filling the placeholders of a saved template and returning subject/content or a complete cover-form package. It also specifies variants (block templates return blocks) and distinguishes the workflow from order_send, making it clear this tool is for preparation, not sending.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear workflow context: for standalone form templates you must provide coverTemplateId, and after applying, you should pass specific parameters unchanged to order_send. It does not explicitly name alternatives or exclusions, but the usage context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
template_archiveVorlage archivierenCDestructiveInspect
Archiviert eine Vorlage. Sie verschwindet aus den Listen und aus dem Versand, bleibt aber erhalten. Der Inhalt bleibt vollstaendig erhalten, und ein erneuter Aufruf ist unschaedlich. EN: Archives a template. It disappears from the lists and from sending but is kept. The content stays fully preserved and calling it again is harmless.
| Name | Required | Description | Default |
|---|---|---|---|
| reasoning | No | ||
| templateId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims the operation is harmless and content is fully preserved, while the annotation destructiveHint is true. This is a direct contradiction. The description should either align with the annotation or the annotation should be updated; as is, an agent would receive conflicting safety signals.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is repetitive, providing the same information in German and English, effectively doubling the length without additional value. It is still short and front-loaded, but the bilingual duplication could be trimmed to a single language or condensed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the core behavior and idempotency, but the contradiction with destructiveHint and complete absence of parameter semantics leave significant gaps. For an archive operation, the agent needs to understand the safety profile and parameter requirements, which are not adequately conveyed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has two parameters (templateId and reasoning) with no descriptions, and the tool description does not explain their purpose or usage. The description mentions 'Archives a template' but doesn't specify which parameter identifies the template or what reasoning is for. Since schema coverage is 0%, the description must compensate but fails to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool archives a template and explains the effects: it disappears from lists and sending but remains preserved. This differentiates it from potential sibling operations like deletion or discard, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for archiving templates but does not explicitly state when to use it versus other template actions (e.g., release, discard, save). No alternatives or exclusions are mentioned, so usage context is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
template_decide_appVorlagenfreigabe auf der Karte entscheidenBInspect
Nur fuer die interaktive Vorlagen-Karte: gibt die angezeigte Entwurfsversion frei oder verwirft sie, nachdem der Mensch auf der Karte gedrueckt hat. Freigeben macht die Vorlage fuer Versand und Agenten sichtbar. EN: For the interactive template card only: releases or discards the displayed draft version after the human pressed the button on the card. Releasing makes the template visible to sending and to agents.
| Name | Required | Description | Default |
|---|---|---|---|
| decision | Yes | ||
| versionId | Yes | ||
| templateId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'discards the displayed draft version', which is a destructive action, but the annotations declare destructiveHint: false. This is a direct contradiction. The annotation falsely signals non-destructive behavior, and the description does not clarify or override this inconsistency, so the agent receives conflicting safety signals.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, but it redundantly repeats the same content in German and English, so each sentence does not add unique value. It is not egregiously long, but the English portion duplicates the German without additional information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple UI action, and the description covers the core behavior, the trigger (button press), and the consequence of releasing. However, it omits what exactly happens upon discard, any prerequisites (e.g., draft must exist), and does not mention error conditions. The annotation contradiction also undermines completeness, though the description itself is enough for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explicitly explain templateId, versionId, or decision. It only indirectly implies that the parameters refer to the displayed card context ('angezeigte Entwurfsversion'), but does not define their formats or the exact enum mapping beyond the words 'release' and 'discard'. This is insufficient compensation for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action: 'releases or discards the displayed draft version' for the interactive template card only. It distinguishes this tool from siblings like template_release and template_draft_discard by explicitly scoping it to the card UI ('Nur fuer die interaktive Vorlagen-Karte').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys when to use this tool: 'after the human pressed the button on the card' and for the interactive card only ('Nur fuer die interaktive Vorlagen-Karte'). It does not name alternative tools explicitly, but the scope is unambiguous. A score of 5 would require explicit alternatives or exclusions beyond 'only for card'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
template_diff_checkAbweichung zur Vorlage prüfenARead-onlyInspect
Vergleicht deinen finalen Brief mit der Vorlage und zeigt dir, wo du abgewichen bist. Bei einer Blockvorlage uebergibst du finalBlocks statt finalContent; verglichen werden die Texte in Lesereihenfolge. Kostenlos und rein lesend. EN: Compares your final letter with the template and shows you where you deviated. For a block template pass finalBlocks instead of finalContent; the texts are compared in reading order. Free and read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| reasoning | No | ||
| versionId | No | Optional: bestimmte Version, sonst die freigegebene. EN: Optional: a specific version, otherwise the released one. | |
| templateId | Yes | Id der Vorlage aus template_list / template_get. EN: The template ID from template_list / template_get. | |
| finalBlocks | No | Deine finalen Bloecke, wenn der Brief strukturiert ist. Verglichen werden die Texte in Lesereihenfolge. EN: Your final blocks when the letter is structured. The texts are compared in reading order. | |
| mergeFields | No | Zuordnung der Platzhalter-Namen zu Werten, z. B. { "provider": "Telekom" }. EN: Mapping of placeholder names to values, e.g. { "provider": "Telekom" }. | |
| finalContent | No | Dein finaler Brieftext. Bei einem Blockbrief stattdessen finalBlocks. EN: Your final letter text. For a block letter use finalBlocks instead. | |
| finalSubject | Yes | Dein finaler Betreff. EN: Your final subject line. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds behavioral context by stating it is 'Kostenlos und rein lesend' (free and read-only) and that texts are compared in reading order, which goes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is bilingual, which adds some redundancy, but it is front-loaded with the main purpose and the key usage detail (block vs content). It remains concise and each sentence carries useful information, despite the mirrored German/English repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters and no output schema, the description explains the comparison behavior and block-vs-content guidance, but it does not describe the return format or how mergeFields affect the comparison. This leaves a notable gap for a tool that reports deviations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 86%, so most parameters are already self-explanatory. The description reinforces the finalBlocks/finalContent distinction and adds the reading-order detail, but this is only a slight addition to what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool compares the final letter with the template and shows deviations, using specific verbs ('vergleicht'/'compares', 'zeigt'/'shows'). This distinguishes it from sibling tools like template_apply_with_merge_fields or template_preview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear usage context: checking a final letter against a template. It gives explicit guidance on passing finalBlocks vs finalContent for block templates and notes the comparison is in reading order. However, it does not explicitly mention when not to use it or name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
template_draft_discardVorlagenentwurf verwerfenADestructiveInspect
Verwirft eine Entwurfsversion, solange sie noch auf ihre Freigabe wartet. Freigegebene und ersetzte Versionen bleiben unantastbar und vollstaendig erhalten. Ein erneuter Aufruf ist unschaedlich. EN: Discards a draft version while it is still waiting for its release. Released and superseded versions stay untouchable and fully preserved. Calling it again is harmless.
| Name | Required | Description | Default |
|---|---|---|---|
| reasoning | No | ||
| versionId | Yes | Die zu verwerfende Entwurfsversion. EN: The draft version to discard. | |
| templateId | No | Optional. Bindet die Version zusaetzlich an diese Vorlage. EN: Optional. Additionally pins the version to this template. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint=true annotation, the description adds valuable transparency by stating that released and superseded versions are preserved and that calling the tool again is harmless (idempotent). This clarifies the exact destructive scope and prevents unintended side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, stating the core action first and then adding important caveats. The bilingual (German/English) repetition doubles the length but is not excessive and serves clarity for different audiences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple destructive tool, the description covers the essential behavior: what it discards, when it is applicable, safety guarantees, and idempotency. It does not mention return values (no output schema) or the reasoning parameter, but these are minor gaps given the tool's simplicity and existing schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description itself does not add any parameter semantics. The schema covers versionId and templateId with descriptions, but reasoning has no description. With only 67% schema coverage, the description could have compensated for the missing reasoning parameter, but it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Verwirft eine Entwurfsversion' / 'Discards a draft version') and the specific scope (while waiting for release). This distinguishes it from sibling tools like template_release or template_archive, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear when-to-use guidance (only while the draft is awaiting release) and when-not-to-use guidance (released/superseded versions remain untouched). It does not explicitly name alternative tools, but the context is sufficient for an agent to determine applicability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
template_getVorlage abrufenARead-onlyInspect
Liefert eine einzelne Vorlage mit Betreff- und Inhaltsvorlage, den Merge-Feldern und der empfohlenen Freigabe-Voreinstellung. Eine Blockvorlage liefert zusaetzlich blocksTemplate und styleDefs, sodass du sie kopieren, anpassen und mit template_save als eigenen Entwurf speichern kannst. Genau so faengt die Gestaltungsschleife an: template_get auf einer kuratierten Standardvorlage (template_list zeigt sie mit curated: true), blocksTemplate anpassen, mit letter_preview ansehen, nachbessern, dann template_save, mit template_preview die gespeicherte Version pruefen und zuletzt template_release. Mit versionId und dem Scope template:write lässt sich auch eine bestimmte Entwurfsversion lesen. Nächster Schritt: template_apply_with_merge_fields füllt die Platzhalter mit deinen Werten. EN: Returns a single template with subject and content template, the merge fields and the recommended approval default. A block template additionally returns blocksTemplate and styleDefs, so you can copy it, modify it and store it as your own draft with template_save. That is exactly how the crafting loop starts: template_get on a curated standard template (template_list marks them with curated: true), modify blocksTemplate, look at it with letter_preview, refine, then template_save, check the stored version with template_preview and finally template_release. With versionId and the template:write scope a specific draft version can be read too. Next step: template_apply_with_merge_fields fills the placeholders with your values.
| Name | Required | Description | Default |
|---|---|---|---|
| reasoning | No | ||
| versionId | No | Optional: eine bestimmte Version lesen, auch einen Entwurf. Braucht zusaetzlich den Scope template:write. Ohne Angabe wird die freigegebene Version gelesen. EN: Optional: read one specific version, including a draft. Additionally requires the template:write scope. If omitted, the released version is read. | |
| templateId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description reveals meaningful behavior: the difference between normal and block templates, the requirement of template:write scope for reading draft versions, and the default behavior of returning the released version when versionId is omitted. This adds real behavioral and permission context that annotations do 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by workflow and version details. However, it repeats the entire content in both German and English, roughly doubling the length, and the narrative style makes it longer than necessary for an AI agent. Each sentence has value, but the bilingual duplication reduces conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by explaining what the tool returns, including the extra fields for block templates. It gives a complete workflow, references sibling tools, and clarifies version and scope behavior. Minor gaps remain around error cases (e.g., no released version) and the exact meaning of 'recommended approval default', but overall it is quite complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents versionId in detail, and the description reinforces the scope requirement and default released version. However, templateId has no dedicated description in either schema or description, and reasoning is entirely unaddressed. With only 33% schema coverage, the description only partially compensates for the undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Liefert eine einzelne Vorlage' and specifies the exact payload: subject/content template, merge fields, and recommended approval default. It further distinguishes block templates by mentioning additional blocksTemplate and styleDefs. This clearly identifies the tool's function and differentiates it from siblings like template_list and template_apply_with_merge_fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description embeds the tool in an explicit design loop: find curated templates with template_list (curated: true), call template_get, modify, preview with letter_preview, save with template_save, verify with template_preview, and release with template_release. It also names the next step (template_apply_with_merge_fields) and the versionId use case, giving clear when-to-use and alternative context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
template_listVorlagen auflistenARead-onlyInspect
Vorlagen auflisten, Template-Liste, template list: Listet die verfügbaren Brief-Vorlagen für Anlässe wie Kündigung, Rechnung, Mahnung, Angebot, Vertrag und Behördenpost, mit Kategorie, Version und ihren Platzhaltern (Merge-Feldern). Der exakte technische Tool-Name ist template_list; falls dein Client Tools verzögert lädt, suche nach template_list. Standardmäßig nur freigegebene Vorlagen; mit statusFilter und dem Scope template:write auch offene Entwürfe. Jeder Eintrag sagt mit curated: true, ob es eine kuratierte FrankKi-Standardvorlage ist (die Bibliothek zum Kopieren), und mit hasBlocks: true, ob sie ein strukturiertes Layout mit Tabellen und Summen traegt statt Fliesstext. Naechster Schritt: template_get liefert eine Vorlage vollstaendig (bei einer Blockvorlage inklusive blocksTemplate und styleDefs zum Kopieren und Anpassen), template_apply_with_merge_fields fuellt sie mit deinen Werten. EN: List templates, template list: lists the available letter templates for occasions such as cancellation, invoice, payment reminder, quote, contract and letters to public authorities, with category, version and their placeholders (merge fields). The exact technical tool name is template_list; if your client defers tools, search for template_list. By default it returns released templates; with statusFilter and the template:write scope also open drafts. Every entry says with curated: true whether it is a curated FrankKi standard template (the library to copy from), and with hasBlocks: true whether it carries a structured layout with tables and totals instead of plain text. Next step: template_get returns one template in full (for a block template including blocksTemplate and styleDefs to copy and modify), template_apply_with_merge_fields fills it with your values.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Standard 20, maximal 100. EN: Default 20, maximum 100. | |
| offset | No | Versatz für die Seitennavigation. Standard 0. EN: Offset for pagination. Default 0. | |
| reasoning | No | ||
| statusFilter | No | released (Standard) zeigt alle freigegebenen Vorlagen. Eigenständige Formularvorlagen tragen sendable:false und brauchen beim Anwenden ein Anschreiben. draft zeigt nur offene Entwürfe, all beide. draft und all brauchen zusätzlich den Scope template:write. EN: released (default) shows every released template. Standalone form templates carry sendable:false and require a cover letter when applied. draft shows only open drafts, all shows both. draft and all additionally require the template:write scope. | released |
| kategorieFilter | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint=true and destructiveHint=false annotations, the description reveals the default filter behavior (released only), the scope requirement for drafts, and the output fields curated and hasBlocks, providing useful context about what each entry contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy and duplicates all content in English, which increases verbosity. While the structure is clear and front-loaded with the purpose, the redundancy and technical name repetition could be trimmed without losing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description covers the tool's purpose, default behavior, key output fields, scope requirements, and next-step sibling tools, making it fairly complete for an agent to use effectively. It lacks a full response structure outline, but the essentials are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%, with reasoning and kategorieFilter lacking descriptions. The description elaborates on statusFilter behavior (drafts require template:write scope) and implies kategorieFilter via the mention of categories, but does not explain the reasoning parameter or add detail to limit/offset.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Listet die verfügbaren Brief-Vorlagen' (lists available letter templates), clearly specifying the verb and resource. It details the content (category, version, placeholders) and distinguishes itself from sibling tools by explicitly mentioning template_get and template_apply_with_merge_fields as next steps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states that by default only released templates are returned, and that draft/all statuses require the template:write scope, providing clear conditions for use. It also directs to template_get for full template retrieval and template_apply_with_merge_fields for filling with values, offering explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
template_page_urls_appBildlinks der Vorlagen-Karte erneuernBRead-onlyInspect
Nur fuer die interaktive Vorlagen-Karte: erneuert die zeitlich begrenzten Bildlinks der Vorlagenseiten, wenn die alten abgelaufen sind. EN: For the interactive template card only: renews the time-limited image links of the template pages once the old ones have expired.
| Name | Required | Description | Default |
|---|---|---|---|
| versionId | No | ||
| templateId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says the tool 'renews' (erneuert) image links, implying a state-changing operation, while annotations declare readOnlyHint=true. This is a direct contradiction because 'renews' suggests modification, conflicting with the read-only hint. No additional behavioral context is provided to reconcile this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, with a German sentence followed by an English translation. It conveys scope and condition efficiently. The bilingual repetition is slightly redundant but does not detract significantly from conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose and trigger but omits parameter semantics and return value expectations. Since there is no output schema, the description should at least hint at what the tool returns or how it behaves, which it does not. The annotation contradiction further reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has two parameters (templateId required, versionId optional) with zero description coverage. The description does not mention either parameter or their significance, leaving the agent with no guidance on what values to provide beyond parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a specific action: renewing time-limited image links for the interactive template card. It uses a precise verb ('renews' / 'erneuert') and specifies the resource (template pages' image links) and scope (only for the interactive template card), which distinguishes it from sibling template tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to use the tool: only for the interactive template card and once the old image links have expired. It provides a clear trigger context but does not explicitly mention alternatives or exclusions, so it falls short of full usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
template_previewGespeicherte Vorlage ansehenARead-onlyInspect
Rendert eine GESPEICHERTE Vorlage mit Beispielwerten und liefert Inline-PNGs, PDF-Link und designRender. designId oder ein ungespeichertes design bestimmen das Briefpapier; fuer eigenstaendige Formulare documentMode: "form" setzen. Die Vorschau bleibt kostenfrei und rein zum Ansehen. Fuer ein blocks-Layout, das erst im Entstehen ist, nimm letter_preview. Zum Persistieren einer fertigen Version template_save aufrufen. Falls das Tool clientseitig entfernt wurde, in der Tool-Suche exakt nach dem technischen Namen template_save suchen. EN: Renders a STORED template with sample values and returns inline PNGs, PDF link and designRender. designId or an unsaved design selects the stationery; set documentMode: "form" for standalone forms. The preview stays free of charge and is purely for looking at. Use letter_preview for a blocks layout that is still in the making. Call template_save to persist a finished version. If the client unloaded that tool, search for the exact technical name template_save.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Wie viele Seiten als Bild zurueckkommen. Standard 1, Maximum 3. EN: How many pages come back as images. Default 1, maximum 3. | |
| design | No | Ungespeichertes Briefdesign nur fuer diese Vorschau. Fuer Formulare documentMode: "form" setzen. EN: Unsaved letter design for this preview only. Set documentMode: "form" for forms. | |
| designId | No | Gespeichertes Briefdesign fuer diese Vorlagenvorschau. EN: Saved letter design for this template preview. | |
| reasoning | No | ||
| versionId | No | Exakte Vorlagenversion, die geprueft werden soll. Ohne Angabe gilt die freigegebene Version, danach der neueste Entwurf. EN: Exact template version to inspect. If omitted, the released version is used, then the newest draft. | |
| templateId | Yes | Id der Vorlage aus template_list / template_get. EN: The template ID from template_list / template_get. | |
| designVersionId | No | Exakte unveränderliche Briefkopf-Version für diese Vorschau. EN: Exact immutable letterhead version for this preview. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds meaningful behavioral context: the preview remains free of charge, is purely for looking at, and returns inline PNGs, a PDF link, and designRender. This goes beyond annotation defaults and does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is unnecessarily long because it repeats nearly identical content in German and English. It could be trimmed to a single language or a summary without losing meaning. The main purpose is front-loaded, but the bilingual duplication wastes space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with a nested design schema and no output schema, the description covers the main outputs (PNGs, PDF link, designRender), the free/read-only nature, and alternative tools. It does not explain what designRender is or detail the response structure, but the schema covers versionId semantics, making the description reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (86%), so the schema already explains most parameters. The description adds extra semantic value by clarifying that designId or an unsaved design selects the stationery and that documentMode 'form' is needed for standalone forms. This goes beyond generic schema descriptions for those keys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it renders a STORED template with sample values and returns inline PNGs, PDF link and designRender. It distinguishes itself from siblings by explicitly naming letter_preview (unfinished blocks layout) and template_save (persisting a finished version), so the tool's specific role is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: use letter_preview for a blocks layout that is still in the making, call template_save to persist a finished version, and set documentMode 'form' for standalone forms. It also states the preview is free and purely for viewing, which helps decide when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
template_releaseVorlage freigebenAInspect
Gibt eine Entwurfsversion frei, sodass sie versendet werden kann. Das ist der letzte Schritt der Gestaltungskette (template_get, anpassen, letter_preview, template_save, template_preview, template_release). WICHTIG: template_preview zeigt dem Menschen eine Freigabekarte mit einem Freigeben-Knopf. Ist diese Karte offen, gehoert die Freigabe dem Menschen. Rufe template_release dann nur auf, wenn die Person dich ausdruecklich darum bittet, und sage in jedem Fall klar dazu, dass du selbst freigegeben hast. Das geht ueber MCP NUR, wenn dein Konto genau einen aktiven Nutzer hat. Bei mehreren Nutzern gibt ein Mensch im Dashboard frei (Vier-Augen-Prinzip) und die Antwort enthaelt den Link dorthin. Danach: template_apply_with_merge_fields fuellt die Vorlage mit Werten, letter_create_draft oder order_send verschickt das Ergebnis. EN: Releases a draft version so it can be sent. This is the last step of the crafting chain (template_get, modify, letter_preview, template_save, template_preview, template_release). IMPORTANT: template_preview shows the human an approval card with a Release button. While that card is open the release belongs to the human. Only call template_release when the person explicitly asks you to, and always say plainly that you released it yourself. Via MCP this is only possible when your account has exactly one active user. With several users a human releases it in the dashboard (four-eyes principle) and the response contains the link. After that: template_apply_with_merge_fields fills the template with values, letter_create_draft or order_send sends the result.
| Name | Required | Description | Default |
|---|---|---|---|
| reasoning | No | ||
| versionId | Yes | Die freizugebende Entwurfsversion. EN: The draft version to release. | |
| templateId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations: the human-in-the-loop approval card, the requirement that the agent must state it released the template, and the single-user limitation. It also notes the response contains a dashboard link when multiple users exist. No contradiction with annotations (readOnlyHint=false, destructiveHint=false).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and workflow, but it duplicates every point in both German and English, roughly doubling its length. While the content is valuable, the bilingual repetition is structurally inefficient and makes it longer than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite missing parameter details and an output schema, the description covers the key contextual aspects: the human-approval process, permissions (single-user vs multi-user), and the subsequent workflow. It is reasonably complete for a mutation tool with these constraints, though it stops short of explaining return values or error behaviors.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (versionId is described in the schema, but templateId and reasoning are not). The description does not compensate for this gap; it does not explain the roles of templateId or reasoning. The chain context hints at what the IDs refer to, but the agent gets no direct parameter-level semantics beyond the schema's versionId description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Gibt eine Entwurfsversion frei, sodass sie versendet werden kann' ('Releases a draft version so it can be sent'). It clearly positions the tool as the final step in a defined crafting chain, distinguishing it from siblings like template_save and template_preview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use and when-not-to-use guidance is provided. It warns not to call while a human approval card is open, only when explicitly asked, and explains the four-eyes principle for multiple users. It also names the next tools (template_apply_with_merge_fields, letter_create_draft, order_send), giving clear workflow context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
template_saveVorlage speichernAInspect
Vorlage speichern, Vorlagenversion speichern, Vorlagenentwurf anlegen, Template sichern: Verfasst eine Vorlage als ENTWURF. Setze documentKind auf letter oder form. Briefkopf und Marke bleiben eine externe Schicht und werden erst bei Vorschau oder Versand aufgeloest und bleiben ausserhalb der Vorlage. designId bleibt nur als veralteter Hinweis zur Ableitung der Dokumentart kompatibel; explizites documentKind gewinnt. Ein Formular darf eigenstaendig gespeichert werden. coverTemplateId kann eine Anschreibenversion fuer ein Paket pinnen. Laesst du templateId weg, entsteht eine neue Vorlage; mit templateId eine neue Entwurfsversion. Der Entwurf ist erst nach der Freigabe nutzbar; die Antwort enthaelt den Prueflink. Falls das Tool fehlt, suche exakt nach dem technischen Namen template_save. Der Vorlageninhalt ist entweder contentTemplate (Fliesstext) ODER blocksTemplate (strukturiert: Tabellen, Ueberschriften, Summenzeilen), genau eines von beiden. Merge-Felder sind typisiert (text, date, number, currency, rows); ein Tabellenblock bindet eine rows-Liste ueber rowsFrom. Kopiere am schnellsten eine Standardvorlage mit template_get und passe sie an. Vor dem Speichern: mit letter_preview rendern und Seite fuer Seite vergleichen. Speichere erst, wenn Seitenzahl und wesentliche Geometrie beim Nachbau zum Original passen. Eigenstaendige Formulare zuerst mit einem design im documentMode "form" pruefen. EN: Save template, save template version, create template draft: writes a template as a DRAFT. Set documentKind to letter or form. Letterhead and brand remain an external layer resolved at preview or send time and stay outside the template. designId remains only as a deprecated hint for inferring document kind; explicit documentKind wins. A form may be saved independently. coverTemplateId may pin a cover-template version for a package. Leave templateId out and a new template is created; with templateId a new draft version is created. The draft is usable only after release; the response includes the review link. If the tool is missing, search for the exact technical name template_save. The template body is either contentTemplate (plain text) OR blocksTemplate (structured: tables, headings, totals lines), exactly one of the two. Merge fields are typed (text, date, number, currency, rows); a table block binds a rows list via rowsFrom. The fastest start is copying a standard template with template_get and modifying it. Before saving: render with letter_preview and compare page by page. Save once page count and major geometry match the original. Preview standalone forms with a design using documentMode "form" first.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name der Vorlage. EN: Name of the template. | |
| designId | No | Veralteter Autor-Hinweis zur Ableitung von documentKind. Das Design wird nicht in der Vorlage gespeichert. Explizites documentKind gewinnt. EN: Deprecated authoring hint used to infer documentKind. The design is not stored on the template. Explicit documentKind wins. | |
| kategorie | No | Fachliche Kategorie, z.B. kuendigung. EN: Subject category, e.g. kuendigung (termination). | |
| reasoning | No | ||
| styleDefs | No | Benannte Stile der Blockvorlage. Nur zusammen mit blocksTemplate. EN: Named styles of the block template. Only together with blocksTemplate. Benannte Stile fuer das ganze Dokument (max. 24). Bloecke referenzieren sie ueber style. EN: named document styles (max 24); blocks reference them via style. Vollstaendige Stilfelder: frankki://blocks-guide. EN: complete style fields: frankki://blocks-guide. | |
| templateId | No | Bestehende Vorlage: es entsteht eine NEUE Entwurfsversion. Ohne Angabe wird eine neue Vorlage angelegt. EN: Existing template: a NEW draft version is created. If omitted, a new template is created. | |
| clearDesign | No | Veralteter kompatibler Autor-Hinweis. Es gibt keine Design-Bindung an neuen Vorlagenversionen. EN: Deprecated compatibility authoring hint. New template versions have no design binding. | |
| mergeFields | No | Die Platzhalter der Vorlage. EN: The placeholders of the template. | |
| documentKind | No | Unveränderliche Dokumentart der Vorlagenversion. letter ist direkt adressierbar, form benötigt ein Anschreiben. EN: Immutable document kind of the template version. letter is directly addressable; form requires a cover letter. | |
| blocksTemplate | No | Strukturierte Inhaltsvorlage (Tabellen, Ueberschriften, Summenzeilen). Textfelder duerfen {{platzhalter}} enthalten; ein Tabellenblock kann mit rowsFrom: "<schluessel>" ein Merge-Feld vom Typ rows binden und bekommt dessen Zeilen beim Anwenden. Entweder contentTemplate ODER blocksTemplate. Volle Referenz: MCP-Ressource frankki://blocks-guide. EN: Structured content template (tables, headings, totals lines). Text fields may contain {{placeholders}}; a table block can bind a rows merge field via rowsFrom: "<key>" and receives its rows on apply. Either contentTemplate OR blocksTemplate. Full reference: MCP resource frankki://blocks-guide. Strukturierter Briefinhalt als typisierte Bloecke (Alternative zu content, nie beides). Limits: 200 Bloecke, 100 Zeilen/Tabelle, 20 Spalten, 2000 Zeichen/Zelle, 10 Bilder, 262144 Bytes. EN: structured letter content as typed blocks (alternative to content, never both). Jeder Block braucht type; erlaubte Typen: paragraph, heading, keyValue, checkboxRow, fillLine, table, totals, columns, box, image, spacer, pageBreak. Die vollstaendige Feldreferenz liegt in der MCP-Ressource frankki://blocks-guide. EN: every block needs type; read frankki://blocks-guide for the complete field reference. | |
| contentTemplate | No | Inhaltsvorlage als Fliesstext, darf {{platzhalter}} enthalten. Entweder contentTemplate ODER blocksTemplate. EN: Content template as plain text, may contain {{placeholders}}. Either contentTemplate OR blocksTemplate. | |
| coverTemplateId | No | Deckvorlage fuer ein Formular ohne Empfaengerblock. Beim Speichern wird exakt ihre aktuelle freigegebene Version gepinnt. EN: Cover template for a form without a recipient block. Saving pins its exact current released version. | |
| subjectTemplate | Yes | Betreffvorlage, darf {{platzhalter}} enthalten. EN: Subject template, may contain {{placeholders}}. | |
| clearCoverTemplate | No | Entfernt die geerbte Deckvorlagen-Bindung. Ohne coverTemplateId und ohne clearCoverTemplate erbt eine neue Version die bisherige Bindung. EN: Removes the inherited cover-template pin. Without coverTemplateId and clearCoverTemplate, a new version inherits the previous pin. | |
| approvalModeRecommended | No | Empfohlener Freigabemodus fuer Briefe aus dieser Vorlage. EN: Recommended approval mode for letters from this template. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations only indicating readOnlyHint=false, openWorldHint=false, destructiveHint=false, the description carries the full burden and delivers extensively. It discloses that the operation creates a draft, not a usable template; that letterhead/brand are external and resolved later; that designId is deprecated; that form can be saved standalone; that coverTemplateId pins a released version; and that the response includes a review link. This goes far 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is thorough but verbose, with every point repeated in both German and English, which doubles length without adding new information. It is front-loaded with the core purpose, and each sentence contributes a technical fact, but the bilingual duplication makes it less concise. For a 15-parameter tool, the length is defensible, but it could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (15 parameters, nested objects, no output schema), the description is remarkably complete. It covers the lifecycle (draft → release), how to preview before saving, how to copy a standard template, the exact-one constraint for content, merge-field typing, and the review-link in the response. It leaves little ambiguity for an agent selecting or invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is very high (~93%), so the baseline is 3. The description adds meaning by stating that contentTemplate and blocksTemplate are mutually exclusive ('genau eines von beiden'), that merge fields are typed with specific types, and that a table block binds a rows list via rowsFrom. These constraints are only partially visible in the schema, so the description genuinely enriches parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with multiple synonyms but quickly settles on a specific action: 'Verfasst eine Vorlage als ENTWURF' (writes a template as a DRAFT). It clearly distinguishes this from release/apply operations by stating 'Der Entwurf ist erst nach der Freigabe nutzbar' and by naming the resulting entity. This is more than a restatement of the title; it identifies the verb, resource, and draft state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context and prerequisites: 'Vor dem Speichern: mit letter_preview rendern', 'Kopiere am schnellsten eine Standardvorlage mit template_get', and 'Eigenstaendige Formulare zuerst mit einem design im documentMode "form" pruefen'. It implies exclusions (not for release), but does not explicitly contrast with sibling tools like template_release or template_apply. Therefore it does not fully reach the 5-level 'explicit when/when-not' bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
template_status_appVorlagenstand fuer die Karte lesenARead-onlyInspect
Nur fuer die interaktive Vorlagen-Karte: liest den aktuellen Zustand einer Vorlagenversion, damit eine alte Karte den richtigen Endzustand zeigt. EN: For the interactive template card only: reads the current state of a template version so an old card renders the correct end state.
| Name | Required | Description | Default |
|---|---|---|---|
| versionId | No | ||
| templateId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, which already establish the read-only safety profile. The description adds context beyond annotations by specifying that it reads the 'current state of a template version' for the purpose of making an old card render correctly. This clarifies the behavior's intended effect without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, with two short sentences in German and an English translation. It front-loads the key restriction and then states the function. Every word earns its place, and the bilingual format aids clarity without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (2 params, no output schema, no enums), and the description explains its purpose and usage restriction. However, it lacks parameter semantics (as noted) and does not describe the return value or any potential error conditions. Since there is no output schema, the description could have elaborated on what the 'state' contains, making it minimally viable but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the meaning or relationship of templateId and versionId. It mentions 'template version' but does not explicitly map that to the versionId parameter. The parameter names are somewhat self-explanatory but the description adds no additional clarity, leaving the agent to infer semantics from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('reads') and resource ('current state of a template version'), and explicitly restricts usage to 'the interactive template card only' (Nur fuer die interaktive Vorlagen-Karte). This differentiates it from sibling tools like template_get or template_preview by scoping it to a particular rendering context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'only for the interactive template card' (Nur fuer die interaktive Vorlagen-Karte), providing a clear usage context. It also explains the purpose ('so an old card renders the correct end state'), which implies when it should be used. However, it does not name specific alternative tools or explicitly state when not to use it, though the 'only for' restriction is a strong guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wallet_balanceWallet-Guthaben abrufenARead-onlyInspect
Liefert den aktuellen Wallet-Stand: Guthaben, Tageslimit für Briefe und Kosten, den nächsten Reset-Zeitpunkt sowie das aktuelle Preismodell (Standardpreis oder Mengenstaffel). Bleibt das Guthaben unter den geplanten Versandkosten, rufe wallet_topup_link auf und gib dem Menschen den Link zum Aufladen. EN: Returns the current wallet status: balance, daily cap for letters and costs, and the next reset time. If the balance is short of the planned send, call wallet_topup_link and give the human the top-up link.
| Name | Required | Description | Default |
|---|---|---|---|
| reasoning | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, establishing the safety profile. The description adds meaningful context by enumerating the return fields (balance, daily cap, reset time, pricing model) and the decision rule for top-up, which goes beyond annotation info.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than necessary because it repeats the same content in German and English. It fronts the core functionality in the first sentence, but the bilingual duplication is redundant. The grammar and structure are otherwise clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool without an output schema, the description covers the main return values and even adds a workflow instruction for insufficient balance. The missing parameter documentation is a gap, but given the low complexity and optional parameter, the description is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one optional parameter 'reasoning' with no description, and schema coverage is 0%. The description does not mention this parameter at all, leaving the agent without any guidance on what to pass. Since the coverage is low, the description should compensate but fails to do so.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the current wallet status with specific fields: balance, daily cap, next reset time, and pricing model. It also distinguishes itself from sibling wallet_topup_link by mentioning it as the alternative for insufficient funds.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly defines when to use this tool (to check balance before sending letters) and explicitly instructs to call wallet_topup_link if the balance is short. It provides a clear alternative but does not mention other exclusions, which is acceptable for a read-only status tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wallet_topup_linkWallet aufladenARead-onlyInspect
Erstellt einen Stripe-Checkout-Link zum Aufladen deines Wallet-Guthabens. Die Kartendaten bleiben bei Stripe; das Guthaben wird nach Abschluss der Zahlung gutgeschrieben. EN: Creates a Stripe checkout link to top up your wallet balance. Card data stays with Stripe; the balance is credited once the payment completes.
| Name | Required | Description | Default |
|---|---|---|---|
| reasoning | No | ||
| amountEuros | Yes | Aufladebetrag in Euro, zwischen 10 und 500. EN: Top-up amount in euros, between 10 and 500. | |
| requestNonce | No | Optionaler stabiler Wiederholungs-Schluessel. Bei einer Wiederholung denselben Wert senden, um denselben Checkout-Link zu erhalten statt eines zweiten. EN: Optional stable retry key. On a retry send the same value to get the same checkout link instead of a second one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and destructiveHint=false. The description adds behavioral context by explaining that card data stays with Stripe and the balance is credited after payment completes, which is useful beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the primary action. Both German and English versions are included, each sentence serving a clear purpose without redundancy beyond the necessary bilingual support.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and the description fails to mention what the tool returns (the checkout link) or how it should be used. Since the tool's main purpose is to generate a link, omitting the return value and usage instructions is a notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (amountEuros and requestNonce have descriptions). The description does not add specific parameter-level details beyond what the schema already provides. The baseline of 3 is appropriate since the schema carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: creates a Stripe checkout link for topping up wallet balance. The bilingual text reinforces the purpose and distinguishes it from sibling tools like wallet_balance, which checks balance rather than top-up.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use this tool (to top up wallet balance via Stripe checkout). It does not explicitly mention alternatives or exclusions, but the use case is obvious and the tool's role among siblings is well defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to prepare, price, review, pay for, and send real physical letters and postcards via a hosted MCP server.
- FlicenseNot gradedqualityCmaintenanceAgentBureau provides the legal and physical infrastructure for AI agents to operate within the German jurisdiction. We bridge the gap between digital intelligence and real-world action by providing "Embodiment-as-a-Service." Through our API, agents can perform legally binding actions—like sending faxes, mailing physical letters, issuing invoices, forming entire companies (GmbH/UG), ...1
- AlicenseAqualityDmaintenanceEnables AI agents to send physical letters and postcards to over 200 countries using Solana cryptocurrency for payment. It provides tools for generating mail quotes, managing wallet balances, and automating physical correspondence directly through the Model Context Protocol.4591MIT
- AlicenseAqualityBmaintenanceOfficial mailbox.bot MCP server for AI agents. Send letters, certified mail, postcards, and receive scanned inbound physical mail with sandbox keys, approval controls, tracking, and webhooks.29722MIT
Your Connectors
Sign in to create a connector for this server.