Skip to main content
Glama
ohneben

Buchhaltungsbutler MCP

Postings: add transaction posting

postings_create_for_transaction

Create postings for bank transactions, splitting each across accounts, VAT rates, and cost centres. Use to book one or multiple transactions.

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. Changed3 schema fields changedv1.1.3
    • changedInput schema / properties / transactions / items / properties / oi_receipts_ids_by_customer / items / type
      Previous value: -"integer"New value: +[
      +  "integer",
      +  "null"
      +]
    • changedInput schema / properties / transactions / items / required
      Previous value: -[
      -  "transaction_id_by_customer",
      -  "postingaccounts",
      -  "postingtexts",
      -  "vats",
      -  "amounts",
      -  "oi_receipts_ids_by_customer"
      -]New value: +[
      +  "transaction_id_by_customer",
      +  "postingaccounts",
      +  "postingtexts",
      +  "vats",
      +  "amounts"
      +]
    • changedOutput schema / properties / errors / items / properties / request_data / type
      Previous value: -"array"New value: +[
      +  "array",
      +  "object"
      +]
  2. Addedv1.1.2

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already mark the operation as write and non-idempotent, but the description adds valuable specifics: calling twice may create duplicates, the action is reversible with `postings_unconfirm_for_transaction` while the posting is not fixed, and the API accepts one or many transactions. This goes beyond structured hints and helps the agent anticipate side effects. No contradiction with annotations.

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

Conciseness4/5

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

The description is front-loaded with the write/non-idempotency warning and the action statement, then covers routing, batching shape, positional constraints, reversibility, and endpoint. It is slightly redundant because 'Not idempotent' appears twice, but nearly every sentence adds a distinct fact.

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

Completeness5/5

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

For a complex batch create endpoint, the description covers purpose, alternative tool, batching shape, positional-array invariant, reversibility, and endpoint. Field-level validation and details are already present in the schema and output schema, so nothing essential for correct invocation is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the schema fully documents the `transactions` array and its nested fields. The description adds meaning beyond the schema: a single record is an array of one, per-transaction arrays are positional and must all have the same length, and the purpose is splitting across accounts, VAT rates, and cost centres. That is useful added usage semantics.

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

Purpose5/5

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

States a specific verb and resource: 'Add postings for a specified transaction' and 'book one or more bank transactions, splitting each across posting accounts, VAT rates and cost centres.' It also explicitly distinguishes itself from `postings_create_free` for journal entries without a bank transaction, so an agent can tell it apart from a key sibling.

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

Usage Guidelines4/5

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

Gives clear when-to-use context: booking bank transactions and splitting them across posting accounts, VAT rates, and cost centres. It names `postings_create_free` as the alternative when there is no bank transaction. It does not mention every possible sibling such as `postings_create_for_receipt`, but the primary routing decision is covered.

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