Skip to main content
Glama
dennismenken

BuchhaltungsButler MCP-Server

by dennismenken

Beleg holen

bb_receipts_get
Read-onlyIdempotent

Fetch one receipt by customer-specific ID for detailed fields (currencies, tax rate, payment reference) and optionally the file. Use when search results lack needed data.

Instructions

Holt genau einen Beleg aus BuchhaltungsButler über seine mandantenbezogene Belegnummer und liefert mehr Felder als die Suche: Buchungs- und Originalwährung, Umrechnungskurs, Steuersatz, Zahlungsreferenz und auf Wunsch die Belegdatei. Beispiel: den Beleg prüfen, den bb_receipts_search mit id_by_customer 4711 geliefert hat. Zum Suchen nach Zeitraum oder Gegenpartei bb_receipts_search, für die zugeordneten Zahlungen bb_receipts_list_transactions. Liefert keine Buchungssätze und keine Liste: Ein Aufruf holt einen Beleg, und die Feldnamen weichen von denen der Suche ab. amount_paid und amount_paid_fixed sind auch hier gemessen stets '0.00'; den Zahlungsstand trägt allein payment_date.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
get_fileNoWenn true, legt die API die Belegdatei als base64-Zeichenkette in die Antwort, dazu den Dateityp. Der Inhalt erscheint nie im Textteil der Antwort, sondern nur im strukturierten Teil. Große Dateien kosten viel Kontext, deshalb nur setzen, wenn die Datei wirklich gebraucht wird. Dass dieser Zweig funktioniert, ist nicht verifiziert.
response_formatNo'concise' liefert nur die Felder, die einen Datensatz erkennbar machen und den nächsten Schritt erlauben. 'detailed' liefert den Datensatz so, wie die BuchhaltungsButler-API ihn ausgibt. Mit 'concise' beginnen und nur für die wenigen Datensätze auf 'detailed' wechseln, die wirklich geprüft werden müssen. Dieses Feld ist serverseitig und geht nicht an die API.concise
receipt_id_by_customerYesDie mandantenbezogene Nummer des Belegs, zu finden über bb_receipts_search. Keine globale Kennung. In Suchergebnissen erscheint sie als String; hier ohne Anführungszeichen übergeben.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataYes
messageNo
successYes
endpointNo
_contract_warningsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantive behavior the annotations cannot: field names differ from the search output, amount_paid and amount_paid_fixed are always '0.00' so payment status must be read from payment_date, and get_file dumps base64 into the structured part with high context cost and an unverified code path. These are exactly the traps an agent would hit.

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

Conciseness4/5

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

Purpose and sibling routing are front-loaded, and every clause carries information. It is on the dense side, with several trailing caveats (no postings, no list, differing field names, 0.00 amounts), which is justified but costs some tightness.

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

Completeness5/5

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

An output schema exists, so return values need not be explained; the description instead supplies the workflow context it must supply — how to get the ID, which sibling to use for the other two read patterns, and the known gotchas in the returned data. Nothing needed to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description goes beyond the schema by explaining how to obtain receipt_id_by_customer (via bb_receipts_search, e.g. id_by_customer 4711) and by framing get_file as an on-demand file fetch with a context cost. Remaining parameter detail is redundantly covered in the schema, so it does not reach 5.

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

Purpose5/5

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

States a precise verb+resource in the very first clause ('Holt genau einen Beleg ... über seine mandantenbezogene Belegnummer') and immediately scopes it against siblings by naming what it is not (kein Liste-Tool). It even names the search tool that produces the needed ID, so the intended 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.

Usage Guidelines5/5

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

Explicit routing: 'Zum Suchen nach Zeitraum oder Gegenpartei bb_receipts_search, für die zugeordneten Zahlungen bb_receipts_list_transactions.' A concrete worked example (the receipt returned by search with id_by_customer 4711) anchors the when-to-use case rather than leaving it to inference.

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