Skip to main content
Glama

bulk_delete_transactions

Destructive

Move many transactions to Trash at once, by ids or by filters. Balances change; the user can restore them in the app within 30 days, after which they are deleted for good. Before using filters, call get_transactions_summary with the same filters and check the count. Unlike the REST endpoint, empty filters are refused: give at least one filter (a date range, account, category, …) or explicit transactionIds. Deleting one leg of a transfer moves both. Transactions on bank-connected accounts are refused (planned ones excepted), and so is a delete over the service maximum. Ids you cannot access are skipped; transactions that belong to a payment, a portfolio or a venture are skipped too and listed in skippedIds. Returns deletedCount, deletedIds and skippedIds. Requires finance:delete scope.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "bulk_delete_transactions"
  }
}

Input Schema

NameRequiredDescriptionDefault
filtersNoDelete everything these filters match (the filters of get_transactions_summary), less excludedIds. Give this or transactionIds, not both
excludedIdsNoWith filters: IDs to keep out of the delete. Leaving out one leg of a transfer keeps the whole transfer
transactionIdsNoIDs of the transactions to delete. Give this or filters, not both

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare destructive=true; the description adds substantial context beyond them: balances change, a 30-day in-app restore window before permanent deletion, both transfer legs moving together, bank-connected account refusals with the planned-transaction exception, the service maximum, and the required finance:delete scope. This is exactly the kind of consequence and permission detail an agent needs before a destructive call.

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 destructive scope and the summary-first prerequisite are front-loaded, and nearly every sentence carries a distinct operational fact. It is a dense run-on block with many clauses, however, so a reader must parse several caveats out of long compound sentences.

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?

With no output schema, the description still documents the return shape (deletedCount, deletedIds, skippedIds) and explains what lands in skippedIds. Combined with the refusal rules, scope requirement and restore window, nothing material is missing for a destructive bulk operation.

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 would be 3, but the description adds real meaning: the mutual exclusivity of filters and transactionIds, the requirement that filters be non-empty (not enforced by the schema, which has no minProperties), and the transfer-leg semantics of excludedIds. Most individual filter fields are left entirely to the schema, which is acceptable given full coverage.

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 and two invocation modes: "Move many transactions to Trash at once, by ids or by filters." That distinguishes it from the single-record delete_transaction and from the non-destructive bulk_update_transactions sibling without needing to open either 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?

It names an explicit prerequisite workflow (call get_transactions_summary with the same filters and check the count before deleting), states an exclusion rule (empty filters refused; must supply filters or transactionIds, not both), and spells out which rows are refused or skipped. An agent knows when to use this and when not to.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.