Skip to main content
Glama
vargahis

monarch-mcp

by vargahis

Monarch Money MCP Server

A Model Context Protocol (MCP) server for integrating with the Monarch Money personal finance platform through Claude Desktop.

Overview

  • Secure by design — browser-based login, token stored in OS keychain (never in config files or env vars)

  • Safe by default — read-only mode prevents accidental changes; write tools require explicit opt-in

  • Comprehensive — 44 tools covering accounts, transactions, splits, budgets, cashflow, tags, categories, transaction rules, recurring merchants, and credit history

  • Easy to install — Claude Desktop extension (.mcpb), uvx, or pip

Two operating modes:

The server starts in read-only mode by default. Write tools are hidden and blocked until you explicitly opt in.

Read-only (default)

Write mode

View accounts, transactions, budgets

Yes

Yes

Analyze cashflow, spending, net worth

Yes

Yes

Create transactions, tags, categories, rules

No

Yes

Update accounts, budgets, splits

No

Yes

Delete transactions, tags, accounts

No

Yes

Related MCP server: Monarch Money MCP Server

Quick Start

Installation

Enables toggling write mode on/off directly from the Claude Desktop app.

  1. Download the latest .mcpb from Releases

  2. In Claude Desktop: Settings > Extensions > Advanced Settings > Install Extensions — select the .mcpb file

  3. Restart Claude Desktop

To enable write tools: Settings > Extensions > Monarch Money MCP Server > Configure — toggle "Enable write tools" and click Save.


Also works with Claude Desktop, but write mode cannot be toggled from the app — set it in the config instead.

Add to your MCP config file:

{
  "mcpServers": {
    "Monarch Money": {
      "command": "uvx",
      "args": ["monarch-mcp"]
    }
  }
}

To enable write tools:

{
  "mcpServers": {
    "Monarch Money": {
      "command": "uvx",
      "args": ["monarch-mcp", "--enable-write"]
    }
  }
}

pip install monarch-mcp

Contributors: See docs/releasing.md for the release process, version scheme, and pre-release testing via TestPyPI.

Add to your MCP config using the full path to your Python interpreter:

{
  "mcpServers": {
    "Monarch Money": {
      "command": "/path/to/bin/python3",
      "args": ["-m", "monarch_mcp"]
    }
  }
}

To enable write tools, add "--enable-write" to args.


git clone https://github.com/vargahis/monarch-mcp.git
cd monarch-mcp
pip install -e .

Then add to your MCP config using the Python interpreter from your dev environment:

{
  "mcpServers": {
    "Monarch Money": {
      "command": "/path/to/bin/python3",
      "args": ["-m", "monarch_mcp"]
    }
  }
}

To enable write tools, add "--enable-write" to args.

Authentication

Authentication happens automatically in your browser the first time the MCP server starts without a saved session.

  1. Start (or restart) Claude Desktop

  2. The server detects that no token exists and opens a login page in your browser

  3. Enter your Monarch Money email and password

  4. Provide your 2FA code if you have MFA enabled

  5. Once authenticated, the token is saved to your system keyring — you're all set

Key details:

  • Credentials are entered in your browser only — never through Claude Desktop

  • Token stored in the OS keyring — persists across restarts, lasts weeks/months

  • Expired sessions re-authenticate automatically — the browser login re-triggers on the next tool call

  • MFA fully supported

  • Fallback: run python login_setup.py in a terminal for headless environments

For technical details on the auth architecture, see docs/authentication.md.

Usage Examples

Show me all my financial accounts
What were my last 50 transactions?
How's my budget looking this month?
Analyze my cashflow for the last 3 months
Create a tag called "Business Expenses" in red

Available Tools

Tool

Description

Mode

Auth

setup_authentication

Get setup instructions

read

check_auth_status

Check authentication status

read

debug_session_loading

Debug keyring issues

read

Accounts

get_accounts

Get all financial accounts

read

get_account_holdings

Get investment holdings

read

get_account_history

Get historical balance data

read

get_recent_account_balances

Get daily balances

read

get_account_snapshots_by_type

Net worth by account type

read

get_aggregate_snapshots

Daily aggregate net value

read

get_institutions

Get connected institutions

read

get_account_type_options

Get valid account types

read

refresh_accounts

Request account data refresh

read

create_manual_account

Create manual account

write

update_account

Update account settings

write

delete_account

Delete an account

write

Transactions

get_transactions

Get transactions with filtering (date, account, category, tag, search, needs_review, and more)

read

get_transaction_details

Get full transaction detail

read

get_transactions_summary

Aggregate transaction stats

read

get_transaction_splits

Get split information

read

get_recurring_transactions

Get recurring transactions

read

find_merchant_id_by_name

Search recent transactions for a merchant and return distinct IDs

read

create_transaction

Create new transaction

write

update_transaction

Update existing transaction (clear notes with clear_notes, unlink goal with clear_goal)

write

delete_transaction

Delete a transaction

write

update_transaction_splits

Create/modify/delete splits

write

update_recurring_merchant

Mark/unmark a merchant as recurring, update its frequency/amount, or deactivate it — is_recurring is required on every call (requires --enable-write)

write

Tags

get_transaction_tags

Get all tags

read

create_transaction_tag

Create new tag

write

delete_transaction_tag

Delete a tag

write

set_transaction_tags

Set tags on a transaction

write

Categories

get_transaction_categories

Get all categories

read

get_transaction_category_groups

Get category groups

read

create_transaction_category

Create a category

write

delete_transaction_category

Delete a category

write

Rules

get_transaction_rules

List every transaction rule with its criteria, actions, and recent application stats

read

create_transaction_rule

Create a transaction rule with full criteria + actions (category, tags, merchant, amount, splits…)

write

update_transaction_rule

Update a rule by id; merges overrides onto the current rule (handles Monarch's REPLACE semantics)

write

delete_transaction_rule

Delete a rule by ID

write

Budgets & Cashflow

get_budgets

Get budget information

read

get_cashflow

Get cashflow analysis

read

get_cashflow_summary

Get cashflow summary

read

set_budget_amount

Set budget for category

write

Other

get_subscription_details

Get subscription status

read

get_credit_history

Get credit score history

read

Testing

This project has two complementary test surfaces:

1. Mocked unit tests (the quality gate) — fast, offline, no Monarch connection. These run in CI and must stay green:

uv run pytest tests/

The Monarch client is mocked, so these never touch a real account. Live e2e tests (below) are deselected by default.

2. Live end-to-end (e2e) integration tests — exercise the MCP tools against a real Monarch account to verify they handle the live API robustly (adversarial/edge inputs, server-side error paths). They are opt-in and never run in CI:

MONARCH_LIVE_TESTS=1 uv run pytest tests/integration -m integration

Prerequisites: a stored keyring token (run python login_setup.py once), or MONARCH_EMAIL / MONARCH_PASSWORD in the environment. Without these, the suite skips. The tests create and delete data prefixed with MCP-Test- and self-clean (a post-suite sweep removes any residue). See tests/integration/README.md for details and safety notes.

There is also a separate agent test skill (.claude/skills/test-monarch-mcp/) that drives an AI agent to verify it calls the tools correctly — distinct from the two pytest suites above.

🙏 Acknowledgments

Forked from @robcerda's monarch-mcp-server, maintained by vargahis.

Built on the monarchmoneycommunity Python library.

Thanks to:

License

MIT License

Available Tools

25 tools
check_auth_statusA

Check if already authenticated with Monarch Money.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

With no annotations provided, the description must fully disclose behavior. It only states 'check if already authenticated' but does not describe what happens on success/failure, whether it prompts for login, or any side effects. The output schema may detail return values, but the description lacks behavioral context.

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 a single sentence of 6 words, perfectly front-loaded. Every word adds value; there is no unnecessary text. It is optimally concise for a zero-parameter tool.

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?

Given the tool's simplicity (no parameters) and the presence of an output schema (likely describing return values), the description is nearly complete. However, it could mention what happens if not authenticated (e.g., throws error or returns false) to fully inform the agent.

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?

The input schema has zero parameters (100% coverage). According to rules, 0 parameters results in a baseline of 4. The description adds no parameter detail beyond the schema, but none is needed.

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 clearly states the verb 'check' and the resource 'authentication status with Monarch Money'. It is specific and distinguishes itself from other tools that are data retrieval or manipulation (e.g., get_accounts, refresh_accounts).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies checking before other operations, but does not explicitly state when to use vs alternatives or when not to. No exclusions or alternative tools are mentioned, leaving the agent to infer context from sibling names.

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

debug_session_loadingC

Debug keyring session loading issues.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.1/5.0
Behavior1/5

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

No annotations are provided, and the description fails to disclose any behavioral traits. It does not indicate whether the tool is read-only, destructive, requires special permissions, or what its side effects are, leaving a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise (one sentence), which is efficient for a zero-parameter tool. However, it could benefit from slightly more structure or detail without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema but no parameters, the description should explain what the tool returns or how the debugging is performed. It fails to provide sufficient context for an agent to understand the tool's output or behavior.

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?

The input schema has zero parameters and 100% coverage, so the schema carries no semantic burden. The description adds meaning by specifying the tool's purpose (debugging session loading), which is valuable context beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Debug keyring session loading issues' uses a vague verb 'Debug' without specifying the action or output. It does not clearly state what the tool does (e.g., logs, resets, or analyzes), leaving the agent uncertain about its function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance is provided. The tool is a debug tool among many get/check tools, but there is no differentiation from siblings like check_auth_status, and no when-to-use or when-not-to-use context.

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

get_account_historyC

Get historical balance snapshots for an account.

Args: account_id: The ID of the account

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description holds full responsibility. It only states 'Get historical balance snapshots', implying a read operation, but lacks details on behavior such as data range limits, authentication needs, or response structure.

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 description is very concise with a single sentence and an Args section. It wastes no words, but could be slightly more informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the existence of an output schema, return values need not be explained. However, the description is too terse; it fails to clarify what 'historical' means (e.g., time range, snapshot frequency) and does not distinguish from similar sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning the input schema provides no descriptions. The description only repeats the parameter name 'account_id' without adding type, format, or additional context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves 'historical balance snapshots for an account'. The verb 'Get' and resource are specific, but it does not differentiate from siblings like get_recent_account_balances or get_account_holdings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. The description does not mention context, exclusions, or when not to use it.

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

get_account_holdingsC

Get investment holdings for a specific account.

Args: account_id: The ID of the investment account

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It does not disclose read-only nature, authentication requirements, rate limits, or response behavior beyond the basic operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, but the second sentence merely repeats the parameter. Could be more efficient without losing clarity. Adequate but not tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and an output schema, the description is too minimal. It does not explain what 'holdings' means or whether data is current/historical, leaving gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description only repeats the parameter name without adding meaning. It does not explain format, validation, or what 'investment account' entails.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Get investment holdings for a specific account' clearly indicating the verb and resource. However, it does not distinguish from sibling tools like get_account_snapshots_by_type or get_account_history, which may overlap.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like get_account_snapshots_by_type or get_account_history. Usage is implied but no exclusions or context provided.

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

get_accountsA

Get all financial accounts from Monarch Money.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It only states 'get all financial accounts' without disclosing behavioral traits like authentication requirements, rate limits, or any side effects. For a read-only operation, minimal disclosure might suffice but still lacks context.

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?

Single sentence, no unnecessary words. Perfectly concise and front-loaded with the action.

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 the zero-parameter, simple purpose, and presence of an output schema explaining return values, the description is complete enough. It tells the agent exactly what the tool does without needing more detail.

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?

Input schema has zero parameters, so schema description coverage is 100%. The description adds no parameter info, which is fine since none exist. Baseline 4 for no parameters.

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?

Clearly states it gets all financial accounts from Monarch Money. The verb 'Get' and resource 'financial accounts' are specific. The name 'get_accounts' aligns with purpose and distinguishes from sibling tools like 'get_account_history' or 'get_account_holdings'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or alternative guidance. However, the simple description and zero parameters imply it is the default for listing all accounts. Sibling tools are not referenced, but the context of similar get_* tools provides implicit differentiation.

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

get_account_snapshots_by_typeA

Get net value snapshots grouped by account type.

Args: start_date: Start date in YYYY-MM-DD format timeframe: Aggregation period - "month" or "year"

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes
timeframeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations provided, the description bears full responsibility for behavioral disclosure. It only implies a read operation but does not discuss pagination, error handling, data availability, or any constraints beyond parameters. The description lacks sufficient transparency for an agent to understand side effects or limits.

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 extremely concise: two sentences defining purpose, followed by a clear argument list. Every part contributes value, no verbosity, and the key action is front-loaded.

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?

Given the tool's simplicity (2 parameters, no nested objects, output schema present), the description covers the purpose and parameter details adequately. However, it could be more complete by noting that output is grouped by account type and that the data is time-series snapshots, but the output schema likely covers return structure.

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 description coverage is 0%, so the description must compensate. It does so by specifying 'Start date in YYYY-MM-DD format' for start_date and 'Aggregation period - "month" or "year"' for timeframe, adding format and allowed values beyond the schema's type-only definitions.

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 clearly states 'Get net value snapshots grouped by account type,' which is a specific verb+resource combination. This distinguishes it from sibling tools like get_account_history, get_account_holdings, and get_aggregate_snapshots, as it focuses on net value snapshots grouped by account type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like get_aggregate_snapshots or get_account_history. It does not mention prerequisites, exclusions, or context for use, leaving the agent without decision support.

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

get_account_type_optionsA

Get available account types and sub-types for creating manual accounts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It accurately states the tool's function but does not address potential behavioral traits such as authentication requirements, data freshness, or error handling. For a simple read-only lookup, the description is adequate but not comprehensive.

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 a single, clear sentence that is front-loaded with the key action and resource. No unnecessary words; every part earns its place.

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 zero parameters and an existing output schema, the description sufficiently conveys what the tool returns and its use case. No additional details are necessary for this simple lookup tool.

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?

The input schema has no parameters, so the description adds value by explaining the tool's purpose and the context (creating manual accounts). This meets the baseline of 4 for zero-parameter tools.

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 clearly states the verb 'Get' and the resource 'available account types and sub-types', with the specific context 'for creating manual accounts'. This distinguishes it from sibling tools like get_accounts or get_account_history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when needing account types for manual account creation, but does not explicitly state when to use or not use this tool versus alternatives. No exclusion criteria or alternative recommendations are provided.

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

get_aggregate_snapshotsA

Get daily aggregate net value of all accounts.

Args: start_date: Start date in YYYY-MM-DD format end_date: End date in YYYY-MM-DD format account_type: Filter by account type (optional)

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNo
end_dateNo
account_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations provided, so description must carry behavioral info. It describes a read operation but lacks details on aggregation behavior, data freshness, or performance implications.

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?

Extremely concise, five lines with no fluff. Front-loaded with purpose, then lists parameters clearly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values need not be explained. But description omits edge cases, timezone handling, or behavior when no data matches. Adequate but not thorough.

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 0%, so description must compensate. It explains format for start_date and end_date, and purpose of account_type. However, it does not clarify that parameters are optional or default behavior.

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?

Description clearly states the tool gets daily aggregate net value of all accounts, which is a specific verb and resource. It distinguishes itself from siblings like get_account_history or get_account_holdings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like get_account_snapshots_by_type. No mention of prerequisites or context for use.

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

get_budgetsB

Get budget information from Monarch Money.

Args: start_date: Start date in YYYY-MM-DD format (default: last month) end_date: End date in YYYY-MM-DD format (default: next month) use_v2_goals: Whether to use v2 goals format (default: True)

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNo
end_dateNo
use_v2_goalsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

No annotations exist, so the description must disclose behavior. It explains parameters and defaults, but does not state whether the operation is read-only, requires authentication, or any side effects. The lack of transparency leaves the agent uninformed about operational characteristics.

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 description is brief and front-loaded with the purpose. The 'Args' section is clear and structured. It could be more concise by removing the 'Args' label and integrating parameter explanations more naturally, but overall it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, return values are covered. The description is adequate for a simple retrieval tool but could mention pagination, error handling, or data freshness. The tool has three parameters, and the description covers them sufficiently, but not exhaustively.

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?

With 0% schema description coverage, the description fully explains the parameters: start_date and end_date formats and defaults, and use_v2_goals meaning. This adds significant value beyond the schema. However, it could clarify acceptable date ranges or behavior when parameters are omitted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Get budget information from Monarch Money' which identifies the verb and resource, but it is generic and does not differentiate from sibling tools like get_cashflow or get_transactions_summary. A more specific purpose (e.g., retrieving budget allocations or progress) would improve clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, limitations, or exclusions. The agent gets no context for selection among many financial data tools.

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

get_cashflowB

Get cashflow analysis from Monarch Money.

Args: start_date: Start date in YYYY-MM-DD format (requires end_date; defaults to current month) end_date: End date in YYYY-MM-DD format (requires start_date; defaults to current month)

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNo
end_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits such as whether the operation is read-only, authentication requirements, or side effects. The description only states what the tool returns without any such context. It does not indicate that this is a read operation or any limitations.

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 extremely concise, using only two sentences with an Arguments section. Every part is meaningful and wastes no words. The structure is front-loaded with the main purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema (not shown) and only two simple parameters, the description covers basic usage. However, it lacks behavioral context, auth requirements, and differentiation from siblings. It is minimally complete but not robust.

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?

The input schema has 0% description coverage, meaning the description carries the full burden. The description clearly explains both parameters: start_date and end_date, including format, defaults, and relationship (both required together). This adds significant meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get cashflow analysis from Monarch Money.' The verb 'Get' and resource 'cashflow analysis' are specific. However, it does not differentiate from the sibling tool 'get_cashflow_summary', which may have similar functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides some usage guidance on date parameters (format, defaults, requirement of both if one given), but does not specify when to use this tool over alternatives like 'get_cashflow_summary' or other financial tools. The context is implied but lacks explicit when-to-use or when-not-to-use advice.

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

get_cashflow_summaryA

Get cashflow summary (income, expenses, savings, savings rate).

Args: limit: Number of records to retrieve (default: 100) start_date: Start date in YYYY-MM-DD format (requires end_date) end_date: End date in YYYY-MM-DD format (requires start_date)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
start_dateNo
end_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description bears full burden of disclosure. It does not mention any behavioral traits like authentication needs, rate limits, side effects, or data scope beyond the params. The tool appears read-only but this is not stated.

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 description is brief and includes a docstring-style args section. It front-loads the purpose in the first sentence. However, it could be more structurally streamlined, e.g., moving the args explanation to a more standard format.

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?

Given the parameter count of 3 and the presence of an output schema, the description covers the essential purpose and parameter details. It is complete for a simple retrieval tool, though it lacks broader context like authentication or data sources.

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 description coverage is 0%, so the description compensates by adding meaning: 'limit' default is 100, 'start_date' and 'end_date' require YYYY-MM-DD format and must be used together. This clarifies parameter dependencies and format beyond the schema.

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 clearly states the tool retrieves a cashflow summary containing income, expenses, savings, and savings rate. The verb 'Get' and resource 'cashflow summary' are specific, and it distinguishes from siblings like 'get_cashflow' and 'get_transactions_summary'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as 'get_cashflow' or 'get_transactions_summary'. It lacks explicit context for use cases, prerequisites, or limitations.

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

get_credit_historyA

Get credit score history and related details.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description must fully convey behavior. It implies a read operation but provides no details on what is returned, data freshness, or any side effects. Very minimal disclosure.

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 a single succinct sentence with no redundant words. It is appropriately short for a tool with no parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and an output schema (not shown), the description is minimally adequate but could add context about what 'related details' include, such as credit score components or date ranges. Leaves uncertainty.

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?

There are zero parameters, so the schema carries no descriptive burden. Baseline 4 is appropriate as the description adds no parameter meaning beyond the schema.

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 clearly states the verb 'Get' and the resource 'credit score history and related details', which distinguishes it from sibling tools like get_account_history that deal with account rather than credit data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, or any context such as prerequisites or exclusions. The description lacks usage direction.

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

get_institutionsA

Get all connected financial institutions and their connection status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It states the tool gets all institutions and their status, but does not disclose if authentication is needed, if it's read-only, or any other behavioral traits. It is adequate but not detailed.

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 a single sentence with no waste. Every word adds value, and it is front-loaded with the action.

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?

Given no parameters and an output schema exists, the description provides a high-level summary of what is returned. It could be slightly more detailed about 'connection status' options, but it is mostly complete.

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?

The input schema has zero parameters, so schema coverage is 100%. The description need not add parameter info. Baseline for 0 params is 4, and the description meets that.

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 clearly states it retrieves all connected financial institutions and their connection status, which is a specific verb-resource pair. It distinguishes from sibling tools like get_accounts which deal with accounts, not institutions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when institutional data is needed, but does not explicitly state when to use this tool vs alternatives or any exclusions. No guidance on context is provided.

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

get_recent_account_balancesB

Get daily balance for all accounts from a start date.

Args: start_date: Start date in YYYY-MM-DD format (optional)

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It mentions 'daily balance' and 'start date' but does not state whether the operation is read-only, what happens if start_date is omitted, or any response characteristics. The description lacks detail on side effects, auth needs, or rate limits.

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 extremely concise with two sentences, no redundancy, and all text serves a purpose. It efficiently communicates the core functionality and parameter format.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, return values are not needed. However, the description lacks context about the meaning of 'daily balance', whether it covers a range, and how this tool relates to siblings. More detail would improve completeness without adding excessive length.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description compensates partially by specifying the format 'YYYY-MM-DD' and optionality for start_date. However, it does not explain behavior when omitted or provide additional context about the parameter's effect, leaving some ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb 'Get' and specifies the resource 'daily balance for all accounts' with a start date parameter. However, it does not differentiate from sibling tools like 'get_account_history' or 'get_account_holdings', which could also return balance-related data, leaving ambiguity about when to use this specific tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidelines are provided about when to use this tool versus alternatives. The description only states what the tool does, without indicating prerequisites, limitations, or suitability compared to siblings like 'get_accounts' or 'get_account_history'.

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

get_recurring_transactionsC

Get recurring transactions from Monarch Money.

Args: start_date: Start date in YYYY-MM-DD format (requires end_date) end_date: End date in YYYY-MM-DD format (requires start_date)

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNo
end_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It notes the mutual requirement of the two date parameters but omits details about what happens when both are null (e.g., returns all?), whether there is pagination, rate limiting, or if it returns definitions or occurrences of recurring transactions.

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 description is brief with two short sentences and a bullet list. It efficiently communicates the core purpose and parameter requirement, though the 'Args:' section could be more integrated into the prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema and only two optional parameters, the description is minimally adequate. However, it lacks behavioral details for a 'get' operation, especially regarding defaults and edge cases, and does not clarify the nature of the returned data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description adds necessary parameter semantics: formats (YYYY-MM-DD) and the dependency between start_date and end_date. However, it does not explain what the date range filters (e.g., transactions within that period or created in that period), nor describe the return value structure.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves recurring transactions from Monarch Money. It distinguishes from sibling tools like get_transactions by specifying 'recurring', but does not elaborate on scope or differentiate between transaction types such as definitions vs instances.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., get_transactions). The only usage hint is that start_date and end_date must be used together, but no context on typical scenarios or prerequisites.

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

get_subscription_detailsB

Get Monarch Money subscription status and details.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, so the description must carry the full burden. It does not explicitly state that the tool is read-only or non-destructive, which is important for an AI agent to understand side effects.

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 description is a single concise sentence with no extra words. It is front-loaded with the purpose. While very brief, it is appropriately sized for a no-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, return values do not need explanation. However, the description lacks usage context (e.g., when to use, prerequisites). The tool is simple, so it is minimally adequate.

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?

The tool has no parameters, and schema coverage is 100%. The description does not add parameter info, but none is needed. Baseline score of 4 is appropriate for zero-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves subscription status and details, which is a specific resource. It distinguishes itself from sibling 'get_*' tools by focusing on subscriptions, but lacks explicit differentiation from similar tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance is provided. The description does not indicate when to use this tool, prerequisites, or alternatives. For a simple getter, basic context like 'Use to check current subscription status' would help.

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

get_transaction_categoriesA

Get all transaction categories from Monarch Money.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, and the description reveals no behavioral traits beyond the obvious read operation. It does not disclose side effects, performance characteristics, or any constraints, leaving the agent with minimal insight.

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 a single, front-loaded sentence that directly states the action and target. Every word is necessary; there is no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (no parameters, output schema exists), the description is adequate but lacks any additional context about the nature of categories or the output. It does not explain how this relates to sibling tools like get_transaction_category_groups.

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?

Since there are zero parameters, the schema coverage is 100% trivially. Per guidelines, no parameters yields a baseline of 4. The description does not need to add parameter details.

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 clearly states 'Get all transaction categories from Monarch Money,' using a specific verb and resource. It distinguishes from sibling tools like get_accounts or get_budgets, which target different entities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives. For a zero-parameter retrieval tool, the purpose is self-evident, but the description does not mention any prerequisites or context that would help an agent decide, e.g., whether to call this before creating transactions.

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

get_transaction_category_groupsA

Get all transaction category groups from Monarch Money.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It indicates a read-only operation ('get all') but does not disclose any additional behavioral traits such as authentication requirements, rate limits, or behavior with empty results.

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 a single concise sentence that directly states the tool's purpose with no wasted words. It is appropriately front-loaded.

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 simple tool with no parameters and an existing output schema, the description provides sufficient context. However, it lacks differentiation from similar tools, which would increase completeness.

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?

The tool has zero parameters, so per guidelines the baseline is 4. The description adds no parameter information, which is acceptable as there are none to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves all transaction category groups from Monarch Money, using a specific verb and resource. However, it does not differentiate from the sibling tool 'get_transaction_categories', which could be confused.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when category groups are needed, but it provides no explicit guidance on when to use this tool over alternatives like 'get_transaction_categories' or 'get_transaction_tags'.

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

get_transaction_detailsA

Get detailed information about a specific transaction.

Args: transaction_id: The ID of the transaction redirect_posted: Whether to redirect to posted transaction (default: True)

ParametersJSON Schema
NameRequiredDescriptionDefault
transaction_idYes
redirect_postedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose behavioral traits like side effects, authentication requirements, or what happens with the 'redirect_posted' parameter. The description is too brief to compensate for missing annotations.

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?

Concise but includes an Args section that repeats parameter info. Could be more front-loaded. No unnecessary words, but the structure could be improved.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Has an output schema, so return values are covered. However, with no annotations, the description lacks details on what 'detailed information' includes and the effect of 'redirect_posted'. Adequate for a simple tool but has 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?

With 0% schema description coverage, the description adds meaning: 'transaction_id: The ID of the transaction' and 'redirect_posted: Whether to redirect to posted transaction (default: True)'. This explains the purpose beyond the schema's type-only fields.

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?

Clearly states 'Get detailed information about a specific transaction' – a specific verb and resource that distinguishes it from sibling tools like 'get_transactions' (list) and 'get_transaction_splits'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives like 'get_transactions' or 'get_transaction_splits'. Usage is implied from the name and description but lacks exclusions or context.

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

get_transactionsA

Get transactions from Monarch Money.

Args: limit: Number of transactions to retrieve (default: 100) offset: Number of transactions to skip (default: 0) start_date: Start date in YYYY-MM-DD format (requires end_date) end_date: End date in YYYY-MM-DD format (requires start_date) account_id: Specific account ID to filter by (shorthand for account_ids with one ID) search: Free text search query category_ids: List of category IDs to filter by account_ids: List of account IDs to filter by (cannot use with account_id) tag_ids: List of tag IDs to filter by has_attachments: Filter transactions with/without attachments has_notes: Filter transactions with/without notes hidden_from_reports: Filter transactions hidden/visible in reports is_split: Filter split/unsplit transactions is_recurring: Filter recurring/non-recurring transactions synced_from_institution: Filter synced/manual transactions needs_review: Filter transactions that need review

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
start_dateNo
end_dateNo
account_idNo
searchNo
category_idsNo
account_idsNo
tag_idsNo
has_attachmentsNo
has_notesNo
hidden_from_reportsNo
is_splitNo
is_recurringNo
synced_from_institutionNo
needs_reviewNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

The description implies a read-only operation by listing filter parameters but does not explicitly state that it is non-destructive. Since no annotations are provided, the description should carry the burden of behavioral transparency; it partially does by describing all inputs but fails to mention any side effects or constraints like rate limits or data freshness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively long but well-structured with a clear sentence followed by a bulleted parameter list. However, it could be more concise by grouping similar boolean filters (e.g., 'Filter transactions by attributes: attachments, notes, etc.') instead of repeating 'Filter transactions' for each.

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?

With 16 parameters and a known output schema, the description is very complete for input semantics. It explains all filters, defaults (limit=100, offset=0), and interdependencies. It does not elaborate on return values, but that is acceptable given the existing output schema. Minor gap: no mention of pagination limits beyond defaults.

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?

Despite 0% schema description coverage, the tool description provides thorough explanations for all 16 parameters, including dependencies (e.g., 'start_date requires end_date') and conflicts (e.g., cannot use account_id with account_ids). This adds significant meaning beyond the raw input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get transactions from Monarch Money', providing a specific verb and resource. However, it does not explicitly differentiate from sibling tools like get_transaction_details or get_transactions_summary, which could cause confusion about which tool to use for detailed vs. summary vs. list views.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus siblings or alternatives. The description focuses solely on parameter details without mentioning any usage context, such as pagination best practices or when to prefer this over other transaction-related tools.

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

get_transaction_splitsB

Get split information for a transaction.

Args: transaction_id: The ID of the transaction

ParametersJSON Schema
NameRequiredDescriptionDefault
transaction_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations exist to indicate behavior. The description merely states 'Get split information', implying a read operation, but omits details about authentication requirements, rate limits, or error handling (e.g., what happens if transaction_id is invalid).

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 extremely concise, with two short sentences that state the purpose and list the parameter immediately. No extraneous words; every element serves a clear function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the existence of an output schema, the description need not detail return values. However, it lacks context about usage prerequisites, related tools, or behavioral specifics. For a simple retrieval tool, it is adequate but not thorough.

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?

The parameter transaction_id has no schema description (0% coverage), but the tool description provides a meaningful label ('The ID of the transaction'). This adds essential context beyond the schema's bare type declaration.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verb 'Get' and resource 'split information for a transaction', clearly distinguishing it from sibling tools like get_transactions or get_accounts. However, it does not elaborate on what 'split information' entails, so clarity is slightly diminished.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., get_transaction_details). It does not specify that the tool should only be used after obtaining a transaction ID, nor does it mention any conditions or prerequisites.

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

get_transactions_summaryB

Get aggregate transaction summary (count, sum, avg, max, income, expenses).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only states the tool gets a summary, but omits details like data scope (e.g., time period, account filtering), return behavior (e.g., empty result handling), or potential side effects (none expected). Minimal transparency.

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 a single sentence that efficiently conveys the core purpose and included metrics. No extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema exists, so return structure is covered. However, the description fails to specify the data context (e.g., which transactions are summarized, over what period). For a tool that aggregates data, this missing context leaves the agent uncertain about its applicability.

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?

The input schema has no parameters, so schema coverage is effectively 100%. The description adds value by enumerating the aggregate fields returned, which is the main semantic content beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that it gets an aggregate transaction summary and lists the specific aggregates (count, sum, avg, max, income, expenses). However, it does not differentiate itself from sibling tools like get_cashflow_summary or get_aggregate_snapshots, missing a chance to clarify its unique scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., get_transactions for detailed records, get_cashflow_summary for cash flow metrics). The description leaves the AI agent to infer usage context without any hints.

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

get_transaction_tagsA

Get all transaction tags from Monarch Money.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

With no annotations provided, the description does not disclose any behavioral traits beyond the implied read operation, such as authentication requirements, rate limits, or data recency.

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 a single sentence with no unnecessary words, effectively communicating the tool's purpose with maximum efficiency.

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?

Given the tool has no parameters and an output schema exists, the description is mostly complete, though it could briefly note that tags are distinct from categories for added context.

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?

With zero parameters, the description does not need to add parameter meaning; the input schema already covers everything, meeting the baseline for no parameters.

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 clearly states the verb 'Get' and the resource 'all transaction tags' from 'Monarch Money', which is specific and distinct from sibling tools like get_transaction_categories and get_transactions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving tags but provides no explicit guidance on when to use this tool versus alternatives or any conditions for use.

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

refresh_accountsB

Request account data refresh from financial institutions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits like side effects, asynchronicity, or rate limits. It only states 'Request' without indicating if the refresh is immediate, queued, or what happens to existing data.

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 a single, efficient sentence that conveys the core function without extraneous words, making it easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the tool has an output schema and no parameters, the description lacks critical context about the refresh process (e.g., asynchronicity, expected response, impact on other tools). This leaves the agent underinformed for safe invocation.

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?

There are zero parameters, so the schema coverage is 100%. The description does not need to add parameter information, and the baseline of 4 applies per guidelines.

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 clearly states the action ('request'), resource ('account data refresh'), and source ('from financial institutions'), distinguishing it from sibling 'get_' tools that query data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives or any prerequisites (e.g., authentication, previous data fetch). The implicit purpose is clear, but explicit usage context is missing.

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

setup_authenticationA

Get instructions for setting up secure authentication with Monarch Money.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, so the description carries the full burden. It correctly indicates the tool is non-destructive (returns instructions only). However, it could be more explicit about not performing authentication and just providing instructions.

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?

Single sentence, no wasted words, front-loaded with purpose.

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?

Given no parameters and an output schema exists, the description is sufficient. It could be more detailed about the nature of instructions, but overall adequate.

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?

With 0 parameters, schema coverage is 100%, so baseline is 4. The description adds no parameter info, but none is needed.

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 clearly states 'Get instructions for setting up secure authentication with Monarch Money', specifying a verb (get) and resource (authentication setup). It differentiates from siblings like check_auth_status and debug_session_loading.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for obtaining authentication setup instructions but does not explicitly state when to use it or when not to use it, nor does it mention alternatives. Usage context is implied but not explicit.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev0.1.2
    • Changedget_transactions1 field changed
      • addedInput schema / properties / needs_review
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
  2. 25 tool updatesv0.1.0
    • First observedcheck_auth_status
    • First observeddebug_session_loading
    • First observedget_account_history
    • First observedget_account_holdings
    • First observedget_account_snapshots_by_type
    • First observedget_account_type_options
    • First observedget_accounts
    • First observedget_aggregate_snapshots
    • First observedget_budgets
    • First observedget_cashflow
    • First observedget_cashflow_summary
    • First observedget_credit_history
    • First observedget_institutions
    • First observedget_recent_account_balances
    • First observedget_recurring_transactions
    • First observedget_subscription_details
    • First observedget_transaction_categories
    • First observedget_transaction_category_groups
    • First observedget_transaction_details
    • First observedget_transaction_splits
    • First observedget_transaction_tags
    • First observedget_transactions
    • First observedget_transactions_summary
    • First observedrefresh_accounts
    • First observedsetup_authentication

TDQS

B3.2/5.0

Scored across 25 tools

Disambiguation5/5

Each tool targets a distinct aspect of Monarch Money (accounts, transactions, budgets, cashflow, credit, institutions, auth). Even with many transaction-related tools, they differ in scope (e.g., get_transactions vs get_transaction_details vs get_transaction_splits) and have clear parameter distinctions, leaving no ambiguity.

Naming Consistency4/5

All tool names use snake_case and follow a verb_noun pattern, which is consistent. However, the verbs vary: most use 'get_', but there are also 'check_', 'debug_', 'setup_', and 'refresh_'. This minor inconsistency prevents a perfect score.

Tool Count4/5

With 25 tools, the server is on the larger side but covers many facets of personal finance (accounts, transactions, budgets, cashflow, credit, institutions). Each tool serves a clear purpose, and the count feels justified for the domain, though slightly heavy.

Completeness2/5

The tool set is heavily read-focused, lacking any create, update, or delete operations for core entities like accounts, transactions, or budgets. This is a significant gap for agents that need to manage finances, leaving the surface incomplete for typical CRUD workflows.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to access and analyze MonarchMoney personal finance data through natural language queries. Provides comprehensive financial insights including account balances, transaction analysis, budget tracking, and spending patterns with enterprise-grade security.
    9
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables integration with Monarch Money to query financial data, analyze spending patterns, track budgets, and get personalized financial insights through conversational AI with Claude Desktop.
    11
    3
    ISC
  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides read-only access to Monarch Money financial data, enabling AI assistants to analyze transactions, budgets, and cashflow.
    4
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Interactive UI for Monarch Money inside claude.ai, running on Monarch's official OAuth. Provides interactive widgets for transactions, spending, and accounts with inline editing and broad data-tool coverage.
    MIT