Skip to main content
Glama
ninetails-io

gnucash-mcp

delete_transaction

DestructiveIdempotent

Delete one or multiple GnuCash transactions by GUID, with safeguards preventing removal of reconciled splits or invoice postings unless forced. Batch deletion validates all IDs before removing any.

Instructions

Delete one transaction by GUID — or several in one call.

Safeguards prevent deletion if a transaction has reconciled splits (force=true overrides) or is an invoice's posting record (unpost_document first).

Pass a LIST of GUIDs to delete several in one book open / one save. The batch is all-or-nothing: every guid is validated before anything is deleted, so a bad guid rejects the whole call with nothing removed. Response for a list is {status, count, transactions: [{guid, description}]}; a single guid returns the single-object shape as before.

Args: guid: Transaction GUID (32-char hex or 8+ char prefix), or a list of them. force: Allow deleting transactions with reconciled splits.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
guidYes
forceNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.4.2

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations (destructive, idempotent), it discloses the all-or-nothing batch validation, that a bad GUID removes nothing, the response shape, and the safeguards around reconciled splits and invoice posting records. This is rich behavioral context that annotations alone do not provide.

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

Conciseness5/5

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

The description is organized with a clear lead sentence, safeguard notes, batch behavior, response format, and an Args section. Every sentence contributes essential operational detail without padding.

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 tool with batch semantics, safeguards, and a response shape, the description covers all invocation-critical aspects. The output schema exists, and the description still usefully summarizes the list response. Nothing needed for correct invocation is missing.

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

Parameters5/5

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

With 0% schema description coverage, the description carries the parameter documentation burden. It explains GUID format and prefix support, that guid can be a list, and what force does. This adds meaningful semantics beyond the bare schema types and defaults.

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 opens with a specific verb and resource: 'Delete one transaction by GUID — or several in one call.' It clearly distinguishes the deletion operation from sibling transaction tools like void_transaction, update_transactions, and replace_splits, and covers both single and batch use.

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?

The description gives clear operational context: deletion is blocked for reconciled splits unless force=true, and invoice posting records require unpost_document first. It does not explicitly contrast with alternatives like void_transaction, but the preconditions and override behavior are specific and useful enough to guide correct usage.

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