Skip to main content
Glama
nonnname

ZenMoney MCP

by nonnname

ZenMoney MCP

Read-only MCP server for ZenMoney. It syncs ZenMoney data into process memory and exposes it through MCP tools and resources. It does not persist financial data or API responses to disk.

Agentic Workflows

The read-only mode is a good fit for agentic workflows with tools such as Hermes and OpenClaw. Agents can analyze transactions in the way the user asks, compare spending patterns, prepare recurring personal-finance reports, and surface anomalies without being able to create, update, or delete ZenMoney data.

Related MCP server: mcp-beancount

Unofficial Project

This is an unofficial project and is not affiliated with, endorsed by, or sponsored by ZenMoney. Users are responsible for complying with ZenMoney terms and for protecting their own access tokens.

MCP Client Config

Use the published CLI through npx and pass runtime configuration through your MCP client:

{
  "mcpServers": {
    "zenmoney": {
      "command": "npx",
      "args": ["-y", "@nonnname/zenmoney-mcp"],
      "env": {
        "ZENMONEY_ACCESS_TOKEN": "paste-token-here",
        "ZENMONEY_SYNC_ON_START": "true",
        "ZENMONEY_API_BASE_URL": "https://api.zenmoney.ru/v8",
        "ZENMONEY_DEFAULT_RESULT_LIMIT": "100",
        "ZENMONEY_MAX_RESULT_LIMIT": "500",
        "ZENMONEY_REQUEST_TIMEOUT_MS": "30000",
        "ZENMONEY_ENABLE_WRITE_TOOLS": "false"
      }
    }
  }
}

The same example is available in mcp-config.example.json.

Configuration

ZENMONEY_ACCESS_TOKEN=
ZENMONEY_SYNC_ON_START=true
ZENMONEY_API_BASE_URL=https://api.zenmoney.ru/v8
ZENMONEY_DEFAULT_RESULT_LIMIT=100
ZENMONEY_MAX_RESULT_LIMIT=500
ZENMONEY_REQUEST_TIMEOUT_MS=30000
ZENMONEY_ENABLE_WRITE_TOOLS=false

ZENMONEY_DEFAULT_RESULT_LIMIT and ZENMONEY_MAX_RESULT_LIMIT limit MCP responses from the in-memory snapshot. They do not limit ZenMoney API synchronization.

Local Development

npm install
cp .env.example .env
npm run dev

For a production-like local run from source:

npm run build
npm start

Tools

  • sync_run

  • sync_status

  • accounts_list

  • transactions_list

  • transactions_get

  • transactions_suggest

  • tags_list

  • merchants_list

  • budgets_list

  • budgets_get_status

budgets_get_status calculates read-only category budget status for a month. It reports the configured outcome budget, actual spending, remaining amount, overspend state, and matched category ids. Child categories are included by default with includeChildren: true.

Optional Write Tools

The server is read-only by default. Write tools are not registered unless you explicitly enable them at process startup.

Enable write tools with a launch argument:

{
  "mcpServers": {
    "zenmoney": {
      "command": "npx",
      "args": ["-y", "@nonnname/zenmoney-mcp", "--enable-write-tools"],
      "env": {
        "ZENMONEY_ACCESS_TOKEN": "paste-token-here"
      }
    }
  }
}

Or enable write tools with an environment variable:

{
  "env": {
    "ZENMONEY_ACCESS_TOKEN": "paste-token-here",
    "ZENMONEY_ENABLE_WRITE_TOOLS": "true"
  }
}

Write tools can create, update, and delete ZenMoney user entities except budgets. Update and delete tools require expectedChanged, which is the changed value returned by the read tools. If the entity changes remotely before the write, the server returns a conflict and does not send the mutation.

Budget writes are not supported.

Write tools registered only after opt-in:

  • accounts_create

  • accounts_update

  • accounts_delete

  • transactions_create

  • transactions_create_expense

  • transactions_create_income

  • transactions_create_transfer

  • transactions_update

  • transactions_delete

  • tags_create

  • tags_update

  • tags_delete

  • merchants_create

  • merchants_update

  • merchants_delete

  • reminders_create

  • reminders_update

  • reminders_delete

  • reminder_markers_create

  • reminder_markers_update

  • reminder_markers_delete

Resources

  • zenmoney://status

  • zenmoney://accounts

  • zenmoney://transactions

  • zenmoney://transactions/{id}

  • zenmoney://tags

  • zenmoney://merchants

  • zenmoney://budgets

  • zenmoney://schema/account

  • zenmoney://schema/transaction

  • zenmoney://schema/tag

  • zenmoney://schema/merchant

  • zenmoney://schema/budget

Contributor setup, verification, and maintainer release instructions live in CONTRIBUTING.md.

Available Tools

10 tools
accounts_listZenMoney AccountsC

List accounts from the in-memory ZenMoney snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeArchivedNo

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 carries the burden of disclosing behavior. It reveals the data source (in-memory snapshot) but does not state whether it is read-only, what happens if the snapshot is empty, or any side effects. The agent has limited insight into behavioral traits.

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. Every word contributes meaning. It is appropriately sized for a simple list operation.

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 one boolean parameter, no output schema, and no annotations, the description provides the bare minimum. It states the action and data source but lacks details about return format, default parameter values, or how archived accounts are handled. It is adequate but not complete.

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%, yet the description adds no explanation for the 'includeArchived' parameter. The parameter name is self-explanatory, but the description does not confirm its meaning or default behavior, leaving the agent to infer.

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 verb 'list' and resource 'accounts', and specifies the data source as 'in-memory ZenMoney snapshot', which differentiates it from a live API. However, it does not explicitly distinguish from sibling list tools like budgets_list or merchants_list, though the resource name is distinct.

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 conditions, prerequisites, or exclusions. The agent must rely solely on the resource name to infer applicability.

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

budgets_get_statusZenMoney Budget StatusB

Calculate read-only spending and remaining amount for a category budget.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthYes
tagIdYes
includeChildrenNo
userIdNo

TDQS

B3/5.0
Behavior3/5

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

The description explicitly states the operation is 'read-only', which is a key behavioral trait. However, no other behavioral details (e.g., authentication, response format, error conditions) are provided, and there are no annotations to supplement.

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 sentence with no unnecessary words. However, it sacrifices necessary detail for brevity, making it slightly under-specified.

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 tool has 4 parameters, no output schema, and no annotations, the description is insufficient. It covers the basic purpose but lacks return value documentation, parameter descriptions, and error handling context.

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?

With 0% schema coverage, the description adds no value beyond the parameter names and types in the schema. It does not explain the meaning or expected format of month, tagId, includeChildren, or userId.

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 that the tool calculates read-only spending and remaining amount for a category budget. The verb 'calculate' and resource 'budget status' are specific and distinguish from sibling tools like budgets_list or transactions_get.

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 does not provide any guidance on when to use this tool versus alternatives such as budgets_list or transactions_list. No context on prerequisites or exclusions is given.

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

budgets_listZenMoney BudgetsC

List budgets from the in-memory ZenMoney snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthNo
tagIdNo
userIdNo

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It mentions the in-memory snapshot, hinting at non-real-time data, but fails to disclose side effects, authentication requirements, or other behavioral traits.

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 sentence that efficiently conveys the verb and resource. However, it may be too sparse for full clarity.

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 three parameters and no output schema, the description is incomplete. It does not specify return format, filtering behavior, or expected data formats for parameters like month.

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 does not explain any parameters (month, tagId, userId). Without additional context, an AI agent cannot properly utilize these parameters.

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 action (List) and resource (budgets), and specifies the data source (in-memory ZenMoney snapshot). However, it does not explicitly distinguish from siblings like budgets_get_status, which also deals with budgets.

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. The description lacks context for appropriate usage scenarios.

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

merchants_listZenMoney MerchantsC

List merchants from the in-memory ZenMoney snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
limitNo

TDQS

C2.8/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 mentions 'in-memory snapshot', hinting at non-live data, but does not disclose side effects, required permissions, or any other behavioral traits. Additional information about return behavior or performance implications would be needed.

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, efficient sentence that states the action and source. While concise, it omits essential parameter information, making it slightly under-specified. However, it is front-loaded and has no wasted 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?

Given two optional parameters and no output schema, the description is incomplete. It does not describe the return format, sorting, pagination, or how parameters affect results. For a tool with no annotations, more context is necessary.

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%, and the description does not clarify the meaning of 'query' or 'limit' parameters. Without any explanation, the description adds no value beyond the schema, failing to compensate for the low coverage.

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

Purpose5/5

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

The description clearly states the verb 'List' and the resource 'merchants', and specifies the data source as 'the in-memory ZenMoney snapshot'. This distinguishes it from sibling tools like accounts_list or transactions_list, making the purpose unambiguous.

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. There is no mention of prerequisites, filtering capabilities, or when not to use it. The description lacks context for optimal tool selection.

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

sync_runZenMoney SyncC

Synchronize the in-memory ZenMoney snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
fullNo

TDQS

C2.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 burden of disclosing behavioral traits like side effects, safety, or required permissions. It only states the action without any additional context.

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

Conciseness2/5

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

The description is extremely concise (one sentence), but it is underspecified. Conciseness should not come at the cost of clarity and completeness. It fails to earn its place as a helpful definition.

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 simplicity of the tool (1 param, no output schema), the description should at least explain the parameter and basic behavior. It is incomplete, leaving critical gaps for correct use.

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?

The input schema has one boolean parameter 'full' with 0% description coverage, and the tool description does not mention it at all. The agent has no way to understand the parameter's purpose or effect.

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 the verb 'synchronize' and the resource 'in-memory ZenMoney snapshot', which distinguishes it from read-only sibling tools. However, 'synchronize' is vague and does not explain what synchronization entails or what 'in-memory snapshot' means.

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 vs. alternatives like sync_status. The description implies usage for synchronization but offers no exclusions or context.

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

sync_statusZenMoney Cache StatusA

Return memory cache initialization and synchronization status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided, and the description only states the return value without disclosing behavioral traits like idempotency, side effects, or safety. With no annotations, more detail is needed.

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 of 7 words, no filler. Front-loaded with purpose. Every word earns its place.

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?

Tool is simple with no parameters and no output schema. The description states it returns status but lacks detail on the format or possible values, which would help completeness without an output schema.

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?

No parameters exist, so baseline score of 4 applies. The description does not need to add parameter meaning beyond the schema, which has 100% coverage.

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

Purpose5/5

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

The description clearly states the verb 'Return' and the resource 'memory cache initialization and synchronization status', making the tool's purpose explicit. It distinguishes from sibling tools like sync_run which performs sync actions.

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 such as sync_run. The description does not mention prerequisites or context for checking status.

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

tags_listZenMoney TagsC

List tags/categories from the in-memory ZenMoney snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeArchivedNo

TDQS

C2.7/5.0
Behavior3/5

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

Description mentions 'in-memory ZenMoney snapshot', indicating it reads cached data not live data. This is useful behavioral context beyond a simple read operation. However, no annotations exist, and it doesn't specify behavior when snapshot is unavailable or if the tool is destructive (it's not).

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?

Description is a single concise sentence that starts with the verb and resource. It is efficient but misses parameter details. Could be slightly improved without sacrificing conciseness.

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 tool has one undocumented parameter and no output schema or annotations, the description should include at least the parameter's meaning. It fails to provide complete context for correct invocation.

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?

Input schema has one parameter 'includeArchived' (boolean) with no description coverage. The description does not mention this parameter at all, leaving its purpose unclear. Agent must infer from name.

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?

Description clearly states it lists tags/categories from the in-memory snapshot. Verb 'list' and resource 'tags/categories' are specific. However, it doesn't distinguish between tags and categories if they are separate entities, but siblings make it clear these are different from accounts, budgets, etc.

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 merchants_list or transactions_list. No exclusions or prerequisites mentioned. The description only states what it does, not when to use it.

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

transactions_getZenMoney TransactionB

Get one transaction by id from the in-memory ZenMoney snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.3/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 mentions 'in-memory snapshot', hinting at data sourcing, but omits details on error handling (e.g., not found), permissions, or side effects. Acceptable for a simple get operation but could be more explicit.

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 efficiently conveys the core functionality without any fluff. Every word contributes to understanding.

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?

Despite a simple interface, the description lacks information about return values (no output schema), error states, or pagination. For a tool that retrieves a single entity, more context on expected behavior (e.g., null or error for missing ID) would improve completeness.

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%, and the description adds no additional meaning to the 'id' parameter beyond its name and type. The tool description fails to clarify what the ID represents or any constraints on its format.

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 one transaction by its ID, specifying the source as 'in-memory ZenMoney snapshot'. This distinguishes it from siblings like transactions_list, which retrieves multiple 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 use when you have a specific transaction ID, but lacks explicit guidance on when to prefer this over alternatives like transactions_list or transactions_suggest. No when-not-to-use advice is provided.

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

transactions_listZenMoney TransactionsC

List transactions from the in-memory ZenMoney snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateFromNo
dateToNo
accountIdNo
tagIdNo
merchantIdNo
payeeNo
includeDeletedNo
limitNo

TDQS

C2.3/5.0
Behavior2/5

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

Description only says 'list transactions' but lacks disclosure of behavioral traits such as read-only nature, side effects, authorization needs, or pagination. No annotations provided to compensate.

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

Conciseness2/5

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

Extremely short (one sentence) but lacks essential detail. Conciseness is not simply brevity; it should pack useful information without waste. Here, it's under-specified.

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 8 parameters, no output schema, no annotations, and multiple sibling tools, the description is severely incomplete. It does not explain query parameters, return structure, or behavior.

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 coverage is 0% and description adds no parameter information for any of the 8 parameters. Description fails to explain filtering capabilities like date range, account, or tags.

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?

Description clearly states 'List transactions' with a specific resource and source ('in-memory ZenMoney snapshot'). However, it does not differentiate from sibling tools like transactions_get or transactions_suggest.

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. Does not mention when-not-to-use or prerequisites.

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

transactions_suggestZenMoney Suggest TransactionC

Ask ZenMoney to suggest transaction payee, merchant, or tags.

ParametersJSON Schema
NameRequiredDescriptionDefault
payeeNo
merchantNo
amountNo
accountIdNo
dateNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, description carries full burden but only says 'suggest' without explaining behavior, return format, or side effects. Unclear if it's a read operation or mutates anything.

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?

Single sentence conveying core function; no redundant words. However, could be slightly more informative without losing conciseness.

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?

Tool has 5 parameters, no annotations, no output schema. Description fails to explain relationship between input fields and suggestions, or expected output format, leaving agent under-informed.

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 coverage is 0%, and description only mentions payee, merchant, or tags, ignoring amount, accountId, and date. Provides minimal meaning beyond schema field names.

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?

Description clearly states the tool suggests transaction payee, merchant, or tags, distinguishing it from sibling list/get tools. Verb 'suggest' and resource 'transaction attributes' are specific.

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 merchants_list or tags_list. No exclusions or prerequisites mentioned.

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. 19 tool updatesv0.2.0
    • Addedaccounts_list
    • Addedbudgets_get_status
    • Addedbudgets_list
    • Addedmerchants_list
    • Addedsync_run
    • Addedsync_status
    • Addedtags_list
    • Addedtransactions_get
    • Addedtransactions_list
    • Addedtransactions_suggest
    • Removedzenmoney_cache_status
    • Removedzenmoney_get_transaction
    • Removedzenmoney_list_accounts
    • Removedzenmoney_list_budgets
    • Removedzenmoney_list_merchants
    • Removedzenmoney_list_tags
    • Removedzenmoney_list_transactions
    • Removedzenmoney_suggest_transaction
    • Removedzenmoney_sync
  2. 9 tool updatesv0.1.0
    • First observedzenmoney_cache_status
    • First observedzenmoney_get_transaction
    • First observedzenmoney_list_accounts
    • First observedzenmoney_list_budgets
    • First observedzenmoney_list_merchants
    • First observedzenmoney_list_tags
    • First observedzenmoney_list_transactions
    • First observedzenmoney_suggest_transaction
    • First observedzenmoney_sync

TDQS

B3.1/5.0

Scored across 10 tools

Disambiguation5/5

Each tool targets a distinct entity or operation: listing for accounts, budgets, merchants, tags, and transactions; plus specific operations like get, suggest, sync, and status. No overlapping purposes.

Naming Consistency5/5

All tools follow a consistent 'entity_verb' pattern (e.g., accounts_list, sync_run). While the order differs from the typical 'verb_noun', the pattern is uniform across the entire set.

Tool Count5/5

With 10 tools, the server covers core operations for a read-only snapshot viewer: listing all entities, specific retrieval, suggestion, and synchronization management. This is well-scoped.

Completeness3/5

The tool set provides list operations for all major entities and a get for transactions, but lacks individual get endpoints for accounts, budgets, merchants, and tags. This leaves gaps for detailed inspection.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides an MCP server for querying and managing Monarch Money personal finance data through a local SQLite mirror with read-only SQL access. It enables users to sync transaction history from the Monarch API and analyze accounts, categories, and tags.
    1
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    A read-only MCP server that gives AI agents structured access to a Beancount personal finance ledger.
    1
    -
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for ZenMoney that enables AI clients to read and manage personal finance data (accounts, categories, transactions, etc.) via natural language.
    17
    101 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    An MCP server for the Zenmoney personal-finance API that exposes read access to accounts, transactions, categories, budgets, merchants, and reminders, plus the ability to create transactions.
    8
    MIT