Skip to main content
Glama
ninetails-io

gnucash-mcp

search_transactions

Read-only

Search GnuCash transactions by description, memo, notes, or amount with exact, greater, less, or range queries. Get paginated compact text or structured JSON results.

Instructions

Search transactions by description, memo, notes, or amount.

Compact format (default): DATE<TAB>guid<TAB>Description<TAB>splits Transactions with more than 4 splits collapse to the top 3 by |value| plus +N more — call get_transaction for the full breakdown. Leads with a Showing X-Y of Z transactions line; page with offset, or pass limit=0 for the count.

Args: query: Search query string. For amount, supports: exact ("100"), greater (">100"), less ("<100"), range ("100-200") field: Field to search: 'description', 'memo', 'notes', or 'amount' limit: Page size (default 50, max 250). 0 = count only. offset: 0-indexed first row to return (default 0). verbose: If false (default), compact text output — optimized for reading and token efficiency. If true, structured JSON, for when you need machine-readable fields rather than a report.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fieldNodescription
limitNo
queryYes
offsetNo
verboseNo

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 readOnlyHint annotation, the description details output format, split truncation behavior, pagination info line, limit=0 count mode, and the distinction between compact text and verbose JSON. This fully discloses what the agent can expect from a call.

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 efficiently organized with a brief purpose statement, a clear output-format block, and a concise Args list. Every sentence provides actionable detail, with no filler or redundancy.

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?

Given that an output schema exists and the read-only annotation covers safety, the description supplies all essential operational context: search fields, amount query syntax, pagination semantics, output modes, and truncation behavior. Nothing an agent needs to invoke it correctly 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?

Schema description coverage is 0%, so the description carries the full burden. It explains the query syntax with concrete examples (exact, greater, less, range), enumerates all field options, specifies page size limits and count-only mode, offsets, and verbose behavior—everything an agent needs to fill parameters correctly.

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: 'Search transactions by description, memo, notes, or amount.' It clearly differentiates from siblings like list_transactions (search vs. list) and references get_transaction for full breakdowns, so an agent understands the tool's distinct role.

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 context for when to use the tool—when searching by specific fields—and directs the agent to get_transaction for full split details. However, it does not explicitly contrast with list_transactions for non-search listing scenarios, leaving a small gap in alternative routing.

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