Skip to main content
Glama
iseppo

e-arveldaja MCP Server

by iseppo

Confirm Transaction

confirm_transaction
Destructive

Confirm a bank transaction by providing distribution rows; pass clients_id if absent and reassign clients when invoice-linked payer differs.

Instructions

Confirm a bank transaction by providing distribution rows. If the transaction has no clients_id (common for CAMT imports), pass clients_id — otherwise the API rejects with 'buyer or supplier is missing'. For invoice distributions, clients_id is auto-resolved from the invoice. A transaction whose client differs from the linked invoice's client is refused (linked_invoice_client_mismatch) because the journal takes its client from the transaction; approve the swap with reassign_client_to_invoice. After an invoice-linked confirm the resulting registration journal is re-read and checked against the invoice client and both postings.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesTransaction ID
clients_idNoClient ID to set on the transaction before confirming (required when transaction has no clients_id and distribution is against accounts, not invoices)
distributionsNoArray of distribution rows: [{related_table: 'accounts'|'purchase_invoices'|'sale_invoices', related_id, related_sub_id?, amount}]. related_id is always REQUIRED (the account or invoice DB ID). related_sub_id is REQUIRED when related_table='accounts' and the account has dimensions — pass the dimension ID (e.g. 1360 has one sub-account per person); the API rejects dimensioned postings without it.
block_on_duplicateNoRefuse an inter-account confirm (distribution to another own bank account) when an existing transfer journal or a possible duplicate bank posting is found (default false: warn only).
reassign_client_to_invoiceNoExplicit approval to replace a differing payer client on the transaction with the linked invoice's client before confirming (default false). Use when a third party paid someone else's invoice: without it the confirm is refused, because the journal's client comes from the transaction and the receivable/payable leg would land in the payer's sub-ledger. bank_account_name (the real payer's name) is never changed.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.29.2
    • addedInput schema / additionalProperties
      Added value: +false
  2. Changed1 schema field changedv0.27.0
    • addedInput schema / properties / block_on_duplicate
      Added value: +{
      +  "description": "Refuse an inter-account confirm (distribution to another own bank account) when an existing transfer journal or a possible duplicate bank posting is found (default false: warn only).",
      +  "type": "boolean"
      +}
  3. Changed1 schema field changedv0.25.7
    • addedInput schema / properties / reassign_client_to_invoice
      Added value: +{
      +  "description": "Explicit approval to replace a differing payer client on the transaction with the linked invoice's client before confirming (default false). Use when a third party paid someone else's invoice: without it the confirm is refused, because the journal's client comes from the transaction and the receivable/payable leg would land in the payer's sub-ledger. bank_account_name (the real payer's name) is never changed.",
      +  "type": "boolean"
      +}
  4. First observedv0.18.1

TDQS

A4.6/5.0
Behavior5/5

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

Annotations declare destructive=true and non-idempotent, and the description adds substantially more: the exact API rejection message, the linked_invoice_client_mismatch refusal rule, the post-confirm re-read and validation against invoice client and both postings, and the fact that bank_account_name is never modified. This is well beyond what the annotations convey.

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?

Dense but front-loaded: the core action comes first, followed by conditional rules and error behaviors. Every sentence carries non-redundant information, though the prose is somewhat packed for rapid scanning.

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 destructive, non-idempotent mutation with no output schema and 5 parameters, the description covers the required inputs, the auto-resolution rules, the refusal cases, and the post-confirm verification. An agent has enough to call it correctly and to anticipate the failure modes.

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 baseline is 3, but the description adds real meaning: when clients_id is required, why block_on_duplicate matters (inter-account duplicate detection), and the semantics of reassign_client_to_invoice including that the client is taken from the transaction.

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 ('Confirm a bank transaction') plus the required input ('by providing distribution rows'). It is clearly distinguishable from sibling tools confirm_journal, confirm_purchase_invoice, and confirm_sale_invoice.

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 rich conditional guidance: pass clients_id when there is no clients_id (CAMT imports), clients_id is auto-resolved for invoice distributions, and reassign_client_to_invoice is needed when the payer differs from the linked invoice's client. It does not explicitly name alternative tools to use instead, 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.

Deploy Server

Other Tools