Skip to main content
Glama
Monarch Money MCP Server

Monarch Money MCP Server

by jamiew

Find Duplicate Transactions

find_duplicate_transactions
Read-only

Detect possible duplicate transactions by matching date, amount, statement name, and account within a date range; review grouped results before deleting.

Instructions

Find possible duplicate transactions: same date, amount, statement name, and account.

Args: start_date: Inclusive start; ISO or natural language. Defaults to 90 days before end_date. end_date: Inclusive end. Defaults to today. account_id: Optional account ID from get_accounts.

Groups are possible duplicates only; review before deleting. Each group lists compact transactions oldest first. Hidden transactions and rows without a statement name are skipped. scan_truncated is true when the range holds more transactions than one scan reads; narrow the dates or account then.

Input Schema

NameRequiredDescriptionDefault
end_dateNo
account_idNo
start_dateNo

Output Schema

NameRequiredDescriptionDefault
countYes
groupsYes
end_dateYes
start_dateYes
scan_truncatedYes
transactions_in_rangeYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.6.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, yet the description still adds non-obvious behavior: results are heuristic groups rather than confirmed duplicates, groups are ordered 'oldest first' with compact transactions, hidden transactions and rows lacking a statement name are silently skipped, and scan_truncated signals the scan ceiling. These are exactly the caveats an agent could not infer from 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?

One summary sentence, a compact Args block, and two short paragraphs covering output shape and truncation — front-loaded with the purpose and matching key before the parameters. No filler 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?

An output schema exists, so return formatting need not be restated; the description instead supplies the semantics of the output (grouping, ordering, exclusions, truncation flag) that the schema cannot convey. All three optional parameters, their defaults, and the scope-limitation remedy are covered, leaving no gap for a read-only scan tool.

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 coverage is 0%, so the description carries the full burden and does: start_date is inclusive, accepts ISO or natural language, and defaults to 90 days before end_date; end_date is inclusive and defaults to today; account_id is optional and sourced from get_accounts. The non-trivial default relationship between the two date params is explained nowhere else.

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 ('Find possible duplicate transactions') and immediately defines the matching key (same date, amount, statement name, account), which separates it from get_transactions and search_transactions in the sibling list.

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?

Gives clear framing for when the tool is appropriate (pre-delete review: 'Groups are possible duplicates only; review before deleting') and when to re-run with a narrower scope ('scan_truncated is true... narrow the dates or account then'). It never explicitly names get_transactions or search_transactions as the alternative for non-duplicate lookups, so routing is implied rather than stated.

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