Skip to main content
Glama
ohneben

Buchhaltungsbutler MCP

Postings: add transaction posting

postings_create_for_transaction

Books bank transactions by creating postings for each, splitting amounts across posting accounts, VAT rates, and cost centers. Use for transactions that have an underlying bank movement.

Instructions

🟡 WRITE · creates data: Creates new records (receipts, transactions, postings, invoices, master data). Not idempotent: calling twice may create duplicates.

add transaction posting

Add postings for a specified transaction.

Use to book one or more bank transactions, splitting each across posting accounts, VAT rates and cost centres.

For a journal entry with no bank transaction behind it, use postings_create_free.

Takes one or many: pass an array of transactions in transactions. A single record is an array of one.

The per-transaction arrays are positional and must all have the same length. Not idempotent. Reversible with postings_unconfirm_for_transaction while the posting is not fixed.

Endpoint: POST /postings/add-batch/transactions

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
transactionsYesan array of transaction postings, each transaction posting has the same field declaration and validation as the postings/add/transaction endpoint

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
errorsNo
successYesSuccess boolean
transactionsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.1.2

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false. The description adds valuable behavioral context: '🟡 WRITE · creates data', 'Not idempotent: calling twice may create duplicates', and 'Reversible with `postings_unconfirm_for_transaction` while the posting is not fixed.' It also mentions the endpoint. This goes beyond the annotations by explaining the non-idempotency consequence and the reversal path. It doesn't detail error conditions or side effects beyond duplicates, but the annotations plus description cover the key behavioral traits well.

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

Conciseness4/5

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

The description is well-structured with a clear warning header, a concise summary, usage guidance, and an endpoint reference. It is somewhat long but every section earns its place: the warning about non-idempotency, the alternative tool, the batch semantics, and the positional array constraint. The emoji and bold formatting help front-load the critical write/non-idempotent nature. It could be slightly tighter, but it's appropriately sized for a complex tool.

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

Completeness4/5

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

Given the tool's complexity (nested arrays, positional constraints, multiple VAT options), the description covers the essential context: what it does, when to use it, the alternative, non-idempotency, reversibility, and batch behavior. The output schema exists, so return values don't need explanation. The only minor gap is that it doesn't explicitly state prerequisites (e.g., transaction must exist), but the schema's required fields and the reference to `transaction_id_by_customer` imply this. Overall, it's complete enough 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.

Parameters4/5

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 all parameters. The description adds meaningful context about the overall structure: 'The per-transaction arrays are positional and must all have the same length' and 'A single record is an array of one.' It also clarifies the batch nature of the `transactions` parameter. The schema itself is rich with per-field descriptions, so the description doesn't need to repeat them. The added structural guidance about positional arrays is valuable beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Add postings for a specified transaction' and 'book one or more bank transactions, splitting each across posting accounts, VAT rates and cost centres.' It distinguishes itself from the sibling `postings_create_free` by explicitly noting that this tool is for transactions with a bank transaction behind them, while `postings_create_free` is for journal entries without one. The verb 'add' and resource 'postings for a transaction' are specific and 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?

The description provides explicit usage guidance: it says to use this tool to book bank transactions, and explicitly names the alternative `postings_create_free` for journal entries without a bank transaction. It also explains the batch behavior ('Takes one or many: pass an array of transactions in `transactions`. A single record is an array of one.') and the positional array requirement. This is 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.