Skip to main content
Glama
Iyongbudiarso

moneylover-mcp

delete_transaction

DestructiveIdempotent

Permanently delete an existing Money Lover transaction after confirming its ID, wallet and date; use dry_run to preview checks without removal.

Instructions

Permanently delete one existing transaction. Use it only when the user asked for the removal in their own words, after identifying the entry with list_transactions (which supplies the id, wallet and date) and confirming it is the right one; dry_run returns the entry without deleting it. To fix a wrong detail use update_transaction instead. Behavior: there is no undo through this server. Transfers, debts, loans and their repayments are refused because they are linked to other transactions; delete those in the Money Lover app. The same limits as add_transaction apply: writes are off unless MONEYLOVER_ALLOW_WRITE=true, the wallet allowlist and hourly write limit, and the transaction's date must be within roughly the last year to a month ahead. A failure reported as UNCERTAIN means the transaction may or may not have been deleted: check list_transactions before retrying.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesId of the transaction, exactly as returned by list_transactions.
dateYesThe transaction's date as YYYY-MM-DD, exactly as returned by list_transactions. Used to find it.
walletYesName of the wallet the transaction is in, exactly as returned by list_transactions.
dry_runNoIf true, find the transaction and run every check, but do not delete it.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
deletedYesTrue only if the transaction was really deleted.
dry_runYesTrue when nothing was sent to Money Lover.
transactionYesThe transaction that was (or, for a dry run, would be) deleted.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.4.0

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only declare destructive/idempotent/not-read-only; the description goes far beyond them by disclosing no undo through this server, the refusal categories, the shared add_transaction write gating (MONEYLOVER_ALLOW_WRITE, wallet allowlist, hourly limit), the date window, and the meaning of an UNCERTAIN failure with the recommended recovery check.

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?

Front-loads the action and the precondition, then moves through alternative, refusals, gating and failure semantics in a tight sequence. Long but every sentence carries distinct operational information; nothing is redundant with the schema or annotations.

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, gated, non-undoable mutation with an output schema already describing returns, the description covers preconditions, refusals, environment gating and ambiguous-failure handling. Nothing an agent needs before calling it 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 already documents id, date and wallet, but the description adds that those values come from list_transactions and that dry_run returns the entry without deleting it, which is slightly richer than the schema's own wording. Baseline 3 raised to 4 for that added meaning.

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 ('Permanently delete one existing transaction') and immediately distinguishes itself from update_transaction ('To fix a wrong detail...') and add_transaction. An agent can tell exactly what this call does without opening the schema.

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?

Explicit when-to-use ('only when the user asked for the removal in their own words'), the prerequisite identification flow (list_transactions supplies id/wallet/date, then confirm), the dry-run escape hatch, and the alternative tool for corrections. It also states the when-not case: linked transfers, debts, loans and repayments are refused and must be handled in the app.

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