Skip to main content
Glama

Beleg erstellen

document_create

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
subjectNoBetreff 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.
designIdNo
documentYesDie 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.
languageNoStandard de. EN: defaults to de.
reasoningNo
referenceNo
signatureIdNo
sequenceScopeNo
clientLetterIdNoIdempotenzschluessel fuer den Briefentwurf. EN: idempotency key for the letter draft.
mandantennummerNoMandant, dem das Dokument zugeordnet wird. Nur Zuordnung fuer Liste und Auswertung. EN: client this document is filed under. Filing only.
senderAddressIdNo
senderProfileIdNoAbsenderprofil, 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.
includeSignatureNo
recipientAddressIdNoEmpfaenger aus deinem Adressbuch (address_list / mandant_search liefern die id). Entweder das oder recipientAddressInline. EN: recipient from your address book. Either this or recipientAddressInline.
recipientAddressInlineNo

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observed

TDQS

A3.6/5.0
Behavior4/5

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

No contradiction with annotations — readOnlyHint=false is consistent with a creation tool. The description adds valuable behavior beyond the minimal all-false annotation set: the draft 'bleibt kostenfrei liegen, bis du ihn versendest' (cost disclosure), the recompute-and-reject arithmetic behavior, the §14 UStG mandatory-details validation, and the option to draw document numbers from a sequence. What it omits — idempotency semantics, failure modes — is secondary for a creation tool whose safety profile is already clear from annotations.

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

Conciseness3/5

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

The description is front-loaded — purpose, then behavior, then pricing, then example, then next steps — and nearly every content unit earns its place. The main structural cost is the near-identical German/English duplication, which roughly doubles the length to about 600 words. Given the tool's real complexity (nested payload, 15 parameters), the size is defensible, but it is not tight.

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

Completeness3/5

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

For a 15-parameter, deeply nested creation tool with no output schema, the description provides a strong end-to-end model: what input to send, a worked example, validation and pricing behavior, and follow-up tool routing. The notable gap is the return value — only 'letterId' is named, with no hint of the draft's status or how validation failures surface. Because there is no output schema, the description itself carries that burden and under-delivers on it.

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

Parameters4/5

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

Schema coverage is 47%, below the 50% threshold, so the description must compensate — and it does with a compact example payload that makes the core parameters concrete: quantity × unitPriceCents = lineNetCents at 19% USt, totals interlocking with line items, leistungszeitraum as von/bis dates, and recipientAddressId usage. This gives an agent a working model of the central document object. Several top-level parameters (sequenceScope, mandantennummer, reasoning, signatureId, reference) remain unexplained in both schema and description, which keeps this from a 5.

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

Purpose4/5

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

The description states a specific verb-resource pair: 'Erzeugt aus strukturierten Belegdaten ein fertiges Dokument und legt es als Briefentwurf an' — it creates a finished billing document as a letter draft. It further distinguishes itself through unique behaviors (recomputing amounts, §14 UStG checks, DIN 5008 typesetting, number-sequence assignment) that no other sibling claims. It never explicitly contrasts with the close sibling letter_create_draft, which also creates a letter draft, so the differentiation is demonstrated but not stated.

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

Usage Guidelines3/5

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

The description gives strong post-invocation guidance: '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.' It also implies the use case through 'Du lieferst die Summen, FrankKi rechnet sie nach und lehnt Abweichungen ab' — this tool is for validated billing payloads. However, it never states when to use this tool instead of letter_create_draft or when it should not be used, leaving tool-selection partly to inference.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

B3.2/5.0
Disambiguation2/5

The surface contains multiple clusters whose boundaries are unclear: letterhead_list/letter_design_list/brand_kit_get/profile_get all expose similar letterhead/brand data, and letter_preview/template_preview/letter_design_preview are easy to confuse. The many *_app variants (approval_decide_app, template_decide_app, status/page-url helpers) further duplicate core actions. Rich descriptions help, but with 72 tools an agent will frequently pick the wrong member of a cluster.

Naming Consistency3/5

Most tools follow a readable snake_case resource_action pattern (address_upsert, approval_list, letter_schedule, wallet_balance). However, there are notable exceptions like analytics_summary, mcp_health, pricing_tiers, shipping_quote and order_einlieferungsbeleg, plus German/English mixing and semantically competing prefixes (letterhead_ vs letter_design_ vs brand_kit_). The style is not chaotic, but it is not uniformly consistent.

Tool Count1/5

With 72 tools this is an extreme mismatch for an MCP surface. The count is inflated by app-card-only helpers, separate preview variants and overlapping design/letterhead/brand tools that could be consolidated. Even a complex domain like postal letters does not justify this many top-level entry points.

Completeness4/5

The core domain is very well covered: addresses, letters, documents, templates, approvals, sender profiles, wallet, scheduling, archive exports and analytics all have lifecycle operations. The main gaps are minor workarounds rather than dead ends: no delete for addresses or documents, no attachment listing/deletion, and letter corrections are handled by creating a new draft.