monarch-mcp
The Monarch Money MCP Server connects to the Monarch Money personal finance platform, providing secure read-only financial analysis by default, with optional write capabilities requiring explicit opt-in (--enable-write flag or Claude Desktop toggle).
Authentication & Setup
Browser-based login with MFA support; tokens stored securely in OS keychain
Check auth status, get setup instructions, and debug keyring/session issues
Accounts
Retrieve all financial accounts, investment holdings, historical balance snapshots, and daily balances
Get net worth snapshots by account type and daily aggregate net value
List connected institutions and valid account types/sub-types
Request data refresh from financial institutions
Transactions
Retrieve transactions with rich filtering (date range, account, category, tag, search text, recurring, splits, attachments, notes, etc.)
Get details on specific transactions, split breakdowns, and recurring transactions
Get aggregate statistics (count, sum, average, income, expenses)
Tags & Categories
List all transaction tags, categories, and category groups
Budgets & Cashflow
View budgets for a date range and set budget amounts per category
Analyze cashflow (income vs. expenses) and get summary with savings rate
Other
View subscription status and credit score history
Write Operations (opt-in required)
Create, update, and delete manual accounts, transactions, tags, and categories
Update transaction splits and assign/remove tags on transactions
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, orpip
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
Option 1: Claude Desktop Extension (.mcpb) — Recommended for Claude Desktop
Enables toggling write mode on/off directly from the Claude Desktop app.
Download the latest
.mcpbfrom ReleasesIn Claude Desktop: Settings > Extensions > Advanced Settings > Install Extensions — select the
.mcpbfileRestart Claude Desktop
To enable write tools: Settings > Extensions > Monarch Money MCP Server > Configure — toggle "Enable write tools" and click Save.
Option 2: uvx (no install required) — Recommended for agents (e.g. Claude Code or Cursor)
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"]
}
}
}Option 3: pip install — Recommended for local installation and venv
pip install monarch-mcpContributors: 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.
Option 4: Clone and install — Recommended for development
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.
Start (or restart) Claude Desktop
The server detects that no token exists and opens a login page in your browser
Enter your Monarch Money email and password
Provide your 2FA code if you have MFA enabled
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.pyin a terminal for headless environments
For technical details on the auth architecture, see docs/authentication.md.
Usage Examples
Show me all my financial accountsWhat were my last 50 transactions?How's my budget looking this month?Analyze my cashflow for the last 3 monthsCreate a tag called "Business Expenses" in redAvailable Tools
Tool | Description | Mode |
Auth | ||
| Get setup instructions | read |
| Check authentication status | read |
| Debug keyring issues | read |
Accounts | ||
| Get all financial accounts | read |
| Get investment holdings | read |
| Get historical balance data | read |
| Get daily balances | read |
| Net worth by account type | read |
| Daily aggregate net value | read |
| Get connected institutions | read |
| Get valid account types | read |
| Request account data refresh | read |
| Create manual account | write |
| Update account settings | write |
| Delete an account | write |
Transactions | ||
| Get transactions with filtering (date, account, category, tag, search, needs_review, and more) | read |
| Get full transaction detail | read |
| Aggregate transaction stats | read |
| Get split information | read |
| Get recurring transactions | read |
| Search recent transactions for a merchant and return distinct IDs | read |
| Create new transaction | write |
| Update existing transaction (clear notes with | write |
| Delete a transaction | write |
| Create/modify/delete splits | write |
| Mark/unmark a merchant as recurring, update its frequency/amount, or deactivate it — | write |
Tags | ||
| Get all tags | read |
| Create new tag | write |
| Delete a tag | write |
| Set tags on a transaction | write |
Categories | ||
| Get all categories | read |
| Get category groups | read |
| Create a category | write |
| Delete a category | write |
Rules | ||
| List every transaction rule with its criteria, actions, and recent application stats | read |
| Create a transaction rule with full criteria + actions (category, tags, merchant, amount, splits…) | write |
| Update a rule by id; merges overrides onto the current rule (handles Monarch's REPLACE semantics) | write |
| Delete a rule by ID | write |
Budgets & Cashflow | ||
| Get budget information | read |
| Get cashflow analysis | read |
| Get cashflow summary | read |
| Set budget for category | write |
Other | ||
| Get subscription status | read |
| 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 integrationPrerequisites: 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:
@robcerda for the original MCP server
@hammem for the original monarchmoney library
@bradleyseanf for the community fork
License
MIT License
Available Tools
25 toolscheck_auth_statusA
Check if already authenticated with Monarch Money.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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"
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | Yes | ||
| timeframe | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | No | ||
| end_date | No | ||
| account_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | No | ||
| end_date | No | ||
| use_v2_goals | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | No | ||
| end_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| start_date | No | ||
| end_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | No | ||
| end_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| transaction_id | Yes | ||
| redirect_posted | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| start_date | No | ||
| end_date | No | ||
| account_id | No | ||
| search | No | ||
| category_ids | No | ||
| account_ids | No | ||
| tag_ids | No | ||
| has_attachments | No | ||
| has_notes | No | ||
| hidden_from_reports | No | ||
| is_split | No | ||
| is_recurring | No | ||
| synced_from_institution | No | ||
| needs_review | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| transaction_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 tool update
v0.1.2- Changed
get_transactions1 field changed- added
Input schema / properties / needs_reviewAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null +}
25 tool updates
v0.1.0- First observed
check_auth_status - First observed
debug_session_loading - First observed
get_account_history - First observed
get_account_holdings - First observed
get_account_snapshots_by_type - First observed
get_account_type_options - First observed
get_accounts - First observed
get_aggregate_snapshots - First observed
get_budgets - First observed
get_cashflow - First observed
get_cashflow_summary - First observed
get_credit_history - First observed
get_institutions - First observed
get_recent_account_balances - First observed
get_recurring_transactions - First observed
get_subscription_details - First observed
get_transaction_categories - First observed
get_transaction_category_groups - First observed
get_transaction_details - First observed
get_transaction_splits - First observed
get_transaction_tags - First observed
get_transactions - First observed
get_transactions_summary - First observed
refresh_accounts - First observed
setup_authentication
TDQS
Scored across 25 tools
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.
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.
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.
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
Related MCP Connectors
- Era ContextOAuthapp.era
Personal finance, bank account, and shared memory connector for Claude, ChatGPT, Gemini Spark & more
Brazilian Open Finance MCP — 30+ banks (Itaú, Nubank, etc.) to Claude/Cursor. Read-only.
Personal finance assistant — track transactions, budgets, net worth via Plaid
Personal finance for AI agents — onboard, import statements, categorize & budget over MCP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables 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.9MIT
- AlicenseAqualityDmaintenanceEnables integration with Monarch Money to query financial data, analyze spending patterns, track budgets, and get personalized financial insights through conversational AI with Claude Desktop.113ISC
- AlicenseNot gradedqualityFmaintenanceProvides read-only access to Monarch Money financial data, enabling AI assistants to analyze transactions, budgets, and cashflow.4MIT
- AlicenseNot gradedqualityBmaintenanceInteractive 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