Skip to main content
Glama
krax1337

mcp-server-zenmoney

by krax1337

Edit transactions

update_transactions
DestructiveIdempotent

Modify existing ZenMoney transactions by ID: amount, account, category, payee, comment, date, currency amount, or transfer details. Preview changes with dry_run before saving.

Instructions

Change one or more existing transactions: amount, account, main category (null = uncategorized), payee, comment, date, original currency amount; transfers also to_account / to_amount. The type cannot change (delete and re-create instead). Use list_transactions to find ids.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dry_runNoPreview the outcome without saving anything
updatesYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds the constraint that type cannot change, but it doesn't expand on the destructive nature or preview behavior beyond what dry_run's schema description says. It does not contradict the annotations.

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?

Three compact sentences front-load the operation, list editable fields, state the immutability constraint, and route to list_transactions. No filler or redundant restatement of the title.

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?

For a two-param, single-object mutation with nested item fields, the description covers fields, null behavior, transfer nuances, and the immutability rule. It lacks specifics on the destructive/idempotent behavior implications, but annotations and dry_run's schema description fill those gaps.

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 50%, so the description compensates by naming transfer-specific fields (to_account, to_amount) and explaining null semantics for category ('null = uncategorized'). It doesn't restate id/date/amount syntax, but the field-level semantics it supplies exceed the schema alone.

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+resource ('Change one or more existing transactions') and immediately enumerates editable fields, distinguishing it from create_transactions, delete_transactions, and restore_transactions. It also names exactly what cannot change (type) and points to delete/re-create as the alternative.

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?

It explicitly directs the agent to use list_transactions to find ids, which is the key prerequisite for invocation, and it tells the agent to delete and re-create when the type must change. It doesn't state when to prefer this tool over create_transactions for bulk edits, but the guidance is materially useful.

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