Skip to main content
Glama
type0labs-dev

actual-mcp

actual-mcp

CI License: MIT

An MCP server for Actual Budget — with a per-tool safety layer.

Actual has no HTTP or MCP surface of its own; it ships a Node SDK. This wraps that SDK as an MCP server so any agent — Claude Desktop, Cursor, your own — can read and edit your budget in natural language.

The difference from a plain wrapper: every tool carries its own risk. A read is a read. A mutation says so. And a delete can never fire on the agent's say-so — it returns a confirmation token and refuses until you call it again with confirm: true. The model can plan freely; it cannot quietly wipe a category because a prompt drifted.

Giving an agent write access to your finances is a liability unless the tools themselves carry the seatbelt. The safest place to enforce a rule is the tool, not the prompt.


Requirements

  • Node.js 20+

  • A running, self-hosted Actual sync server (the actual-server you sync your budget to — not the desktop app). You need its URL, its password (if set), and the Sync ID of the budget you want to expose.

Related MCP server: Actual Budget MCP Server

Quick start

1. Find your Sync ID

In Actual: Settings → Show advanced settings → Sync ID. It's a UUID like a1b2c3d4-....

2. Add the server to your MCP client

Edit claude_desktop_config.json (Claude → Settings → Developer → Edit Config):

{
  "mcpServers": {
    "actual": {
      "command": "npx",
      "args": ["-y", "actual-mcp"],
      "env": {
        "ACTUAL_SERVER_URL": "https://actual.example.com",
        "ACTUAL_PASSWORD": "your-server-password",
        "ACTUAL_SYNC_ID": "your-sync-id"
      }
    }
  }
}

Restart Claude Desktop. You'll see the tools appear under the 🔌 icon.

Any stdio MCP client works — point it at npx -y actual-mcp with the same four env vars. In Cursor: Settings → MCP → Add new and use the same command/args/env shape.

3. Ask it things

What did I spend on groceries last month?
List my accounts and their balances.
Move R$200 from Dining to Savings for July.
Add a R$54.90 transaction to Nubank, payee "Uber", category Transport, dated today.

Configuration

Env var

Required

What

ACTUAL_SERVER_URL

Your Actual sync server URL.

ACTUAL_SYNC_ID

Sync ID of the budget to open.

ACTUAL_PASSWORD

Server password. Omit if the server has none.

ACTUAL_DATA_DIR

Where the SDK caches the budget. Defaults to /tmp/actual-mcp-data.

Amounts are integer minor units, matching the Actual SDK — R$200.00 is 20000, and outflows are negative (-5490 = R$54.90 spent).

The safety model

Level

Tools

Behaviour

🟢 read-only

all list_*, get_*

Never touch data.

🟡 mutating

all create_*, update_*, set_budget_*

Change data; run immediately.

🔴 guarded

all delete_*

Change data; refuse until confirm: true.

Every tool's level is exposed three ways so the seatbelt is visible before a call: in the tool description, in MCP readOnlyHint / destructiveHint annotations, and — for guarded tools — as a hard refusal at call time.

What a guarded call looks like. The agent tries to delete, and gets back a refusal with the exact arguments and a confirmation token:

// → delete_category { "id": "cat-abc-123" }
// ← (isError)
⚠️ "delete_category" is a destructive action and needs confirmation.
It will run with:
{ "id": "cat-abc-123" }
To proceed, call "delete_category" again with "confirm": true.
Confirmation token: 75aa4f772b62

Only an explicit re-invocation clears it:

// → delete_category { "id": "cat-abc-123", "confirm": true }
// ← { "ok": true }

The human reading the transcript sees precisely what "yes" authorized.

Tools (28)

Tool

Level

Args

list_category_groups

🟢

create_category_group

🟡

name

update_category_group

🟡

id, name

delete_category_group

🔴

id, confirm

list_categories

🟢

create_category

🟡

name, group_id

update_category

🟡

id, name?, group_id?, hidden?

delete_category

🔴

id, confirm

list_transactions

🟢

account_id, start_date?, end_date?

create_transaction

🟡

account_id, date, amount, payee_name?, category?, notes?

update_transaction

🟡

id, date?, amount?, payee_name?, category?, notes?, cleared?

delete_transaction

🔴

id, confirm

list_accounts

🟢

get_account_balance

🟢

account_id

create_account

🟡

name, offbudget?

update_account

🟡

id, name?, offbudget?

list_budget_months

🟢

get_budget_month

🟢

month (YYYY-MM)

set_budget_amount

🟡

month, category_id, amount

set_budget_carryover

🟡

month, category_id, enabled

list_schedules

🟢

create_schedule

🟡

account_id, amount, start_date, name?, frequency?, category_id?, payee_name?

update_schedule

🟡

id, + any schedule field

delete_schedule

🔴

id, confirm

list_payees

🟢

create_payee

🟡

name

update_payee

🟡

id, name?, category?

delete_payee

🔴

id, confirm

Troubleshooting

  • "actual-mcp is not configured"ACTUAL_SERVER_URL or ACTUAL_SYNC_ID is missing from the client's env block.

  • Can't connect / auth fails — check the URL is the sync server (not the desktop app) and the password matches. Test it by logging into that URL in a browser.

  • Wrong or empty data — the Sync ID points at a different budget file. Re-copy it from Settings → Show advanced settings → Sync ID.

  • Tools don't appear in Claude Desktop — fully quit and reopen; check the config file is valid JSON.

Verify your setup

Before wiring it into an agent, confirm the server can reach your Actual instance. This prints only counts — never names or amounts:

ACTUAL_SERVER_URL=https://actual.example.com \
ACTUAL_SYNC_ID=your-sync-id \
ACTUAL_PASSWORD=your-password \
npm run smoke
✓ connected to Actual
  accounts:        1
  categories:      63
  category groups: 17
  budget months:   21
✓ clean shutdown

Develop

npm install
npm run build
npm run inspect          # @modelcontextprotocol/inspector against the built server
npm run smoke            # connection check (counts only)

License

MIT © Mauricio Juba · TYPE:ZERO

Not affiliated with Actual Budget. Built on the official @actual-app/api.

Available Tools

28 tools
create_accountC
Destructive

Create an account (optionally off-budget). [mutating]

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
offbudgetNo

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds '[mutating]' which is redundant, and does not disclose additional behaviors such as side effects, authorization requirements, 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.

Conciseness3/5

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

The description is a single short sentence, which is efficient, but it prioritizes brevity over completeness. No unnecessary words, but the content is 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?

For a mutating tool with 2 parameters and no output schema, the description omits expected return values, prerequisites, and behavioral context beyond the minimal. It is not complete enough for reliable agent use.

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?

With schema coverage at 0%, the description must compensate but only mentions 'optionally off-budget' for the offbudget parameter. The name parameter is entirely unexplained. This adds minimal value.

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

Purpose5/5

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

The description clearly states the action ('Create') and the resource ('account'), including the optional off-budget feature. It inherently distinguishes from sibling tools, which operate on different resources (categories, payees, 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 is provided on when to use this tool vs alternatives like update_account, or any prerequisites. The description lacks any situational context.

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

create_categoryB
Destructive

Create a category inside a group. [mutating]

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
group_idYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true. The description adds '[mutating]' which is redundant. No additional behavioral context (e.g., idempotency, error conditions) is provided.

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

Conciseness5/5

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

Extremely concise with two segments: purpose and mutation hint. No fluff; front-loaded.

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?

Missing critical context: no prerequisites (group_id must exist), no mention of return value (no output schema), no uniqueness or duplicate handling expectations.

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%, so the description must compensate, but it only mentions 'name' and 'group_id' implicitly without adding constraints, uniqueness, or format details beyond the schema.

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

Purpose5/5

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

The description clearly states the action (Create) and resource (category) with the scope 'inside a group'. It distinguishes from siblings like create_category_group which creates the group itself.

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 (e.g., update_category), no prerequisites mentioned (e.g., group must exist), and no context on 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.

create_category_groupC
Destructive

Create a new category group. [mutating]

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true. The description adds only '[mutating]', which is redundant. No explanation of the destructive implications 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 very concise, one sentence plus a tag, and front-loaded. However, it is so brief that it sacrifices too much information for 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?

The tool is simple (one required param, no output schema), but the description lacks explanation of the parameter, usage guidelines, and behavioral details, making it incomplete for an agent to use effectively.

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%, so the description must add meaning for the single 'name' parameter, but it does not. The description simply restates the tool's purpose without explaining the parameter.

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 specific action, 'Create a new category group', which is a specific verb and resource, and distinguishes it from siblings like 'create_category' and 'delete_category_group'.

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 (e.g., when to create a category group vs. a category). The '[mutating]' tag hints at behavior but does not provide usage context.

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

create_payeeC
Destructive

Create a payee. [mutating]

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already provide readOnlyHint=false and destructiveHint=true; description adds redundant '[mutating]' but no extra 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.

Conciseness3/5

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

Extremely short but the phrase is clear; not well-structured, no front-loading of key info.

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?

Missing details on idempotency, error conditions, success behavior for a simple creation tool.

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 has 0% description coverage; description does not elaborate on the 'name' parameter (e.g., format, constraints).

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 verb 'Create' and resource 'payee' are clear. It distinguishes from update/delete payee siblings, but not from other create_ tools.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives; only a '[mutating]' tag, which is implied by annotations.

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

create_scheduleC
Destructive

Create a schedule (recurring planned transaction). [mutating]

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
amountYes
frequencyNo
account_idYes
payee_nameNo
start_dateYes
category_idNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already indicate readOnlyHint=false and destructiveHint=true. The description adds '[mutating]' which is redundant and provides no additional insight into potential side effects, prerequisites, or reversibility.

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

Conciseness3/5

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

The description is extremely concise (one line) and front-loaded with the key action. However, the brevity sacrifices necessary information, making it barely adequate.

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?

With 7 parameters, destructiveHint=true, and no output schema, the description fails to provide essential context. It does not explain the schedule creation process, parameter dependencies, or what the tool returns.

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%, meaning no parameter descriptions in the schema. The description does not explain any of the 7 parameters, including the 3 required ones, leaving the agent without critical context like format or constraints.

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 'Create a schedule (recurring planned transaction)', specifying the action and resource. It distinguishes from other create tools by mentioning 'recurring', though it could better differentiate from create_transaction.

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 explicit guidance on when to use this tool vs alternatives like create_transaction for one-time transactions. The 'recurring' hint is present but not elaborated.

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

create_transactionB
Destructive

Add a transaction to an account. [mutating]

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
notesNo
amountYesinteger minor units (e.g. cents)
categoryNo
account_idYes
payee_nameNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true. The description adds '[mutating]' which reinforces but does not fundamentally expand beyond what annotations provide. No additional behavioral traits disclosed.

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 with no filler. However, it could be expanded slightly to include parameter details 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?

As a mutation tool with destructiveHint and no output schema, the description lacks context on success/failure behavior, return values, or prerequisites (e.g., account must exist). The information provided is minimal.

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 only 17% (only 'amount' has a description). The tool description provides no explanation of the six parameters, forcing reliance on parameter names which may be ambiguous (e.g., 'category', 'payee_name'). This does not compensate for low schema 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?

Description specifies the verb 'Add' and the resource 'transaction to an account', clearly distinguishing from sibling tools like create_account or create_category. The purpose is direct and 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 such as update_transaction or delete_transaction. No prerequisites or constraints (e.g., account existence) are mentioned.

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

delete_categoryA
Destructive

Delete a category. Destructive — needs confirmation. [destructive · requires confirm:true]

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
confirmNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true, and the description adds 'needs confirmation' which clarifies the required user behavior beyond the annotation. No contradictions.

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

Conciseness5/5

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

The description is extremely concise with one sentence plus a bracketed hint, no unnecessary words, and the key information is front-loaded.

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

Completeness2/5

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

For a simple delete tool with one required parameter and no output schema, the description is minimal. It does not explain prerequisites (e.g., category existence), effects (cascading deletes?), or return behavior. More context is needed for safe use.

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%, but the description only mentions 'needs confirmation' without explaining the 'id' parameter or how the 'confirm' boolean should be used. It provides minimal value for parameter understanding.

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 'Delete a category' with the verb 'Delete' and resource 'category'. It also adds 'Destructive' and 'needs confirmation', distinguishing it from sibling tools like create_category or update_category.

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

Usage Guidelines3/5

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

The description provides a warning about destructiveness and need for confirmation, but does not explicitly state when not to use this tool or suggest alternatives (e.g., update for deactivation). It implies caution but lacks explicit usage context.

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

delete_category_groupA
Destructive

Delete a category group. Destructive — needs confirmation. [destructive · requires confirm:true]

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
confirmNo

TDQS

A4.2/5.0
Behavior5/5

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

The description goes beyond the 'destructiveHint' annotation by explicitly stating 'Destructive — needs confirmation' and clarifying that confirm must be true. This fully discloses the behavioral trait.

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 very concise, containing only two sentences and a tag. Every word serves a purpose without unnecessary fluff.

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

Completeness3/5

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

For a simple delete tool with two parameters and no output schema, the description covers the core purpose and destructive behavior. However, it lacks full parameter documentation, leaving some ambiguity.

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?

With 0% schema description coverage, the description only hints at the 'confirm' parameter but does not explain the 'id' parameter or specify that 'confirm' must be true. Parameters are under-documented.

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

Purpose5/5

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

The description clearly states the action 'Delete a category group,' using a specific verb and resource. This distinguishes it from siblings like 'delete_category' which deletes a different entity.

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

Usage Guidelines4/5

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

The description indicates destructive nature and need for confirmation, providing context on when to use it. However, it does not explicitly state when not to use it or compare to alternatives.

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

delete_payeeA
Destructive

Delete a payee. Destructive — needs confirmation. [destructive · requires confirm:true]

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
confirmNo

TDQS

A4.1/5.0
Behavior4/5

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

The description confirms the destructive hint from annotations and adds the requirement for confirmation, providing useful behavioral context beyond the annotation alone.

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 with a brief annotation note, front-loading the key purpose and using no unnecessary words.

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?

While the description covers destructiveness and confirmation, it lacks information on return values, error handling, or prerequisites, which would be helpful given the absence of an output schema.

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

Parameters3/5

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

With 0% schema description coverage, the description adds minimal parameter meaning: it mentions the need for confirmation but does not describe the 'id' parameter or clarify that 'confirm' must be true to proceed.

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 'Delete a payee,' which is a specific verb and resource. It distinguishes itself from sibling delete tools by targeting payees exclusively.

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

Usage Guidelines4/5

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

The description explicitly notes the destructive nature and the need for confirmation, guiding the agent to use the confirm parameter. It does not mention alternatives, but the use case for deletion is clear.

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

delete_scheduleA
Destructive

Delete a schedule. Destructive — needs confirmation. [destructive · requires confirm:true]

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
confirmNo

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true. The description reinforces this and adds that confirmation is needed. This is useful context but does not elaborate on consequences like permanence or cascading effects.

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

Conciseness4/5

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

The description is concise with two sentences and a tag, front-loading key info. No wasted words, but the tag is informal and redundant with annotations.

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?

For a simple delete tool with 2 parameters and no output schema, the description covers basic destructive nature and confirmation need. However, it lacks prerequisites (schedule must exist) and error conditions, leaving gaps for an agent.

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?

With 0% schema coverage, the description must compensate. It only mentions 'confirmation' relates to the confirm parameter but does not explain the id parameter or clarify that confirm must be true. Parameter meaning is minimal.

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 'Delete a schedule', which is a specific verb+resource. This distinguishes it from siblings like create_schedule, update_schedule, and list_schedules.

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

Usage Guidelines4/5

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

The description implies usage for deleting a schedule and adds 'needs confirmation', indicating a required confirm parameter. However, it does not explicitly state when not to use or provide alternatives.

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

delete_transactionA
Destructive

Delete a transaction. Destructive — needs confirmation. [destructive · requires confirm:true]

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
confirmNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already mark destructiveHint=true. The description adds that confirmation is required, which is useful. However, it omits details like whether deletion cascades or if undo is possible.

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

Conciseness5/5

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

Extremely concise: three short phrases that front-load the purpose, add behavioral note, and clarify parameter requirement. Every sentence is necessary.

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?

For a simple delete tool with two parameters and no output schema, the description is adequate but incomplete. It does not explain what happens on success/failure or how to handle invalid IDs.

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

Parameters3/5

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

The description explains the 'confirm' parameter must be true for deletion to proceed, adding meaning beyond the schema's boolean type. But it does not describe the 'id' parameter (likely the transaction identifier), leaving it unclear.

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 'Delete a transaction' with a specific verb and resource. The 'Destructive' label reinforces the action. Among siblings like delete_category, this tool is distinct for transactions.

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 explicit guidance on when to use this tool versus alternatives like update_transaction or create_transaction. The note 'needs confirmation' is a behavioral requirement, not a usage guideline.

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

get_account_balanceA
Read-only

Get the current balance of an account (integer minor units). [read-only]

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds valuable context: balance is in integer minor units and includes a [read-only] tag, reinforcing safety. No contradictions.

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, direct sentence with essential information. No filler words, front-loaded with purpose. Efficient use of space.

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

Completeness4/5

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

Given low complexity (1 param, no output schema), the description covers the core purpose and unit. Could mention that balance is current or include return format, but adequate for a simple read tool.

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%, so description must compensate for the account_id parameter. It does not explain the parameter's meaning or how to obtain it, leaving the agent to infer from the schema alone.

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 verb 'Get' and resource 'current balance of an account' with the specific unit (integer minor units). Distinguishes from siblings like list_accounts (which lists accounts) and update_account (which modifies).

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?

Implies use for retrieving balance of a specific account, but no explicit guidance on when to use this vs alternatives like list_accounts which may also show balance. No exclusion 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_budget_monthA
Read-only

Get the full budget for one month (YYYY-MM). [read-only]

ParametersJSON Schema
NameRequiredDescriptionDefault
monthYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true. Description repeats '[read-only]' but adds no new behavioral traits (e.g., error handling for invalid month). Minimal extra value.

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

Conciseness5/5

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

Extremely concise: one clause plus format note. No unnecessary words or redundancy.

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

Completeness4/5

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

Adequate for a simple getter with one required parameter and no output schema. Lacks details on response format or edge cases, but the core function is clear.

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

Parameters4/5

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

Schema provides no description for the 'month' parameter (0% coverage). Description compensates by specifying the expected format 'YYYY-MM', adding clarity beyond the schema.

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

Purpose5/5

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

Clearly states it gets the full budget for one month specified as YYYY-MM. Differentiates from sibling list_budget_months which would list multiple months.

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

Usage Guidelines3/5

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

No explicit when-to-use or alternative guidance, though the name and read-only hint imply usage compared to siblings like list_budget_months. Implicit but not explicit.

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

list_accountsA
Read-only

List all accounts. [read-only]

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds '[read-only]' which reinforces this but offers no additional behavioral context beyond the annotations.

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

Conciseness5/5

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

Single, front-loaded sentence with no wasted words. Efficient and clear.

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

Completeness4/5

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

For a simple list tool with no input or output schema, the description is adequate but does not explain return format or account structure. Lacks a bit of completeness.

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

Parameters4/5

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

There are no parameters, and schema coverage is 100%. Baseline for 0 parameters is 4; description adds no param info, which is acceptable.

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 'List all accounts' with a specific verb and resource, distinguishing it from sibling tools for creation, update, deletion, etc.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives; the name implies listing accounts, but no when/not or alternative suggestions are provided.

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

list_budget_monthsA
Read-only

List every month that has budget data. [read-only]

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's '[read-only]' tag is redundant but not contradictory. It does not add new behavioral context beyond the annotations, but the tool is simple, so this is adequate.

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

Conciseness5/5

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

The description is extremely concise, with two short phrases that convey all necessary information without wasted words. It is appropriately front-loaded.

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

Completeness4/5

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

For a tool with no parameters and a straightforward purpose, the description is largely complete. It could optionally mention that the output is a list of months, but given the context, the current description is sufficient.

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

Parameters3/5

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

The input schema has zero parameters and schema coverage is 100%, so the description does not need to add parameter details. The baseline score of 3 applies because the schema already handles it.

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

Purpose5/5

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

The description clearly states the action ('List') and the resource ('every month that has budget data'), making the tool's purpose immediately understandable. It distinguishes itself from sibling list tools like list_accounts or list_categories by specifying 'months with budget data'.

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

Usage Guidelines3/5

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

No explicit usage guidance is provided, such as when to use this tool versus alternatives. However, given its simple and unique purpose, the lack of alternatives is not a major issue; the implicit expectation is to use it to enumerate budget months.

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

list_categoriesA
Read-only

List all categories. [read-only]

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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

Annotations already provide readOnlyHint=true and destructiveHint=false. The description adds '[read-only]' which is redundant. No additional behavioral details (e.g., pagination, ordering, or result structure) are disclosed beyond the annotations.

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

Conciseness5/5

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

The description is extremely concise with one sentence plus a tag, no wasted words, and front-loaded. Every part is necessary.

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

Completeness4/5

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

For a simple list-all tool with no parameters and annotations covering safety, the description is adequate. It could mention that it returns a list of category objects, but the context of sibling tools likely makes this clear.

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

Parameters4/5

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

The input schema has zero parameters, so no parameter description is needed. Schema coverage is 100%. The description adds no parameter information, which is acceptable for a parameterless tool.

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 'List all categories' with a specific verb and resource. Among sibling tools, it is distinct from create/delete/update category tools and other list tools like list_accounts. No ambiguity.

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 list_category_groups or other list tools. The description only implies it is read-only but does not provide explicit usage context.

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

list_category_groupsA
Read-only

List all category groups (each with its categories). [read-only]

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds '[read-only]' which is redundant. No additional behavioral traits (e.g., pagination, sorting) are disclosed, but the annotations lower the burden.

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 one concise sentence with a helpful tag, front-loaded with the action. No wasted words.

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?

For a simple listing tool with no parameters and no output schema, the description is adequate but could be more complete by hinting at the response structure (e.g., 'returns a list of group objects with name, id, and nested category array'). It covers the basics but leaves some ambiguity about the output.

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

Parameters4/5

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

With zero parameters and 100% schema coverage, the description has no parameters to document. Baseline 4 is appropriate as there is nothing to add beyond the empty schema.

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

Purpose5/5

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

The description clearly states the tool lists 'all category groups' and specifies that each group includes its categories. This verb+resource+scope clearly distinguishes it from siblings like 'list_categories' (flat list) and 'create_category_group'.

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 gives no guidance on when to use this tool versus alternatives. The '[read-only]' tag hints at safety but lacks explicit context like 'use this to get a hierarchical view of categories, use list_categories for a flat list'.

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

list_payeesB
Read-only

List all payees. [read-only]

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

The description adds '[read-only]' which is redundant with the readOnlyHint annotation. It does not disclose any behavioral traits beyond what annotations already provide, such as whether the list is ordered, paginated, or filtered.

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 extremely concise at one sentence. It communicates the core purpose without waste, though it could include more detail without being verbose.

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

Completeness3/5

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

Given no parameters, an adequate safety profile from annotations, and no output schema, the description is complete for a simple list operation. However, it does not describe the return format or any ordering/limitations, which would be helpful for an agent.

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

Parameters4/5

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

There are no parameters, so schema description coverage is 100%. The description does not need to add meaning beyond the schema. Baseline for 0 parameters is 4.

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

Purpose4/5

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

The description clearly states the tool lists all payees, which is a specific verb+resource. It does not explicitly differentiate from sibling tools like list_accounts, but the resource name is unique enough to avoid confusion.

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

Usage Guidelines2/5

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

No usage guidelines are provided. The description does not indicate when to use this tool over alternatives (e.g., other list tools) or specify any prerequisites or exclusions.

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

list_schedulesA
Read-only

List all schedules. [read-only]

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already provide readOnlyHint and destructiveHint. The description adds '[read-only]' which reinforces annotations but adds no new behavioral details beyond what annotations convey.

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

Conciseness5/5

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

Extremely concise single sentence with front-loaded purpose. No wasted words.

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

Completeness4/5

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

Given zero parameters, no output schema, and a straightforward list operation, the description is complete enough for an agent to understand the tool's function.

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, and schema coverage is 100%. Description adds no additional meaning beyond the empty schema, so baseline 4 is appropriate.

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

Purpose5/5

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

Description clearly states 'List all schedules' as a specific verb+resource. It distinguishes from sibling tools like create_schedule, delete_schedule, and update_schedule.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance. For a simple list operation, usage is implied but not compared to alternatives like list_transactions.

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

list_transactionsB
Read-only

List transactions for an account, optionally filtered by date range. [read-only]

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
account_idYes
start_dateNo

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's '[read-only]' is redundant. No additional behavioral traits (e.g., pagination, rate limits, auth requirements) are disclosed.

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

Conciseness4/5

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

The description is very concise, fitting in a single sentence. However, it could be more structured, but lacks verbose filler.

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?

The tool is simple with 3 parameters and no output schema, so the description is minimally complete. It fails to mention return type or pagination, which would be helpful for the agent.

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 only vaguely refers to date filtering. It does not explain the format of dates or the meaning of account_id, leaving significant gaps for the agent.

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

Purpose5/5

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

The description clearly states the tool lists transactions for an account with optional date filtering. It uses a specific verb and resource, distinguishing it from sibling tools like create_transaction or list_accounts.

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

Usage Guidelines3/5

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

The description mentions optional date filtering but does not provide guidance on when to use this tool versus alternatives like search or other list tools. No context on prerequisites or when not to use.

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

set_budget_amountC
Destructive

Set the budgeted amount for a category in a month. [mutating]

ParametersJSON Schema
NameRequiredDescriptionDefault
monthYes
amountYesinteger minor units
category_idYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds '[mutating]' which is redundant. No disclosure of error handling, side effects, or data persistence beyond the annotations.

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

Conciseness4/5

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

The description is concise with one sentence plus a tag, no wasted words. However, it could include more useful information without becoming verbose.

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?

No output schema, 3 required parameters with low schema coverage, and no explanation of return values, month format, or error conditions. The description is insufficient for safe invocation.

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 only 33% (only 'amount' has minor units description). The tool description adds no extra meaning for 'month' or 'category_id', relying entirely on the schema which lacks detail.

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 'Set the budgeted amount for a category in a month', specifying the verb, resource, and scope. It distinguishes from siblings like 'set_budget_carryover'.

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, no prerequisites or exclusions. The description is minimal and does not help an agent decide contextually among sibling tools.

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

set_budget_carryoverC
Destructive

Enable or disable carryover for a category in a month. [mutating]

ParametersJSON Schema
NameRequiredDescriptionDefault
monthYes
enabledYes
category_idYes

TDQS

C2.7/5.0
Behavior2/5

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

The annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds a '[mutating]' tag, but this is redundant. It does not disclose any additional side effects, such as impact on future months, required permissions, or reversibility. For a tool marked as destructive, more context is expected.

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

Conciseness3/5

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

The description is extremely brief—one sentence plus a tag. While concise, it omits important details about parameters and usage. It front-loads the core action but lacks structure that would help the agent quickly grasp all necessary information.

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's complexity (three required params, no output schema, destructive annotations), the description is incomplete. It does not explain what carryover means in the context of budgeting, the expected month format, or the consequences of enabling/disabling it. The agent needs additional context to use the tool correctly.

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 three parameters (month, enabled, category_id) with 0% description coverage. The description does not elaborate on any of these parameters, leaving the agent to guess expected formats (e.g., month string format) or valid values for category_id.

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

Purpose5/5

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

The description clearly states the tool's action: enable or disable carryover for a specific category in a month. It uses a specific verb and resource, and the mention of 'carryover' distinguishes it from sibling tools like set_budget_amount.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, nor does it explain scenarios where carryover should be enabled or disabled. The agent must infer usage from the tool name alone.

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

update_accountB
Destructive

Update an account (name or off-budget flag). [mutating]

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
nameNo
offbudgetNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true (mutation). The description adds context by specifying the updatable fields, but does not disclose other behaviors like permissions or side effects.

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

Conciseness4/5

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

The description is very concise (one sentence plus a tag). No redundant information, but for a mutation tool with three parameters, it could include more detail without being verbose.

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

Completeness2/5

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

The description lacks return value information, error scenarios, and prerequisites. Given no output schema and simple parameters, it is incomplete for practical use.

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%, so description must compensate. It mentions two fields (name, offbudget) but ignores the required 'id' parameter and provides no constraints or format details.

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

Purpose5/5

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

The description clearly states 'Update an account' with specific fields (name or off-budget flag), making the purpose unambiguous and distinct from sibling tools like create_account or list_accounts.

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 (e.g., create_account for new accounts). The description lacks context about prerequisites like the account existing.

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

update_categoryB
Destructive

Update a category (name, group, or hidden flag). [mutating]

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
nameNo
hiddenNo
group_idNo

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already indicate non-read-only and destructive hint. The description only adds 'mutating', which is redundant. No disclosure of side effects (e.g., impact on transactions) or required permissions.

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?

Very concise single sentence with the core action and parameters. The '[mutating]' tag is extraneous given annotations, but overall efficient. Could be slightly more informative without losing brevity.

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?

Lacks details on return values, error conditions, permissions, or effects beyond the immediate update. Given no output schema and limited annotations, the description is insufficient for complete understanding.

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

Parameters3/5

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

With 0% schema coverage, the description lists three updatable attributes (name, group, hidden flag) that map to parameters, but 'group' is ambiguous (should be group_id) and no explanation of formats or that id is required. Adds some meaning but incomplete.

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 the action ('Update') and the resource ('a category'), and specifies the updatable fields: name, group, hidden flag. This distinguishes it from sibling tools like delete_category or update_category_group.

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 vs alternatives (e.g., create_category, delete_category). The 'mutating' tag hints at the nature but doesn't specify prerequisites or exclusions.

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

update_category_groupB
Destructive

Rename a category group. [mutating]

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
nameYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true, and the description adds '[mutating]' to reinforce this. However, no additional behavioral context is given (e.g., impact on associated categories, permissions 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?

The description is extremely concise with one sentence, front-loading the core action, and contains no superfluous words.

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?

For a simple mutation with few parameters and no output schema, the description covers the basic purpose, but lacks details on error scenarios, id validation, or confirmation of success.

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 the description does not elaborate on the parameters (id and name). The word 'Rename' implies 'name' is the new name, but no format or constraints are described.

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

Purpose5/5

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

The description clearly states the action ('Rename') and the resource ('a category group'), distinguishing it from sibling tools like 'create_category_group' or 'delete_category_group'.

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, such as when updating other category group properties, or any prerequisites or conditions.

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

update_payeeC
Destructive

Update a payee. [mutating]

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
nameNo
categoryNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already indicate mutability (readOnlyHint=false) and destructiveness (destructiveHint=true). The description only adds '[mutating]', which is redundant and adds no new behavioral context such as what gets destroyed or any 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.

Conciseness3/5

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

The description is very short (6 words) and front-loaded with the verb. However, it is too minimal to be considered well-structured for a complete tool definition. Every word is accounted for, but crucial information is missing.

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 no output schema and missing parameter descriptions, the description is incomplete for a mutation tool with destructive hint. It does not specify update behavior (partial vs full replacement), constraints (e.g., payee must exist), or error conditions.

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% with no parameter descriptions. The description does not explain the meaning of id, name, or category, nor does it clarify which are required beyond the schema's required list. The agent gains no additional insight.

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

Purpose4/5

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

The description states 'Update a payee', which clearly identifies the action and resource. It distinguishes from sibling tools like create_payee, delete_payee, and other update tools. However, it lacks details on what fields can be updated beyond the schema.

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 create_payee or delete_payee. The description does not mention prerequisites, when updates are appropriate, or when to avoid using it.

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

update_scheduleC
Destructive

Update a schedule. [mutating]

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
nameNo
amountNo
frequencyNo
next_dateNo
account_idNo
payee_nameNo
category_idNo

TDQS

C2/5.0
Behavior2/5

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

Annotations already indicate destructiveHint=true, and the description adds '[mutating]' which is redundant. No further behavioral traits are disclosed.

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 very short but underspecified (just two words plus a tag). Proper conciseness would include essential context.

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?

With 8 parameters, no output schema, and a destructive hint, the description is grossly incomplete. No details about allowed updates, return values, or side effects.

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 provides no information about any of the 8 parameters. It fails to add meaning beyond the raw schema.

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 'Update a schedule', which clearly identifies the verb and resource. However, it does not distinguish this tool from siblings like update_account or update_transaction.

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, nor any context about prerequisites or limitations.

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

update_transactionC
Destructive

Update fields on a transaction. [mutating]

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
dateNo
notesNo
amountNo
clearedNo
categoryNo
payee_nameNo

TDQS

C2.7/5.0
Behavior3/5

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

The annotations already set readOnlyHint=false and destructiveHint=true, so the '[mutating]' tag is consistent but adds no new behavioral insight. The description does not disclose side effects, authorization requirements, or any behavior beyond what is inferred from the schema.

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

Conciseness3/5

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

The description is extremely short (one sentence plus a tag), which is concise but lacks necessary detail. It is front-loaded with the verb, but the structure fails to provide essential context.

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 7 parameters, no output schema, and annotations indicating destructiveness, the description is insufficient. It does not explain the purpose of the required 'id' parameter, valid value ranges, or how to construct valid inputs.

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 7 parameters with 0% description coverage, and the tool description provides no information about any parameter. The agent must guess the meaning and format of fields like 'date', 'amount', and 'category' without any guidance.

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 ('Update') and the resource ('a transaction'), making the primary function understandable. However, it does not differentiate this tool from sibling tools like 'create_transaction' or 'delete_transaction', and the name already conveys the purpose.

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 such as 'create_transaction' or 'delete_transaction'. There is no mention of prerequisites, common use cases, 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.

TDQS

B3.3/5.0
Disambiguation5/5

Each tool targets a distinct entity and action (e.g., account, category, payee, schedule, transaction, budget month). There is no overlap or ambiguity; an agent can clearly differentiate between tools.

Naming Consistency5/5

All tool names follow a strict verb_noun pattern: create_, delete_, get_, list_, set_, update_. The naming is uniform and predictable throughout the entire set.

Tool Count4/5

With 28 tools, the surface is comprehensive for a personal finance manager. While slightly above the typical 3-15 range, the number is justified by the domain's natural complexity (accounts, categories, payees, schedules, transactions, budgets).

Completeness4/5

The tool set provides full CRUD for core entities (accounts, categories, payees, schedules, transactions) plus budget operations (set amount, carryover, get month). Minor gaps exist (e.g., no import or reporting tools), but the essential lifecycle is well-covered.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with YNAB budgets through natural language. Supports managing accounts, categories, transactions, and budget months with 21 tools for comprehensive budget operations.
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to interact with Actual Budget for personal finance management through natural language, supporting transactions, account balances, budget tracking, spending analysis, and payment searches.
    444
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to interact with YNAB budgets, performing read-only queries by default and optional write operations like creating transactions and managing categories through natural language.
    38
    353
    28
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Bridges AI/LLM applications to Actual Budget, exposing budget data as MCP tools for account listing, transactions, and budget balances.
    4

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/type0labs-dev/actual-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server