Skip to main content
Glama
fabianonetto

Universal Firefly III AI Bridge

by fabianonetto

Universal Firefly III AI Bridge (v3.0.0)

A professional-grade, AI-agnostic bridge providing exhaustive 100% API coverage for connecting AI assistants to your Firefly III personal finance instance.

66 tools covering every major Firefly III capability: accounts, transactions, budgets, bills, recurring rules, automation, insights, attachments, currencies, and more.


Compatibility

AI Platform

Protocol

Connection

Setup Guide

Claude Code

MCP (Native)

stdio

CLAUDE.md

Claude Desktop

MCP (Native)

stdio

CLAUDE.md

Gemini CLI

MCP Extension

stdio

gemini.md

Cursor / VS Code

MCP

stdio or SSE

Manual setup below

ChatGPT

OpenAPI Actions

REST / JSON

/openapi.json endpoint

Custom Apps

REST API

HTTP

/api/<tool> endpoints


Related MCP server: YNAB Assistant

Installation

Prerequisites

  • Node.js v18 or later

  • A running Firefly III instance

  • A Personal Access Token from Firefly III
    (Profile → OAuth → Personal Access Tokens → Create new token)

Clone and install

git clone https://github.com/fabianonetto/mcp-server-firefly-iii.git
cd mcp-server-firefly-iii
npm install

Setup by Platform

Claude Code uses .mcp.json in the project directory for MCP server configuration. Credentials go in a separate .env file so no secrets are ever in config files.

1. Create .env in the repo root (gitignored — never committed):

FIREFLY_URL=http://your-host:PORT
FIREFLY_TOKEN=your_personal_access_token

Get your token: Firefly III → Profile → OAuth → Personal Access Tokens → Create new token

2. Create .mcp.json in the repo root (gitignored — never committed):

{
  "mcpServers": {
    "firefly-iii": {
      "command": "node",
      "args": ["./index.js"]
    }
  }
}

The server reads credentials from .env automatically. No secrets in .mcp.json.

3. Start Claude Code from the repo directory:

claude

The server starts automatically. Claude Code will prompt you to approve it on first launch (once only).

4. Verify the connection by asking:

Use the get_about tool

You should receive your Firefly III version and API information.

Using from other projects:
Copy both .env and .mcp.json to any other project directory, changing ./index.js to the absolute path:

"args": ["/absolute/path/to/mcp-server-firefly-iii/index.js"]

See CLAUDE.md for the full guide including auto-approval configuration.


Claude Desktop

Add the server to your Claude Desktop config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "firefly-iii": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-server-firefly-iii/index.js"],
      "env": {
        "FIREFLY_URL": "http://your-host:PORT",
        "FIREFLY_TOKEN": "your_personal_access_token"
      }
    }
  }
}

Restart Claude Desktop after saving.


Gemini CLI Extension (One-command install)

gemini extensions install https://github.com/fabianonetto/mcp-server-firefly-iii

Then configure your instance:

gemini config set extensions.firefly-iii-universal-bridge.settings.FIREFLY_URL "http://your-host:PORT"
gemini config set extensions.firefly-iii-universal-bridge.settings.FIREFLY_TOKEN "your_token"

See gemini.md for the full guide.


Docker (Official Image)

The official image is available on GitHub Packages: ghcr.io/fabianonetto/mcp-server-firefly-iii.

Run as a service (SSE Mode)

Ideal for ChatGPT Actions, Cursor (SSE), or custom integrations.

docker run -d \
  --name firefly-mcp \
  -p 3001:3001 \
  -e FIREFLY_URL="http://your-firefly-instance" \
  -e FIREFLY_TOKEN="your_personal_access_token" \
  -e PORT=3001 \
  ghcr.io/fabianonetto/mcp-server-firefly-iii:latest

Run with Claude Desktop (stdio Mode)

Add this to your claude_desktop_config.json:

{
  "mcpServers": {
    "firefly-iii": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e", "FIREFLY_URL=http://your-host:PORT",
        "-e", "FIREFLY_TOKEN=your_token",
        "ghcr.io/fabianonetto/mcp-server-firefly-iii:latest"
      ]
    }
  }
}

Cursor / VS Code (MCP Extension)

Add to your MCP config (.cursor/mcp.json or equivalent):

{
  "mcpServers": {
    "firefly-iii": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-server-firefly-iii/index.js"],
      "env": {
        "FIREFLY_URL": "http://your-host:PORT",
        "FIREFLY_TOKEN": "your_personal_access_token"
      }
    }
  }
}

HTTP / SSE Mode (ChatGPT Actions, Custom Apps)

Start the server with a port to enable the REST and SSE endpoints:

FIREFLY_URL=http://your-host:PORT FIREFLY_TOKEN=your_token PORT=3000 node index.js

Available endpoints:

Endpoint

Description

GET /sse

SSE transport for MCP clients

POST /messages

MCP message handler

POST /api/<tool_name>

Direct REST call to any tool

GET /openapi.json

OpenAPI 3.0 spec (import into ChatGPT Actions)


Tool Categories

Category

Tools

Description

Core

1

System info & connectivity

Accounts

5

Full CRUD for all account types

Transactions

7

CRUD, split transactions, search

Budgets

8

Budgets + monetary limits

Bills & Piggy Banks

7

Bill tracking + savings goals

Automation

11

Rules, rule groups, webhooks

Recurring

5

Recurring transaction rules

System

8

Currencies + user preferences

Insights

7

Attachments, charts, net worth, spending

Meta

4

Categories + tags

Object Groups

2

Account/piggy bank organization

Admin

1

Data export

Total

66


Documentation

Document

Description

docs/API.md

Complete reference for all 66 tools and their input schemas

docs/PROMPTS.md

Prompt examples for common financial tasks

docs/USE_CASES.md

Strategic guides: tax assistant, subscription auditor, receipt manager

docs/TESTING.md

Test suite documentation (78 tests, all tools covered)

CLAUDE.md

Claude Code & Claude Desktop setup guide

gemini.md

Gemini CLI extension guide


Running Tests

npm test

78 tests covering all 66 tools. No live Firefly III instance required — all API calls are mocked. See docs/TESTING.md for details.


Security

  • Use a VPN or SSH tunnel if exposing the server to the internet.

  • Keep your FIREFLY_TOKEN secret. Never commit .mcp.json or .env files.

  • See SECURITY.md for the full security policy.


Roadmap

  • v1.x — Initial connectivity

  • v2.x — Exhaustive API coverage (CRUD & core admin)

  • v3.x — Power user features (splits, insights, automation)

  • v3.1.0 — Official Docker image & CI/CD

Available Tools

66 tools
create_accountC

Create a new account.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
typeYes
account_roleNo
currency_codeNo
opening_balanceNo
credit_card_typeNo
monthly_payment_dateNoYYYY-MM-DD
opening_balance_dateNoYYYY-MM-DD

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only says 'Create a new account' and does not disclose side effects, required permissions, whether the operation is reversible, or what happens on duplicate names. The schema hints at optional fields like opening_balance and credit_card_type, but the description does not explain their behavioral implications.

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 concise, but it is under-specified rather than efficiently informative. It earns a 3 because it is not verbose, but it lacks the detail needed to be genuinely useful.

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 creation tool with 8 parameters, no annotations, and no output schema, the description is incomplete. It does not explain required vs. optional parameters, the meaning of account_role, or the expected response. An agent would need to inspect the schema and possibly external documentation to use this tool correctly.

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 25%, and the description adds no parameter-level meaning beyond the schema. The schema provides enums for type, account_role, and credit_card_type, but the description does not explain how these interact (e.g., which account_role values are valid for which type, or when credit_card_type is required). With 8 parameters and low coverage, the description should compensate but does not.

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 a clear verb and resource ('Create a new account'), which is minimally adequate. However, it does not distinguish this from sibling tools like create_transaction, create_budget, or create_rule, and the term 'account' is generic enough that an agent might not know what kind of account (financial account vs. user account) is being created.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, such as whether an account type is required, how account_role relates to type, or when to use update_account instead. An agent must infer usage entirely from the schema.

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

create_billC

Create a new bill.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
nameYes
amount_maxYes
amount_minYes
repeat_freqYes

TDQS

C2.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries full behavioral disclosure burden. 'Create a new bill' implies a mutation but says nothing about side effects, idempotency, return values, 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.

Conciseness2/5

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

The description is extremely short and front-loaded, but it is under-specified rather than concise. For a five-required-parameter mutation, a single generic sentence is not appropriately sized.

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

Completeness1/5

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

Given the tool has five required parameters, no schema description coverage, no annotations, and no output schema, a sentence saying only 'Create a new bill' is severely incomplete. An agent would have no information on valid values, relationships, or expected results.

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 the description adds no meaning for the five required parameters. Field names like amount_min, amount_max, date, and repeat_freq give hints, but the description supplies zero semantic value to disambiguate their formats 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 states a specific verb and resource ('Create a new bill'), matching a create-bill operation. It is distinct from sibling tools by resource name (bill vs rule, budget, recurring), though it adds no detail beyond the noun.

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?

There is no guidance on when to use this tool versus alternatives like create_recurring or create_rule, and no prerequisites or exclusions are mentioned. The only implied usage is that you'd use it to create a bill, which is not enough to route an agent confidently.

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

create_budgetC

Create a new budget.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

C2.1/5.0
Behavior1/5

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

No annotations are present, and the description does not disclose any behavioral traits beyond the act of creation. It fails to mention idempotency, duplicate name handling, required permissions, or any side effects, leaving the agent with no insight into the tool's behavior.

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 short, which is efficient, but it is under-specified rather than concise. It lacks essential details and could be expanded without adding bulk. The sentence is not front-loaded with useful information beyond the basic action.

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

Completeness1/5

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

Given the tool's simplicity (one parameter) and absence of annotations and output schema, the description is still critically incomplete. It omits any mention of the parameter, expected input, or return value, making it insufficient for an agent to call correctly without additional inference.

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 schema has 0% description coverage, and the description does not even mention the single required 'name' parameter. It provides no guidance on the format, constraints, or purpose of the parameter, relying entirely on the schema which is minimal.

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 a clear verb and resource, 'Create a new budget,' which distinguishes it from sibling tools like get_budget, update_budget, and delete_budget. It is unambiguous about the operation being performed, though it lacks any detail about what a budget entails.

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?

There is no guidance on when to use this tool versus alternatives such as update_budget or delete_budget. The context of creation is implied but no explicit conditions, prerequisites, or exclusion criteria are provided.

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

create_budget_limitC

Set a monetary limit for a budget period.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
endYes
startYes
amountYes
currency_codeNo

TDQS

C2.6/5.0
Behavior2/5

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

Annotations are absent, so the description carries the full burden of behavioral disclosure. It only states the action 'Set a monetary limit' without disclosing any side effects, such as whether an existing limit is overwritten, whether the limit is validated against the budget period, or whether permissions are required. This is insufficient for a mutation tool.

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

Conciseness4/5

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

The description is a single, concise sentence with no extraneous words. It is front-loaded with the action, which is efficient. However, its brevity contributes to the lack of detail, so it is concise but not necessarily complete.

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 no annotations, no output schema, and five parameters, the description is woefully incomplete. An agent cannot know what to pass for 'id', what format 'amount' should take, or what the response will be. The description only states the basic action and leaves all operational details undefined, making it inadequate 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?

Schema description coverage is 0% and the description adds no information about the five parameters. It does not explain what 'id' refers to (likely a budget ID), the format of 'amount' (currency units), the date formats for 'start' and 'end', or the purpose of 'currency_code'. The description fails to compensate for the lack of parameter documentation.

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 'Set a monetary limit for a budget period' clearly identifies the verb (set) and resource (monetary limit for a budget period), making the core purpose unambiguous. However, it does not differentiate from sibling tools like list_budget_limits or delete_budget_limit, which share the same budget-limit resource. A clearer distinction, e.g., 'Create a new budget limit,' would help an agent select it correctly.

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 that this creates a new limit, nor does it contrast with list_budget_limits or delete_budget_limit. Without any usage context or exclusions, an agent must infer the appropriate scenario from the name alone.

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

create_categoryC

Create a new category.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. For a creation tool, it does not mention what happens after creation (e.g., whether it persists immediately, if it can fail due to duplicate names, if it triggers any side effects). It does not disclose any side effects or system behavior beyond the creation itself. The description is too minimal to inform the agent of important behavioral aspects.

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 with a single sentence. It is front-loaded with the action and resource, which is efficient. However, it is so concise that it lacks necessary information for the agent to use it effectively. This is under-specification rather than conciseness, but since it is short and to the point, it earns a 4 for structure.

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 is a create operation with a single required parameter, and no output schema or annotations, the description is incomplete. It doesn't mention what the response will be (e.g., created object), any validation rules, or potential errors. The agent lacks sufficient context to call this tool correctly without external knowledge. It needs at least information about the parameter's semantics and expected behavior.

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?

The schema has 0% description coverage, meaning the 'name' parameter is completely undocumented in the schema. The description 'Create a new category.' does not add any meaning to the parameter; it doesn't explain what 'name' should be (e.g., unique, format, length). Since schema coverage is low, the description must compensate, but it fails to do so. The agent has no clue about the parameter's constraints or requirements beyond it being a string.

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 'Create a new category.' clearly states the action (create) and the resource (category). It distinguishes from siblings like list_categories which lists, and update/delete tools. However, it is a bit generic and could be more specific about what a category is in this context (e.g., transaction category vs. other type), but the resource is clear.

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 when to use it: when you need to create a new category. It doesn't explicitly state when not to use it or mention alternatives, but given the sibling set, it is evident that if you need to list or update categories, you'd use other tools. No explicit guidance on prerequisites or constraints, so it's implied rather than explicit.

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

create_currencyC

Store a new currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
nameYes
symbolYes
decimal_placesNo

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 the full burden of behavioral disclosure, but it only says 'store a new currency' and does not explain behavior on duplicate codes/names, whether the operation is idempotent, or what the response looks like. The absence of an output schema further limits the agent's understanding of the result.

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 front-loaded sentence with no filler or redundant detail. It is concise, though it is so terse that it contributes little beyond the tool name.

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 create operation with no annotations, no output schema, and 0% parameter coverage, this description is materially incomplete. It establishes the basic resource and action but misses field semantics, duplicate handling, and usage constraints needed 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?

Schema description coverage is 0%, and the description does not name or explain any of the four parameters (name, code, symbol, decimal_places). It does not compensate for the schema's missing descriptions, leaving an agent to guess formats, constraints, or defaults.

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

Purpose4/5

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

The description uses a clear verb ('Store') with a specific resource ('a new currency'), and the word 'new' helps distinguish it from sibling tools like get_currency, update_currency, and delete_currency. It is not as explicit as naming an alternative or describing scope, but an agent can infer the core operation.

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 given on when to use this tool versus related tools such as update_currency or list_currencies. There is no mention of prerequisites, uniqueness of currency codes, or conditions under which this tool should not be used.

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

create_object_groupC

Create a new object group.

ParametersJSON Schema
NameRequiredDescriptionDefault
orderNo
titleYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that a new object group is created, with no mention of side effects, validation, duplicate handling, or return behavior.

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 with no filler or repetition. It is concise, though it sacrifices useful detail.

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 mutation tool with no annotations and no output schema, the description is too thin to fully guide correct invocation. It omits what an object group is, what `order` means, and what the caller can expect in return.

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%, and the description adds no meaning to the `title` or `order` parameters. The schema shows types and requiredness, but `order` in particular is left semantically ambiguous.

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

Purpose4/5

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

The description uses a specific verb and resource ('Create a new object group'), clearly stating the tool's core action. It does not differentiate from siblings beyond the resource name, but the create/list pairing is structurally obvious.

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 about when to use this tool versus alternatives, and no mention of prerequisites or exclusions. An agent must infer usage purely from the tool name and generic CRUD patterns.

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

create_piggy_bankC

Create a new piggy bank.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
account_idYes
target_amountYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden of behavioral disclosure. It only states the action ('create') without mentioning side effects, required permissions, reversibility, or response format. This is insufficient for a mutation tool.

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, front-loaded sentence with no waste. However, it is overly terse and omits essential context that could be added without bloat, such as a brief note on parameter purpose.

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 three required parameters, no annotations, and no output schema, the description should explain what the tool does, what the parameters mean, and what the result is. It provides none of this, making it inadequate for an agent to call 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 0% description coverage, meaning the schema itself provides no documentation for the parameters. The description adds no meaning for 'name', 'target_amount', or 'account_id', failing to compensate for the complete lack of parameter guidance.

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 states a specific verb ('Create') and resource ('piggy bank'), which clearly distinguishes this from sibling tools like update_piggy_bank, delete_piggy_bank, and list_piggy_banks. No ambiguity about what the tool does.

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. While the action verb implies creation, the description does not mention any conditions, exclusions, or alternatives, leaving the agent to infer usage solely from the name.

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

create_recurringC

Create a new recurring transaction rule.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
typeYes
amountYes
repeat_freqYes
source_nameYes
destination_nameYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only indicates a create action and offers no information about side effects, permissions, reversibility, or what the response looks like.

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 clear sentence with no wasted words and the core purpose is front-loaded. It is concise but sacrifices necessary detail, which is penalized in other dimensions.

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 creation tool with six required parameters, no annotations, and no output schema, this description is inadequate. It provides only the basic purpose and leaves all behavioral, contextual, and parameter-level information unspecified.

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 explain any of the six required parameters. An agent cannot infer the meaning of source_name, destination_name, amount, or repeat_freq beyond their raw names and enum values.

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

Purpose4/5

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

The description uses a specific verb and resource: 'Create a new recurring transaction rule.' It clearly states the action and object. However, it does not distinguish this from the sibling create_rule, which could also be interpreted as creating a transaction rule.

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 create_rule, create_transaction, or other creation tools. There is no mention of prerequisites, exclusions, or alternatives.

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

create_ruleC

Store a new rule.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
triggerYes
rule_group_idYes

TDQS

C2/5.0
Behavior1/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action without any detail on side effects, validation requirements, or what constitutes a valid rule, which is a critical gap for a creation operation.

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

Conciseness3/5

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

The description is extremely concise with no wasted words, but the brevity comes at the cost of essential information. It is not verbose, yet it under-specifies to the point of being unhelpful, so a middling score is appropriate.

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

Completeness1/5

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

Given the tool has 3 required parameters, no output schema, and no annotations, the description is severely incomplete. It fails to explain what a rule is, what the trigger represents, or how rule_group_id relates to other resources, leaving the agent without enough context to call it reliably.

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 mention any parameters. The agent receives no explanation of what 'title', 'trigger', or 'rule_group_id' mean, making it impossible to correctly populate them without external knowledge.

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 'Store a new rule.' clearly indicates a creation operation for a rule resource, which distinguishes it from update/delete siblings. The verb 'store' is slightly generic but still conveys the intent, and the resource name is explicit.

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

Usage Guidelines1/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 any conditions, exclusions, or related tools, leaving the agent to infer usage from the name alone.

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

create_split_transactionB

Create a single transaction divided into multiple splits (e.g., one receipt with different categories).

ParametersJSON Schema
NameRequiredDescriptionDefault
splitsYes
group_titleNoOptional title for the transaction group.

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries full responsibility for behavioral disclosure. It states the tool creates a transaction but does not mention side effects, required permissions, whether splits must balance, or any other operational constraints. The description is minimal and does not add meaningful behavioral context beyond the action itself.

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

Conciseness4/5

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

The description is a single, concise sentence that front-loads the action and purpose. There is no redundancy or waste. It is appropriately sized for the tool's simplicity, though it could have added more detail 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?

Given the tool's complexity (nested splits array, multiple required fields, no output schema), the description is severely under-specified. It does not explain how splits are structured, whether there are balancing constraints, or what the response indicates. The description leaves critical gaps for correct 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 50% (only group_title has a description), and the description itself adds no detail about the splits array or its fields. It mentions 'multiple splits' but does not explain the structure, required fields, or how amounts and types interact. The description fails to compensate for the sparse schema descriptions, leaving the agent without adequate parameter semantics.

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), the resource (a single transaction), and the distinguishing feature (divided into multiple splits). The example 'one receipt with different categories' further clarifies the use case, and the name itself differentiates it from the sibling create_transaction. This is specific 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 Guidelines4/5

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

The description provides a clear usage context through the example of splitting a receipt into categories, implying when to use this tool. However, it does not explicitly state when NOT to use it or how it differs from create_transaction, though the name and description make the intent clear. The guidance is sufficient but not exhaustive.

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

create_tagC

Create a new tag.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states 'Create a new tag,' which implies mutation but does not disclose any consequences (e.g., duplicate handling, tagging limits, whether creation is reversible). No information is provided about permissions, side effects, or error behavior, which is a significant gap for a write operation.

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 zero wasted words. It is appropriately concise for a simple creation tool. No unnecessary details are included, and it is presented in a clear, direct manner. This is an optimal length.

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 is a simple create operation with one parameter and no output schema, the description is structurally adequate but incomplete in behavioral context. It lacks any guidance on prerequisites (e.g., do tags need to be pre-defined?), uniqueness constraints, or what the response contains. An agent might be able to call it, but would have to guess at important usage details. The complexity is low, but the lack of behavioral context leaves a gap.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. The description says 'a new tag' and the schema only has one parameter named 'tag' (a string). The description does not add any meaning beyond the schema, such as whether the tag should be a single word, allow spaces, or follow any format. However, with only one parameter, the schema is still fairly clear that 'tag' is the label for the new tag. The description adds minimal value, so a 3 is appropriate.

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 a specific action ('Create') and a specific resource ('tag'). It is concise and unambiguous. However, it does not differentiate from sibling creation tools (e.g., create_account, create_budget) beyond the resource type, which is obvious from the name. This earns a 4 rather than a 5.

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. It does not mention related tools like list_tags (to check existing tags) or any constraints on tag naming (e.g., unique, format). With many sibling tools, an agent might need to know if tags are globally unique or associated with specific entities, but no such context is provided.

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

create_transactionC

Create a simple withdrawal, deposit, or transfer.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoYYYY-MM-DD format. Defaults to today.
tagsNo
typeYes
amountYes
descriptionYes
source_nameYes
category_nameNo
destination_nameYes

TDQS

C2.1/5.0
Behavior1/5

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

With no annotations provided, the description must carry the full burden of behavioral disclosure. It only says 'create', which implies a mutation, but does not disclose any side effects, validation rules, or return behavior. No mention of what happens on success, whether the transaction is immediately posted, or if there are dependencies between fields. This is critically insufficient for a write operation.

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 overly terse—a single sentence that merely repeats the tool name and a few enum values. This is under-specification rather than proper conciseness; it lacks essential details an agent needs. While it is front-loaded, the content is too minimal to be considered appropriately sized.

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

Completeness1/5

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

Given the tool has 8 parameters (5 required), no output schema, and no annotations, the description is severely incomplete. It fails to explain how a 'simple' transaction differs from a split one, the meaning of source/destination names, the default behavior for date, or any constraints. An agent cannot reliably construct a valid call from this description alone.

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 8 parameters but only 13% schema description coverage (just 'date' has an inline description). The description adds no information about any parameters, including required ones like type, amount, description, source_name, and destination_name. It does not explain the meaning of these fields or their relationships, so agents have no textual guidance beyond the schema skeleton.

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 'Create' and resource 'transaction', and specifies the three allowed types (withdrawal, deposit, transfer). This differentiates it from sibling tools like create_split_transaction, which is evident from the name and description. However, it could be more explicit about what 'simple' means in contrast to a split transaction, but it's still specific enough.

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 given on when to use this tool versus alternatives like create_split_transaction or update_transaction. The word 'simple' implies a contrast but does not explicitly state the conditions for choosing this tool over others. No prerequisites or context about required fields are mentioned.

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

create_webhookD

Create a webhook.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
titleYes
triggerYes

TDQS

D1.8/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of disclosing behavioral traits. 'Create a webhook.' does signal a mutating side effect, but it does not mention permission requirements, validation rules, effects on existing webhooks, or possible failure/response behavior.

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 single sentence is short, but it is under-specification rather than genuine conciseness. It restates the tool name and contributes no additional information, so it does not earn its place in the definition.

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?

This is a CRUD-style creation tool with three required parameters, no output schema, and no annotations. A one-line restatement leaves the agent without enough context about parameter semantics, return values, or side effects, making reliable invocation impossible.

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 information about the three required parameters (title, url, trigger). The agent receives only bare type names with no meaning, format, or defaults beyond 'string', and the description does nothing to compensate.

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

Purpose2/5

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

The description 'Create a webhook.' names a verb and resource, but it merely restates the tool name and provides no differentiation from sibling webhook tools such as list_webhooks or delete_webhook. It fails to explain what a webhook is or how this creation action differs from related operations.

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 about when to use create_webhook versus alternatives. The description does not mention prerequisites, configuration steps, or how this compares with other webhook or rule-related tools, leaving the agent without routing cues.

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

delete_accountC

Permanently delete an account.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It discloses permanence, which is useful, but it does not mention whether deletion cascades to related data (e.g., transactions, budgets), requires confirmation, or is irreversible beyond the word 'permanently'. For a destructive operation, this is a significant gap.

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

Conciseness4/5

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

The description is a single, efficient sentence with no wasted words. It is appropriately sized for a simple tool, though it could earn a 5 by adding a brief usage note.

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 destructive tool with no annotations and no output schema, the description is too thin. It lacks information about cascading effects, required permissions, and what happens to associated data. An agent cannot fully assess the consequences of invoking this 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%, and the description adds no meaning to the 'id' parameter beyond what the schema shows. The agent only knows it is a string identifier; the description does not clarify what kind of ID (account ID, numeric vs. UUID) or how to obtain it.

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 a specific verb ('delete') and resource ('account'), and the word 'permanently' adds important scope. It is clear what the tool does, though it doesn't explicitly distinguish it from sibling delete tools beyond the resource name.

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 update_account or delete_transaction. The context implies it is for removing an account, but there is no mention of prerequisites, side effects, or when deletion is appropriate.

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

delete_attachmentC

Delete an attachment.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Delete an attachment' without mentioning permanence, irreversibility, permission requirements, or potential cascading effects. This is a significant gap for a destructive operation.

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

Conciseness3/5

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

The description is a single concise sentence with no waste, but it is under-specified for the burden it carries. It does not earn its place fully because it omits critical operational details, so while concise, it is not sufficiently informative.

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

Completeness2/5

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

Given the simple input schema (one string parameter) and no output schema, the description still fails to provide essential context: what the 'id' refers to, whether deletion is permanent, and any prerequisites. An agent calling this tool correctly would need additional implicit knowledge not present in the definition.

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 0% description coverage for the 'id' parameter, and the description does not mention or explain it. An agent cannot infer what 'id' refers to (e.g., attachment ID format, scope) from either source, leaving the parameter essentially undocumented.

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 'Delete' and the resource 'attachment', which distinguishes it from sibling tools like upload_attachment, get_attachment, and list_attachments. However, it does not add any scoping or effect details, so it's clear but minimal.

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?

There is no guidance on when to use this tool versus alternatives, nor any prerequisites or context such as needing to upload an attachment first. The description provides no exclusions or conditional use cases.

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

delete_billC

Delete a bill.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only restates the delete operation itself and never mentions irreversibility, cascading effects on related resources (e.g., transactions or attachments), permission requirements, or what happens when the delete fails.

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 sentence is maximally short and front-loaded with the action, which is structurally good. But conciseness here is achieved by omitting substance; almost all of the description's content is already present in the tool name itself.

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 destructive tool with no annotations and no output schema, a single bare phrase is inadequate. An agent needs at least a statement of side effects, reversibility, or preconditions, none of which is present.

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% for the single required 'id' parameter, and the description does not compensate. That 'id' refers to the bill to delete is inferable from context, but no information is given about ID format, whether it is stable or user-facing, or relationships to other resources.

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 a clear verb ('Delete') and resource ('a bill'), so an agent can tell this is the deletion counterpart to list_bills/create_bill. However, it essentially restates the tool name verbatim and adds nothing about scope or specifics beyond that.

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?

There is no guidance on when to use this tool versus alternatives, no preconditions (e.g., bill must exist first), and no indication of when deletion is not appropriate. The description gives zero context for selection among the many CRUD siblings.

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

delete_budgetC

Delete a budget.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only repeats the action 'delete' and offers no detail on irreversibility, permission requirements, or side effects such as whether associated budget limits are also removed.

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 short and free of filler, which is good. However, it is under-specified rather than efficiently complete, sacrificing needed behavioral and parameter context for 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?

For a simple delete tool this is minimally functional, but there is no output schema, no annotations, no id semantics, and no mention of cascading effects. An agent invoking this tool would be acting on incomplete information.

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 mention the 'id' parameter at all. The agent must guess what kind of identifier is expected and what it refers to, with no support from either the schema or the description.

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 with a specific verb ('Delete') and resource ('a budget'), so an agent can tell what the tool does. It does not differentiate from the many sibling delete_* tools, but the resource is explicit 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 is given about when to use this tool, what conditions must be met before deletion, or which alternatives might be more appropriate. The agent is left to infer that budgets can simply be deleted by id.

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

delete_budget_limitC

Delete a budget limit.

ParametersJSON Schema
NameRequiredDescriptionDefault
limit_idYes
budget_idYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are present, so the description carries full responsibility. 'Delete' implies a destructive action, but it does not disclose what happens if the limit does not exist, whether the deletion is idempotent, or if special permissions are required. The description is minimal and leaves the behavioral profile unspecified.

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 and front-loaded with the action, but it is under-specified rather than concisely informative. It is appropriately sized for a trivial tool, but the brevity results in no structural benefit beyond the core statement.

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 that this is a mutation tool with two required parameters and no annotations, output schema, or parameter documentation, an agent would struggle to call it correctly without additional context. The description omits return behavior, error cases, and any relationships between parameters.

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%, meaning the schema provides no parameter descriptions. Both budget_id and limit_id are required, but the description does not explain their relationship or format. Since coverage is low, the description should compensate but adds zero parameter semantics.

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 a specific verb (delete) and resource (budget limit), clearly indicating the operation. It differentiates from sibling tools like delete_budget and delete_account by naming the exact entity, though it does not explicitly contrast with any alternatives.

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 other delete tools or how to determine the correct budget_id and limit_id. The description does not mention any prerequisites, context, or alternative tools.

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

delete_currencyC

Delete a currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes

TDQS

C2.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. The single word 'Delete' entails a destructive operation, but the description does not disclose whether the action is irreversible, whether it will fail if the currency is in use, what error conditions are possible, or what side effects might occur. It adds no behavioral detail beyond what the tool name alone would imply.

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, a single sentence with no redundant words. It is front-loaded and to the point. However, it is under-specified—it states the action but lacks the semantic and contextual details that would make the sentence fully 'earn its place'. It is not verbose but it is also not informative enough to receive a higher score.

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 there are no annotations, no output schema, and a single required parameter, the description needs to provide essential context for a potentially destructive operation. It does not mention prerequisites (e.g., currency must exist before deletion), side effects, or authorization needs. An agent cannot safely determine what to expect or how to validate the call, so the description is incomplete for a real-world 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?

Schema description coverage is 0%, and the description does not explain the 'code' parameter at all. It does not specify that the code is likely a currency identifier (e.g., ISO 4217 format), nor does it tell the agent where to obtain a valid code or that the parameter is required. The description adds no meaning beyond the raw schema, leaving the agent to guess the format and source of the required input.

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 'Delete a currency' uses a specific verb ('delete') and resource ('currency'), which is enough to distinguish it from sibling tools like delete_account, delete_budget, and delete_webhook. While short, it unambiguously identifies the action and the resource type.

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

Usage Guidelines1/5

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

There is no guidance about when to use this tool vs alternatives. It does not mention that one must first fetch the currency with get_currency or list_currencies, whether deletion is permanent, or any constraints (e.g., cannot delete a currency with existing transactions). Sibling tools like create_currency and update_currency are not referenced. The description provides no context for when this tool is appropriate.

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

delete_piggy_bankC

Delete a piggy bank.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only restates the destructive action already implied by the name and gives no detail on irreversibility, cascading effects, 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?

The description is a single clear sentence with no unnecessary words and is appropriately front-loaded. It is concise, though arguably too thin to be considered maximally helpful.

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 destructive tool with no annotations, no output schema, and zero parameter coverage, one sentence is insufficient. The agent has no information about the operation's consequences, expected response, or how to supply a valid id.

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% and the sole parameter 'id' is undocumented. The description implies the id identifies the piggy bank to delete but does not explain the format, required existence, or how to discover valid ids.

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 a specific verb and resource: deletes a piggy bank. This makes it clearly distinct from update_piggy_bank and list_piggy_banks. It does not, however, add any scope or side-effect information that would elevate it to a 5.

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. It does not mention that list_piggy_banks should be used to obtain the id, nor does it warn against using delete when an update is intended.

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

delete_recurringC

Delete a recurring transaction rule.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.5/5.0
Behavior1/5

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

No annotations are provided, so the description must disclose behavioral traits. It only repeats the action of deleting, without noting consequences such as irreversibility, impact on associated transactions, or required permissions. The description adds no behavioral transparency beyond the obvious destructive implication of the verb.

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 redundancy, and the core action is front-loaded. It is efficiently sized, though it sacrifices informative content for brevity.

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 one required parameter and no output schema or annotations, the description is the only source of context. It fails to explain what the 'id' identifies, what happens after deletion, or any side effects. The description is incomplete for safe usage.

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%, so the description is responsible for explaining the 'id' parameter. It does not mention 'id' at all, leaving the agent to guess what the identifier refers to or any format requirements. The description provides zero value for understanding 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 states a clear verb ('Delete') and a specific resource ('a recurring transaction rule'), which unambiguously identifies the operation. It distinguishes from sibling delete_rule by specifying 'recurring' as the object, so the agent knows exactly which entity type is affected.

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 like delete_rule or update_recurring. The description does not mention any context, prerequisites, or exclusions, leaving the agent to infer usage solely from the name and schema.

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

delete_ruleD

Delete a rule.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

D1.7/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action and gives no information about irreversibility, required permissions, cascading effects, or success/failure behavior, offering essentially zero transparency beyond the tool name.

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 short and economical, but this brevity reflects under-specification rather than purposeful conciseness. It fails to earn its place by providing information that structured metadata does not already convey.

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?

This is a destructive operation with one parameter, no annotations, and no output schema, yet the description says nothing about expected effects, error handling, or response behavior. The definition is not complete enough for an agent to call the tool confidently and interpret the result.

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% and the description does not mention 'id' at all. An agent can infer from the tool name that 'id' refers to a rule identifier, but the description adds no explicit semantic, format, or usage detail.

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

Purpose2/5

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

The description 'Delete a rule.' states the action and resource, but it matches the tool name verbatim and adds no new semantic content. It distinguishes from siblings only implicitly through the verb 'delete', which is already present in the name, making it essentially a tautology.

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 delete_rule versus its siblings like get_rule, list_rules, create_rule, or update_rule. There is no mention of prerequisites, conditions under which deletion makes sense, or alternatives.

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

delete_transactionC

Permanently delete a transaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description must bear the full burden of behavioral disclosure. It only states 'permanently delete,' which implies irreversibility but offers no details about side effects, such as cascading deletion of related data (e.g., splits, attachments), permission requirements, or error behavior. This is a significant gap for a destructive operation.

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

Conciseness3/5

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

The description is concise and front-loaded with the key action, but it is too sparse. A single sentence with no structure or additional context leaves out essential details. While it earns credit for brevity, the lack of any structured guidance reduces its utility.

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 (one parameter, no output schema) some might argue a short description is enough, but this is a destructive action in a financial context. The description fails to mention consequences, such as whether the deletion is permanent and irreversible (though hinted) or what happens to associated records. Without annotations, this is incomplete.

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?

The schema provides zero description coverage, and the tool description does not explain the 'id' parameter. While it is reasonably inferable that 'id' refers to the transaction's unique identifier, the description does not explicitly state that, nor does it mention any format or constraints. The agent must rely on assumptions, which is risky for a deletion call.

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 (delete) and the resource (transaction), with the word 'permanently' adding a nuance of irreversibility. It distinguishes from other delete tools like delete_account or delete_budget by naming the specific resource. However, it does not elaborate on scope or criteria, but for a simple single-resource delete this is sufficient.

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, nor any preconditions or limitations. While there is no sibling that also deletes transactions, the description does not mention, for example, whether to avoid deleting transactions that are part of a split or linked to other records. The user is left to infer usage from the name alone.

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

delete_webhookC

Delete a webhook.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It states the action but does not mention whether deletion is permanent, requires confirmation, or has side effects (e.g., disabling webhook deliveries). This is a significant gap for a destructive operation.

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 and front-loaded, with no wasted words. However, it is under-specified rather than efficiently complete, so it earns a 4 rather than a 5.

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 destructive tool with no annotations, no output schema, and a single undocumented parameter, the description is inadequate. It does not explain the effect of deletion, the required identifier format, or any consequences, leaving critical gaps for an agent to call it correctly.

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%, and the description does not explain the 'id' parameter beyond its existence. The schema only indicates it is a required string, leaving the agent to guess what identifier is expected (e.g., webhook ID vs. URL). The description adds no semantic value.

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 'Delete a webhook' uses a specific verb and resource, clearly indicating the action. However, it does not distinguish this from sibling tools like delete_rule or delete_account, though the resource name is explicit 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 guidance is provided on when to use this tool versus alternatives. The description simply states the action without context, prerequisites, or exclusions, leaving the agent to infer usage from the name alone.

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

get_aboutB

Get system information from Firefly III.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates a read operation ('Get') but does not describe what is returned, any rate limits, authentication requirements, or other behavioral traits. The vague 'system information' leaves the outcome unclear.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It is appropriately concise for a tool with no parameters and minimal complexity.

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 low complexity (no parameters, no output schema), the description is minimally adequate but not complete. It lacks any hint of what system information is included (e.g., version, status, configuration) which would help the agent set expectations. The description is functional but leaves room for improvement.

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

Parameters4/5

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

The tool has zero parameters, so the description does not need to document any. Per the baseline for zero-parameter tools, a score of 4 is appropriate; the description correctly implies no inputs are needed.

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 a clear verb 'Get' and resource 'system information from Firefly III'. It distinguishes from sibling tools that target specific entities (get_rule, get_account, etc.) by indicating a system-wide scope, though it could be more explicit about what 'system information' entails.

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 given on when to use this tool versus alternatives. There is no mention of exclusions or conditions. An agent is left to infer that this is used when system-wide info is needed, but the description does not state this explicitly.

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

get_accountA

Get a single account by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does clearly indicate a read operation ('Get' a single account), which conveys a non-destructive act, and it disambiguates the return scope via 'single.' However, it does not mention possible failure modes (e.g., 404 for a missing ID), or describe the shape of the returned data, or any side-effects/state guarantees. Those are missing but the core behavioral signal is present.

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 consists of a single, front-loaded sentence that states the action, resource, and scope without redundancy or filler. Every word contributes to the agent's understanding, and the sentence is short enough to be parsed quickly in a long sibling list.

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 exactly one parameter and no suspense in schema or annotations, the description fully specifies the required operative context: known ID, get a single account, and returns an account. It does not mention error behavior or response fields, and since there is no output schema, an agent may still be unclear about the exact shape of the account object, but the core requirements are complete enough for a simple lookup.

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 schema provides only `id` as a required string with no description or constraints; the description compensates by explicitly linking the parameter to the account ID. It does not add extra semantic details like accepted ID formats, whether the ID is a UUID, or how to identify it (Path vs query), but the sole parameter is sufficiently mapped for a basic call.

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 uses a specific verb and resource: 'Get a single account by ID.' This clearly separates it from list_accounts (which returns many accounts) and from mutation tools like create/update/delete_account. The word 'single' provides an explicit scope that distinguishes this retrieval from list across the sibling set.

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 a strong use case: an agent that holds an account ID and needs exactly one account should call this tool, which is contrasted by list_accounts for fetching all accounts. There is no explicit 'use this when' statement, no exclusions, and no mention of situations in which get_rule/get_budget would be more appropriate. The guidance is inferred, not stated.

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

get_account_overview_chartC

Get balance trend charts.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
startYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure, but it only states 'Get balance trend charts.' It does not specify whether the result is chart data, an image, a URL, or how the start/end parameters affect the output. The read-only nature is implied by 'Get' but not explicitly confirmed.

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 with no wasted words, so it is concise and front-loaded. However, it is under-specified rather than appropriately sized; a bit more detail about the chart type or parameters would make it more useful without bloating it.

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?

The tool has two required parameters, no output schema, and no annotations, yet the description provides only a five-word summary. An agent cannot correctly invoke this tool because it lacks critical information about parameter formats, return structure, and scope (e.g., per-account vs. all accounts).

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 input schema provides only 'start' and 'end' as strings with no descriptions. The description does not mention or explain these parameters, so an agent cannot determine expected formats (e.g., date vs. timestamp) or semantics.

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 a specific verb ('Get') and resource ('balance trend charts'), making the primary purpose reasonably clear. However, it does not differentiate itself from sibling summary tools like get_net_worth_summary or get_spending_summary, so it lacks explicit sibling distinction.

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 about when to use this tool versus alternatives. The description does not mention prerequisites, intended use cases, or exclusions, leaving the agent to infer context from the name alone.

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

get_attachmentC

Get attachment metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. The word 'metadata' implies a read-only operation, but the description does not clarify whether the attachment content is included, what metadata fields are returned, whether any side effects occur, or whether authentication is required. This is a minimal hint rather than transparent behavior.

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 short sentence with no filler. It is front-loaded with the core action and resource, and every word contributes to the meaning. This is appropriate conciseness for such a simple tool.

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

Completeness3/5

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

The tool is simple (one required parameter, no output schema, no nested objects), so the description is adequate at a baseline level. However, without annotations or an output schema, the description should at least clarify that the id is an attachment id from list_attachments and what 'metadata' includes. These gaps leave an agent partially guessing.

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. The only parameter, 'id', is not explained; the description infers through the tool name that id refers to an attachment identifier, but it does not specify where the value comes from or any format/type details beyond what the schema states.

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

Purpose4/5

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

The description uses a specific verb ('Get') and a clear resource ('attachment metadata'), which distinguishes it from the sibling list/upload/delete attachment tools. It names what the tool returns (metadata rather than the file itself), though it does not explicitly contrast with siblings or mention that it operates on a single attachment by id.

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 given on when to use this tool versus list_attachments (to discover attachment ids), upload_attachment (to create), or delete_attachment. There is no mention of prerequisites such as obtaining an id from list_attachments or of when metadata retrieval is appropriate.

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

get_budgetC

Get a single budget by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.5/5.0
Behavior1/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Get', which implies a read operation, but does not disclose error behavior, return format, authentication requirements, or any side effects. This is essentially a restatement of the tool's name with minimal added value.

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, front-loaded sentence with no wasted words. It is appropriately sized for a simple tool, though the brevity leaves other dimensions lacking.

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 tool with a single parameter and no output schema or annotations, the description is not complete. It does not describe the return value, potential errors, or any special conditions. An agent cannot fully anticipate the tool's behavior beyond the basic operation.

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. It mentions 'by ID', which clarifies that the id parameter is the budget identifier, but it does not explain the expected format, constraints, or how it relates to other resources. The value added over the schema is minimal.

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 'Get' and the resource 'budget', and specifies 'by ID', which distinguishes it from list_budgets. It does not explicitly contrast with sibling tools, but the purpose is unambiguous and specific enough for an agent.

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?

There is no guidance on when to use this tool versus alternatives like get_rule or get_account. The description does not mention prerequisites, typical use cases, or when not to use it, leaving the agent to infer the context from the name and resource.

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

get_currencyA

Get a single currency by code.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes

TDQS

A3.5/5.0
Behavior3/5

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

The verb 'Get' indicates a non-mutating, read-only operation, which is a behavioral hint. However, with no annotations to fall back on, the description does not disclose what happens when a code is not found, whether authentication is required, or any other retrieval nuances.

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 short, front-loading sentence. It contains no fluff or redundancy and immediately communicates the tool's core action and purpose.

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

Completeness3/5

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

For a single-parameter, read-only tool with no output schema, the description covers the basic function. However, it omits what the agent should expect in terms of return value, error behavior, or related list operations that may be more appropriate, leaving a few relevant gaps.

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 phrase 'by code' adds basic meaning to the 'code' parameter, clarifying it is the lookup key. Yet, with 0% schema description coverage, the description does not explain the expected format (e.g., ISO 4217), provide examples, or clarify what valid codes look like, leaving the parameter only minimally defined.

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 'Get a single currency by code' clearly specifies the action (get), the resource (currency), and the scope (single by code). It implicitly distinguishes itself from sibling tools like list_currencies and create_currency, which operate on collections or multiple currencies.

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 about when to use this tool instead of alternatives such as list_currencies. The description gives no conditions, no when-not-to-use, and no mention of related tools, leaving the agent to infer usage from the name alone.

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

get_net_worth_summaryB

Get pre-calculated net worth summary over time.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYesYYYY-MM-DD
startYesYYYY-MM-DD

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the data is 'pre-calculated' (suggesting a read operation) but doesn't disclose whether this is a safe read, whether it requires specific permissions, what the response format is, or how the time range affects results. The term 'pre-calculated' adds some context but leaves significant behavioral gaps.

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 front-loads the core purpose ('Get pre-calculated net worth summary') and adds the time dimension. No wasted words, though it could have used the space to add usage or behavioral 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?

For a read-style summary tool with no annotations and no output schema, the description is thin. It doesn't explain what the summary contains (e.g., net worth per day, total assets minus liabilities), how to interpret the time range, or any limitations. An agent would need to infer the return structure and behavior from the name alone.

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

Parameters3/5

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

Schema description coverage is 100%, with both start and end parameters described as 'YYYY-MM-DD' format strings. The description adds the context that these define the time range for the summary, but doesn't add meaning beyond what the schema already provides. Baseline 3 is appropriate since the schema does the heavy lifting.

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 a specific verb ('Get') and resource ('pre-calculated net worth summary over time'), which clearly identifies the tool's function. It distinguishes itself from siblings like get_spending_summary and get_account_overview_chart by focusing on net worth over time, though it doesn't explicitly name those alternatives.

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

Usage Guidelines3/5

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

The description implies usage for retrieving net worth summaries over a time range, and the required start/end parameters make the context clear. However, it doesn't explicitly state when to prefer this over get_spending_summary or get_account_overview_chart, nor does it mention any exclusions or prerequisites.

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

get_preferenceC

Get a specific preference.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. 'Get' implies a read operation, but the description does not explain what happens when the preference does not exist, what data is returned, or whether any side effects occur.

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 concise and free of filler, with the action front-loaded. However, the brevity comes at the expense of useful context, so it reads more as under-specification than as efficient communication.

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 single-parameter tool, the description is minimal but still incomplete: there is no output schema, so the agent is not told what a successful response looks like, nor is there guidance on invalid or missing preference names. The description leaves too much to inference.

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?

The input schema has one undocumented 'name' parameter with 0% schema description coverage. The phrase 'a specific preference' weakly suggests that 'name' identifies the preference, but it does not explain valid values, format, case sensitivity, or how the parameter maps to preference lookup.

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 a clear action—getting a preference—and identifies the resource as a specific, named preference. It is distinguishable from list_preferences and update_preference by the word 'specific', though it does not explicitly call out those sibling 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?

The description provides no guidance on when to use this tool instead of list_preferences, update_preference, or get_rule. It does not mention any exclusions or alternatives, leaving the agent to infer usage from the name alone.

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

get_recurringA

Get a single recurring transaction by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only restates the get operation without adding information about read-only guarantees, return values, error handling, or what happens when the ID does not exist.

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

Conciseness5/5

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

The description is a single efficient sentence that front-loads the verb, resource, and input requirement. Every word contributes value and there is no filler or repetition.

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 one-parameter get-by-ID tool with no output schema, the description is nearly complete: it identifies the required input and implies the returned object. It omits response shape and not-found behavior, but these are minor gaps given the low complexity.

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 schema has one undocumented string parameter 'id' (0% coverage). The phrase 'by ID' adds minimal meaning by clarifying that the parameter is the identifier of the recurring transaction, but it does not provide format, example, or behavior details beyond the parameter name.

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 names a specific operation ('Get'), a precise resource ('recurring transaction'), and a clear scope ('single ... by ID'). This distinguishes it from sibling tools such as list_recurring and get_transaction.

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 'single ... by ID' phrasing implies the tool should be used when the agent already knows a specific recurring transaction ID, but there is no explicit direction about when to prefer it over list_recurring or when not to use it. Usage context is only implied, not stated.

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

get_ruleB

Get a single rule.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. 'Get a single rule' accurately conveys a read-only, single-resource operation, which is the core behavioral trait, but it does not disclose error behavior, authorization needs, or whether related data is expanded.

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 six words, front-loaded with the action verb, and contains no filler. For a single-parameter getter, this length is appropriate.

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 enough that a long description is unnecessary, but with no annotations, no output schema, and no reference to sibling retrieval tools, an agent is left without guidance on failure modes or how this differs from list_rules.

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 needed to clarify the 'id' parameter. It does not: 'id' is only inferable as the rule identifier from the tool name, with no format, source, or example provided.

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

Purpose4/5

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

The description uses a specific verb ('Get') and resource ('a single rule'), clearly identifying this as a retrieval operation. The singular 'rule' distinguishes it from list_rules, though it does not explicitly say the rule is fetched by its unique ID.

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 given about when to use this tool instead of list_rules or get_rule_group, and there is no mention of preconditions such as needing a known rule ID. The usage context is left entirely to inference.

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

get_rule_groupB

Get a single rule group.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the burden of conveying behavior. 'Get' reasonably implies a read-only fetch of one resource, but no details are provided about not-found errors, return shape, or side-effect guarantees. It is not misleading, only thin.

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, front-loaded sentence with no filler. It earns its place by stating the core purpose, though it is minimal rather than richly useful.

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 one-parameter getter, the description is roughly adequate, but there is no output schema and no guidance about alternative tools or failure behavior. Agents can probably call it correctly, but they are left to infer important context from the tool name and sibling list.

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 single parameter id is somewhat self-explanatory in context: it is the identifier of the rule group being retrieved. However, schema description coverage is 0%, and the description does not explicitly say 'the ID of the rule group to retrieve,' so it adds only minimal meaning beyond the schema.

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

Purpose4/5

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

The description states a clear action and resource: 'Get a single rule group.' The word 'single' helps distinguish it from list_rule_groups, though it does not explain what a rule group is or how it relates to get_rule.

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 singular phrasing implies this tool is for retrieving one known rule group, but no explicit guidance is given about when to prefer it over list_rule_groups, trigger_rule_group, or get_rule. The usage context is inferred rather than stated.

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

get_spending_summaryA

Get expense totals per category for a date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYesYYYY-MM-DD
startYesYYYY-MM-DD

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It clearly states the behavior (returning expense totals per category) and implies a read-only operation with no side effects. It does not mention potential exclusions (like pending transactions) or account scope, but for a summary getter, the description is adequately transparent.

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?

A single, front-loaded sentence with no filler. It states the action, target, and date range efficiently, earning every word.

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 summary with two parameters and no output schema, the description provides sufficient context. It implies the output structure (categories with totals) and the input constraints. More detail on whether it aggregates across all accounts or if there are filters would improve completeness, but it is adequate for calling the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100% — both start and end have format notes ('YYYY-MM-DD'). The description adds nothing beyond the schema, so it does not enhance parameter understanding. Baseline of 3 is appropriate when the schema already documents parameters.

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

Purpose5/5

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

The description is specific and unambiguous: 'Get expense totals per category for a date range.' It names the verb (get), the resource (expense totals per category), and the scope (date range), making it distinct from sibling tools like list_transactions or get_net_worth_summary.

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

Usage Guidelines3/5

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

The description implies usage for expense summaries by category but does not explicitly mention when to use it versus alternatives such as get_account_overview_chart or search_transactions. There is no direct callout to a sibling tool or condition, so an agent must infer the appropriate context.

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

get_transactionA

Get a single transaction by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It correctly signals a read-only retrieval and indicates the result is a single transaction, but it does not mention response shape, error behavior, or not-found handling. For a simple getter this is a baseline acceptable level.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word contributes to understanding the tool's purpose, making it optimally sized for a trivial getter.

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 low complexity with one required parameter and no output schema. The description covers the key input semantic but omits return and error behavior; while it works for a simple get-by-ID, it could have added a sentence about what is returned to be more complete.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It clarifies that the `id` parameter is the transaction identifier, which directly maps to the required schema property. However, it adds no detail on ID format or constraints beyond the schema's `string` type, leaving it at a passable level.

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 uses a specific verb ('Get'), names the resource ('transaction'), and scopes the operation to a single item 'by ID'. This clearly distinguishes it from sibling collection tools like list_transactions and search_transactions.

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 'by ID' qualifier gives clear context: use this tool when you have a specific transaction ID. It does not explicitly contrast with list_transactions or search_transactions, nor state exclusions, but the conditional is strong and easy to infer.

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

list_accountsC

List all accounts.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description bears the full burden of explaining behavior. It only states 'List all accounts' without disclosing that the optional 'type' parameter filters results, whether results are paginated, or any ordering or read-only guarantees. This is a minimal disclosure that omits relevant behavioral details.

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 and front-loaded, stating the core action in the first three words. However, the brevity comes at the cost of omitting the filtering parameter and any usage guidance, so it is efficient but slightly incomplete.

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 tool with one optional filtering parameter and no output schema, the description is not complete enough. An agent cannot tell whether this endpoint returns all accounts regardless of type or supports filtering, and no alternative or behavior is mentioned. The bare phrase leaves significant context to be inferred from the schema and sibling names.

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 introduces no meaning for the optional 'type' parameter. The tool name could easily lead an agent to ignore the filter entirely, and the description does not compensate for the schema's lack of explanatory text. With no parameter documentation in the description, the agent gains no semantic value beyond the raw enum.

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 a specific verb and resource: 'List all accounts.' It is unambiguous in its intent, but it does not differentiate itself from siblings like get_account or list_transactions, relying on the 'accounts' resource to imply its scope.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as get_account for a single account or list_transactions for filtering transactions. There are no stated use cases, exclusions, or distinguishing context, leaving an agent to infer appropriate usage from the name alone.

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

list_attachmentsB

List all files.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 the burden of conveying behavior. 'List' signals a read-only operation and 'all' implies no filtering, but it does not state whether the result is paginated, what the returned items contain, or whether authorization is required.

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 compact sentence with no filler, and the core action is front-loaded. It is efficient, though the same brevity could have been used productively to clarify attachment-specific behavior.

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 zero-parameter list tool, the description is minimally adequate, but with no annotations and no output schema it leaves gaps: it does not clarify what 'files' means, what is returned for each attachment, or whether the listing is paginated. The agent has to infer too much.

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 schema has zero properties and 100% coverage, so there are no parameters for the description to document. The baseline of 4 applies because the tool takes no 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 uses a specific verb ('List') and a resource ('files'), and 'all' conveys scope, so an agent can tell this is a broad read operation. It is less precise than it could be because 'files' rather than 'attachments' is used, and no sibling differentiation is provided.

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?

There is no guidance about when to use this tool instead of get_attachment, upload_attachment, or delete_attachment, and no prerequisites or exclusions are given. The only usage signal is the bare phrase 'List all files.'

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

list_billsB

List all bills.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the burden and does signal a read-only intent via the verb 'list.' However, it does not disclose whether the response is a simple array, whether pagination/ordering exists, or any other operational behavior, leaving a gap for an agent.

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 filler, starting directly with the verb and resource. Every word contributes, and it is appropriately sized for a zero-parameter 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?

For a zero-parameter list tool, the core call intent is clear, but the lack of an output schema and annotations means an agent still has no information about the shape or scope of the returned data beyond the word 'bills.' This is adequate but not fully complete.

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

Parameters4/5

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

The input schema has zero properties and 100% coverage, so there are no parameter semantics to document. The description correctly adds no parameter information; this matches the baseline for a parameterless tool.

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

Purpose4/5

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

The description uses a specific verb and resource ('List all bills'), so an agent knows the operation and the target. It does not explicitly differentiate from sibling tools like list_accounts or list_categories, though the distinct resource name makes confusion unlikely.

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 about when to use this tool versus alternatives or about any intended workflow. With no get_bill sibling, an agent must infer that list_bills is the read path, but the description itself gives no usage context.

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

list_budget_limitsB

List monetary limits for a budget.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It implies a read-only operation via the verb 'List,' but does not disclose response format, pagination behavior, error conditions, authentication requirements, or how the required id relates to the budget. This is minimal behavioral transparency.

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

Conciseness5/5

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

The description is a single, compact sentence with no wasted words. It front-loads the verb and resource, making the core purpose immediately clear.

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 list operation with one required parameter, the description is minimally viable: an agent knows it lists budget limits and that the id likely identifies a budget. But without annotations, an output schema, or detail on return values and pagination, it falls short of being genuinely complete.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. 'For a budget' implies the required 'id' parameter is a budget identifier, which adds meaning beyond the bare string field. However, this is indirect and does not explicitly confirm whether the id refers to a budget, a budget limit, or something else.

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 operation ('List') and the resource ('monetary limits for a budget'), which is specific and understandable. However, it does not explicitly differentiate itself from siblings like list_budgets or create_budget_limit, relying on naming and context rather than direct contrast.

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 such as list_budgets or the create/delete budget limit tools. There is no mention of prerequisites, exclusions, or scenarios where this tool is preferred, so an agent must infer usage from the tool name and generic phrasing.

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

list_budgetsA

List all budgets.

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?

There are no annotations, so the description carries the full behavioral burden. 'List all budgets' implies a read operation but offers no detail on pagination, ordering, response shape, error behavior, or permissions, giving the agent minimal insight into what the call will actually do.

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, four-word sentence that directly states the operation and scope. There is no filler, and the content is immediately readable with the key information front-loaded.

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 parameterless list operation, the description is minimally adequate, but it lacks any detail about the output format, pagination, or whether 'all budgets' includes archived or inactive budgets. Given no output schema or annotations, a bit more context would be needed for full completeness.

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

Parameters4/5

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

The tool has zero parameters and the schema description coverage is effectively complete. The description does not need to add parameter meaning; per the rubric, zero params receive a baseline score of 4.

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 states a clear verb ('List') and resource ('budgets') with an explicit scope ('all'), making its purpose unambiguous. It also inherently distinguishes itself from sibling tools like get_budget (single budget) and list_budget_limits (limits, not 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?

The description provides no guidance on when to choose this tool over alternatives. It does not mention get_budget for individual lookups or list_budget_limits for budget-specific sub-resources, leaving usage selection entirely to inference.

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

list_categoriesA

List all categories.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of disclosing behavior. 'List' implies a non-mutating read, but the description says nothing about pagination, ordering, response shape, or whether 'all categories' truly returns every category in one call. This is a meaningful gap.

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 three-word sentence with no filler. It front-loads the verb and resource directly and earns every word.

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 zero-parameter list operation, the description is nearly sufficient. However, with no annotations and no output schema, an agent receives no information about return values or pagination behavior. The simplicity of the tool limits the impact of those omissions, so it remains mostly complete.

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

Parameters4/5

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

The input schema has zero parameters and 100% schema coverage, so there are no parameter semantics to explain. Per the baseline for zero-parameter tools, a 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?

The description states a specific verb ('List') and a specific resource ('all categories'), making the tool's function unambiguous. It also differentiates from sibling tools like create_category because it is the only category-listing operation.

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 the tool should be used whenever an agent needs to retrieve all categories, but it provides no explicit guidance about when to prefer it over related tools or when it should not be used. Since the purpose itself is the main contextual signal, this is adequate 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_currenciesA

List all currencies.

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?

With no annotations provided, the description carries the full behavioral burden: 'List' implies a non-mutating, read-only operation and 'all' indicates unfiltered scope. It does not mention ordering, result shape, pagination, or permission requirements, but for such a benign read operation this thin disclosure is acceptable rather than misleading.

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 three-word sentence with zero redundant detail. It front-loads the verb and resource and every remaining word earns its place.

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

Completeness4/5

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

Given the tool has no parameters, no annotations, and no output schema, a single declarative sentence is nearly complete for a simple list call. The main absence is a description of what the returned currencies look like, but the tool's name and empty schema make its invocation requirements fully 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 tool has zero parameters and an empty input schema, so there are no parameter semantics to document. Schema description coverage is 100%, which meets the no-parameter baseline of 4; the description correctly keeps the input section silent.

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

Purpose4/5

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

The description uses a specific verb (list) and resource (currencies), clearly stating the tool's scope. It does not explicitly name sibling tools such as get_currency or create_currency, which keeps it below a 5, but the intent is unambiguous and distinguishable from 'get single currency'.

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 phrase 'List all currencies' implies this is the right tool when the agent needs the complete currency set, which is the implicit usage context. There is no explicit when-to-use/when-not-to-use guidance or mention of alternatives like get_currency for a single entity, but for a parameterless listing tool this implied guidance is minimally adequate.

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

list_object_groupsA

List all object groups (used for organizing accounts/piggy banks).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. 'List all' conveys a read-only, non-mutating operation and the 'all' scopes the result, but the description does not state pagination, ordering, authentication, or response shape. This is acceptable for a trivial no-parameter list but still leaves behavioral details to inference.

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?

A single sentence that front-loads the verb and resource, then adds a useful parenthetical. Every word contributes; there is no filler or repetition of schema content.

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?

Low complexity and no parameters make invocation trivial, but there is no output schema and no annotations. The agent is left to assume the response shape, pagination behavior, and access requirements, so the description is minimally viable rather than complete.

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

Parameters4/5

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

The tool has zero parameters and the schema already documents 100% of what little there is, so the baseline is 4. The description does not need to explain any parameter meaning because there are none.

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 opens with a specific verb and resource ('List all object groups') and adds a clarifying purpose: 'used for organizing accounts/piggy banks.' This clearly distinguishes it from sibling list tools like list_piggy_banks and list_accounts by pointing at the grouping construct itself.

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 parenthetical implies the intended context — retrieving the grouping containers rather than the accounts or piggy banks inside them — but the description never explicitly names alternatives or states when not to use this tool. No competing tool or exclusion is mentioned, so guidance remains implied rather than stated.

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

list_piggy_banksA

List all piggy banks.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations and no output schema, the description must carry behavioral context. 'List' communicates a read-only collection operation, but the description does not disclose response format, ordering, pagination, or any error/permission implications.

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

Conciseness5/5

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

A single, front-loaded sentence contains no filler or redundant information. It is as concise as a description can be while still expressing the core operation.

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 parameterless list tool with no output schema, 'List all piggy banks' conveys the essential behavior. It could be improved by noting the expected return value, but nothing an agent needs to invoke the call correctly is missing.

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

Parameters4/5

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

The tool takes zero parameters, and the schema already covers them completely by having an empty properties object. The description adds nothing parameter-related, so the zero-parameter baseline of 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?

States a specific operation (list) on a specific resource (piggy banks). The word 'all' defines the scope and distinguishes it from create/update/delete piggy-bank siblings.

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 the use case—retrieve the full collection of piggy banks—but gives no explicit guidance about when to prefer it over related tools or any exclusions. No preconditions are mentioned, which is acceptable for a parameterless list call.

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

list_preferencesB

List all user preferences.

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?

With no annotations, the description carries the full burden of behavioral disclosure, but it only restates the basic list operation and scope. It does not mention that this is a read-only operation, any authorization needs, or what the response contains.

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

Conciseness4/5

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

The description is a single concise sentence with no filler. It is appropriately sized for a simple no-parameter list tool, though it remains minimal.

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's low complexity and empty parameter schema, the description is minimally adequate. However, with no annotations and no output schema, a bit more context about return shape or relationship to get_preference would make it more complete.

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

Parameters4/5

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

The tool has zero parameters, so the schema fully covers parameter semantics and the description needs to add nothing. The baseline for a zero-parameter tool 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?

Description uses a specific verb and resource: 'List all user preferences.' It clearly indicates the operation and plural scope, which distinguishes it from singular get_preference, though it never names alternatives explicitly.

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 about when to use this tool versus get_preference, update_preference, or other list tools. The usage context is entirely left to the agent to infer.

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

list_recurringA

List all recurring transaction rules.

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?

With no annotations, the description carries the burden of behavioral disclosure. 'List all' implies a read-only, unfiltered operation, which is clear enough, but the description does not mention pagination, sorting, or return format. This is acceptable but not richly transparent.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word adds meaning and the entire definition is immediately scannable.

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 zero-parameter list tool, the description is essentially complete: it names exactly what is listed and signals the full scope with 'all.' Since there is no output schema, a note on return shape could add value, but it is not critical for a simple list operation.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. The description correctly indicates the scope of the operation and no parameter documentation is needed.

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

Purpose5/5

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

The description uses a specific verb ('List') and resource ('all recurring transaction rules'), making the tool's scope unambiguous. The word 'all' and the qualifier 'recurring' help distinguish it from sibling tools like get_recurring and list_rules.

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 explicit guidance on when to use this tool versus alternatives such as get_recurring or list_rules. There are no exclusions or conditions provided, so the agent must infer usage solely from the name.

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

list_rule_groupsB

List all rule groups.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only states the operation with no disclosure of return format, pagination, ordering, or read-only nature. For a list operation, the lack of behavioral context is a significant gap.

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

Conciseness4/5

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

The description is a single concise sentence that is front-loaded with the core action. It is appropriately sized for a parameterless list tool, though it lacks any supplementary structure or details.

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 list operation, the description is minimal but omits common context like pagination, sorting, or the fact that it is read-only. Given the absence of annotations and output schema, more detail would be expected to fully equip an agent to call it correctly.

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

Parameters4/5

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

The tool has zero parameters and the schema is empty with 100% coverage. Baseline for 0 params is 4, and there is nothing for the description to add about parameters. The description is not required to explain parameters that don't exist.

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 a clear verb and resource: 'List all rule groups.' It is unambiguous and distinguishes from sibling 'get_rule_group' which fetches a single group. However, it doesn't elaborate on what a rule group is, but that's beyond 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 on when to use this tool versus alternatives like 'list_rules' or 'get_rule_group'. It doesn't mention conditions, prerequisites, or exclusions, leaving the agent to infer the appropriate context.

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

list_rulesA

List all automation rules.

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?

With no annotations, the description must fully disclose behavioral traits. It states the operation is a list (read-like), but does not mention return format, pagination, or any side effects. Since it's a simple read operation and there's no output schema, the description could have added clarity about what the list contains, but it remains minimal.

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 fluff. The core action is front-loaded and every word earns its place. It is appropriately sized for a zero-parameter tool, being both concise and complete enough for its simplicity.

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 no output schema, the description covers the essential context: it lists all automation rules. It does not elaborate on the structure of the response, but given the simplicity and absence of output schema, this is acceptable. The tool's role among siblings is also clear enough for a basic call.

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

Parameters4/5

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

The tool has zero parameters, so the schema is trivially complete (100% coverage). Per the rubric, baseline for 0 params is 4. The description does not need to add parameter semantics because there are none; the descriptive phrase 'all automation rules' is sufficient and adds no conflict.

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 states a specific verb ('list') and resource ('automation rules'), making the tool's purpose immediately clear. It additionally distinguishes itself from siblings like get_rule (single rule) and list_rule_groups (groups) through the word 'all', implying a comprehensive listing.

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. Since siblings include list_rule_groups and get_rule, an agent might need explicit context on whether to use list_rules for all rules or list_rule_groups for grouped rules. The description offers no such direction, leaving usage to inference.

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

list_tagsA

List all tags.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It accurately states the read-only listing behavior but adds no depth about ordering, pagination, response shape, or edge cases. This is adequate for a simple list operation but does not go beyond the bare statement of function.

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 three words, perfectly front-loaded, and contains no filler. Every word earns its place, making it an exemplar of conciseness.

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 zero-parameter, side-effect-free list tool, the description is largely sufficient. An agent can invoke it correctly with no additional context. The absence of an output schema means the return structure is not described, but for a simple tag list this is a minor gap rather than a blocker.

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

Parameters4/5

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

The tool has zero parameters, so the input schema is trivially complete. Per the baseline for parameterless tools, the description need not add parameter semantics; there is nothing to document.

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 'List all tags' uses a specific verb ('list') and a distinct resource ('tags'), making the tool's action and scope immediately unambiguous. It differentiates from sibling tools like list_categories and list_transactions by naming its unique resource, so an agent can select it without confusion.

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

Usage Guidelines3/5

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

The description implies usage: call this tool when you need all tags. However, it provides no explicit guidance about when to prefer this over alternatives, or any exclusions/prerequisites. For a trivial zero-parameter list tool the context is fairly clear, but the guidance is only implied, not stated.

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

list_transactionsC

List recent transactions.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. The description only says 'List recent transactions' — it doesn't mention whether this is a read-only operation (likely, but not confirmed), the ordering (e.g., by date descending), or the default limit behavior. It doesn't disclose any side effects, authorization requirements, or rate limits.

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

Conciseness4/5

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

The description is a single short sentence, which is extremely concise and easy to read. It front-loads the core purpose, but it is arguably under-specified — being too terse may sacrifice needed detail, but for such a simple tool, it is appropriate.

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 optional parameterable, no output schema, and no annotations, the description is too sparse. It doesn't explain the response format, the time window for 'recent' (e.g., last 30 days), or how this relates to search_transactions. For a listing tool, an agent would benefit from knowing if results are paginated or if it supports filters beyond limit.

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 schema description coverage at 0%, the description provides no additional meaning for the 'limit' parameter — it doesn't clarify what the limit applies to or its effect on the response. However, having only one parameter with a default of 10, the description is partially sufficient; an agent can infer that limit controls the number of transactions returned, but it would be better to state that explicitly.

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 'List recent transactions' states the verb and resource, but it is too brief and somewhat vague — it doesn't specify the recent time window or any filters, and with several transaction-related siblings (list_transactions, get_transaction, create_transaction, search_transactions), it doesn't clarify how this differs from them. It is a clear but minimal statement.

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 like search_transactions or get_transaction. There are no exclusions or alternatives mentioned. An agent would have to infer that this is a simple listing function, but it doesn't explicitly state that search_transactions is for complex queries or that get_transaction is for a single record.

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

list_webhooksB

List webhooks.

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?

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It merely states 'List webhooks' without mentioning read-only nature, pagination, ordering, scope (e.g., all webhooks or filtered), or return format. This is a minimal behavioral disclosure, though the action itself implies a read operation.

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

Conciseness4/5

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

The description is a single concise phrase that does not waste words. It is appropriately short for a simple list operation, though it could have included a touch more context without becoming verbose. The clean structure earns a high score.

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's simplicity (no parameters, no annotations, no output schema), the description is minimally adequate but not fully complete. It fails to mention what the returned data looks like or any characteristics of the webhook list (e.g., ordering, structure). Since there is no output schema, the description should at least indicate the result type, making completeness slightly lacking.

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

Parameters4/5

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

The tool has zero parameters, so the schema provides complete coverage (100%). The description correctly avoids redundant parameter information. Baseline of 4 applies because there is nothing to document; no additional semantic value is needed.

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 a clear verb ('List') and resource ('webhooks'), making the purpose obvious. It distinguishes from create/delete webhook siblings by the action, but does not explicitly differentiate or add scope details. Adequately clear for a simple list operation.

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 context implies it is for retrieving webhooks, but there is no explicit mention of when to choose it over similar list tools or the create/delete operations. The description leaves usage entirely to inference.

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

search_transactionsC

Search for transactions.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

TDQS

C2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses nothing about how searching works (exact vs. fuzzy match), result ordering, pagination, or how the limit parameter is applied. Agents have no way to anticipate tool behavior beyond guessing from the name.

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?

Three words is under-specification rather than conciseness; there is no substance to structure or front-load. A terse description only earns a high score when it packs meaningful distinctions, which this one does not.

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 no annotations, no output schema, and 0% schema description coverage, the description is the only source of guidance and it is effectively empty. An agent cannot determine the query format, result shape, or how this tool differs from list_transactions, making correct invocation largely guesswork.

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%, so the description must compensate for the schema's silence about parameter meaning. It does not: there is no explanation of what format 'query' expects (free text, filters, IDs) or how 'limit' constrains results. The description adds zero value beyond the raw schema field names.

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?

"Search for transactions" names a clear verb and resource, but it is a near-verbatim restatement of the tool name and adds no scope or filtering semantics. It also fails to differentiate from the nearby sibling list_transactions, leaving the agent unable to tell which retrieval tool is appropriate.

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?

There is no guidance whatsoever about when to use this tool versus list_transactions, get_transaction, or other transaction tools. No context, prerequisites, or exclusions are provided, so the agent must guess at the intended use case.

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

trigger_exportC

Trigger a data export from Firefly III.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
typeNocsv
startYes

TDQS

C2.3/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits itself. 'Trigger a data export' hints at an action but does not say whether it is asynchronous, what side effects occur, or what the response means. The behavioral profile is essentially opaque.

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 text is compact, but it is under-specified rather than appropriately concise. A single sentence with no structure is not enough for a tool with required parameters and no annotations. It earns points for brevity only.

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 no annotations, no output schema, and 0% schema description coverage, the description carries the full burden of explaining the tool. It does not explain the meaning of start and end, the export format, or what happens after the call. The definition is inadequate for an agent to invoke the tool correctly with confidence.

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 mentions none of the three parameters. Start and end are bare strings with no explanation that they likely denote a date range, and the type enum is not explained either. The description adds no meaning beyond the schema.

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

Purpose4/5

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

The description names a specific verb (trigger) and resource (data export from Firefly III), so an agent can tell it initiates an export operation. No sibling tool provides export functionality, so no special differentiation is required. It is clear, though it does not specify what data is included.

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?

There is no guidance on when to call this tool versus any alternative or what prior steps are needed. The description is a bare one-liner and provides no context about prerequisites such as an export configuration. An agent gets no help deciding whether this is the right tool.

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

trigger_rule_groupC

Manually run rule group.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.1/5.0
Behavior1/5

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

With no annotations, the description carries the full burden of behavioral disclosure, and it fails. 'Manually run rule group' hints at a mutating action but gives no information about side effects, idempotency, prerequisites, or potential impacts on transactions and budgets.

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 a single short sentence, but this is under-specification rather than effective conciseness. It contains no additional context that would earn its place, and key details are missing.

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?

For a mutating trigger action with no annotations, no output schema, and no parameter documentation, this description is severely incomplete. An agent cannot determine what the tool does, what the response will be, or whether the operation is safe.

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 schema has a single required id parameter with zero description coverage alias, and the description does not even mention that the id refers to the rule group to be triggered. The agent must infer the parameter's meaning solely from the property 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?

The description states a clear verb ('run') and resource ('rule group'), which distinguishes it from read-only siblings like get_rule_group and list_rule_groups. However, 'run' is somewhat ambiguous—whether it executes all rules, triggers a one-off evaluation, or applies a workflow—so it is not fully precise.

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. It does not mention that this is a manual action typically triggered when automatic rule execution is disabled, nor does it differentiate from the sibling trigger_export or other rule actions.

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

update_accountD

Update an existing account.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
nameNo
activeNo

TDQS

D1.9/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only implies mutation via the verb 'update' but does not state side effects, reversibility, what happens to unspecified fields, authentication requirements, or response behavior. This is a significant gap for a mutation tool.

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 a single short sentence, which is concise, but it is under-specified rather than genuinely concise. It lacks structure or front-loaded detail; the sentence earns no informative weight beyond restating the tool's name.

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 a mutation tool with no annotations, no output schema, and 0% parameter coverage, the description is far from complete. It omits any explanation of update semantics, return values, error behavior, or field-specific expectations, making it inadequate 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?

Schema description coverage is 0%, so the description must compensate. It adds no meaning beyond the raw parameter names (id, name, active) already visible in the schema, providing no guidance on formats, optionality semantics, or relationships between fields.

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 a specific verb (update) and resource (account), and the word 'existing' distinguishes it from create/delete operations. It is clear but could be more specific about which fields are updatable; however, the input schema already enumerates them, so this is sufficient.

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

Usage Guidelines1/5

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

The description provides no guidance on when to use this tool versus alternatives like get_account, create_account, or delete_account. There is no mention of prerequisites, typical use cases, or conditions for selection, leaving the agent to infer everything.

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

update_budgetC

Update a budget.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
nameNo
activeNo

TDQS

C2.1/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only repeats the mutation concept and gives no information about partial updates, effects on related budget limits, validation, permissions, or response behavior.

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 short, but this is under-specification rather than effective conciseness. It contains no useful information beyond the tool name and provides no structure or detail.

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 three parameters, no annotations, no output schema, and 0% schema description coverage, the description is completely inadequate. An agent has no way to know how to invoke this tool correctly or what to expect.

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 parameter information beyond the raw schema. It does not explain what 'name' or 'active' mean, how the required 'id' is used, or what the update semantics are.

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 a specific verb ('Update') and resource ('budget'), which clearly identifies the operation. However, it does not distinguish itself from sibling tools like create_budget or delete_budget beyond the verb.

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?

There is no guidance on when to use this tool versus alternatives, no prerequisites (e.g., budget must exist), and no mention of when not to use it. The usage context is only weakly implied by the name and description.

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

update_currencyC

Update an existing currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
enabledNo

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'update,' implying mutation, but does not explain whether the update is partial, what happens to enabled state, or what the response is. This is a minimal but not misleading description.

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 with no filler or repetition. While it is under-specified, what is present is front-loaded and clear.

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 two-parameter mutation tool with no annotations and no output schema, this description is too sparse. It omits parameter roles, update semantics, and expected behavior, so an agent would have to rely on the schema and sibling names 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?

Schema description coverage is 0%, and the description does not mention code or enabled at all. It fails to clarify that code likely identifies the existing currency while enabled controls its status, leaving the agent to infer the role of every parameter from names alone.

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 a specific action (update) on a specific resource (existing currency), making the core purpose clear. It distinguishes the tool from create and delete operations, though it does not mention which currency fields can be changed.

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 given about when to use this tool versus get_currency, list_currencies, create_currency, or delete_currency. The description only says 'update an existing currency' and provides no context about prerequisites or appropriate scenarios.

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

update_piggy_bankC

Add/remove money from goal.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
amountYes

TDQS

C2.4/5.0
Behavior2/5

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

There are no annotations, so the description must carry the behavioral burden. It only implies mutation ('Add/remove money') but does not disclose side effects, permission requirements, whether the amount is absolute or delta, or any other behavioral detail. This is insufficient for a write operation.

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

Conciseness3/5

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

The description is short and to the point, but it is under-specified rather than concise. It is front-loaded enough, but the single phrase lacks structure or elaboration that would aid comprehension.

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 lack of output schema and annotations, this tool requires a more complete description. The description only says 'Add/remove money' with no detail on effects, response format, or error scenarios, making it inadequate 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?

With 0% schema description coverage, the description must explain the parameters 'id' and 'amount' but does not. It hints that 'amount' is money, but does not specify its format (e.g., sign convention, decimal handling) or what 'id' refers to. The description adds very little semantic value 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 a clear action ('Add/remove money from goal') but is vague about what a 'goal' is, and it does not differentiate from sibling tools like update_transaction or update_account. It is not a tautology, but it lacks precision and context.

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 gives no conditions, prerequisites, or examples of appropriate use cases, so an agent has to infer when this tool is relevant.

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

update_preferenceC

Update a specific preference.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes
nameYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states 'update' without revealing whether it creates missing preferences, requires authentication, or returns a response object. This is a significant gap for a mutation tool.

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, front-loaded sentence with no filler. It is efficient, though the brevity contributes to under-specification rather than being rewarded as highly informative.

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

Completeness2/5

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

Given the lack of annotations, output schema, and parameter descriptions, this tool is not complete enough for an agent to call correctly. The agent cannot determine what 'data' should contain, whether the operation is idempotent, or what happens if the preference does not exist.

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?

The schema has two string parameters with 0% description coverage, and the description does not compensate. 'name' and 'data' are left undefined—there is no clarification that name identifies the preference or what format/contents data should hold. The phrase 'specific preference' weakly implies name as a selector, but it is insufficient.

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

Purpose4/5

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

The description uses a clear verb ('Update') plus resource ('a specific preference'), indicating a single-preference mutation. It implies a targeted operation rather than listing or fetching, but it does not explicitly contrast with sibling tools like get_preference or list_preferences.

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, and no prerequisites are mentioned (e.g., whether the preference must already exist or whether it upserts). The intended usage is only weakly implied by the verb 'update'.

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

update_recurringC

Update an existing recurring transaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
nameNo
activeNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Update' implies mutation but does not explain partial-update behavior, whether provided fields replace existing values, required 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.

Conciseness3/5

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

The description is a single clear sentence with no filler, making it easy to parse. However, it is so minimal that it under-specifies the tool's behavior rather than being efficiently informative.

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

Completeness2/5

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

For a mutation tool with three parameters, no output schema, and no annotations, the description omits essential context: updatable fields, partial update semantics, and response behavior. An agent cannot fully understand the tool's contract from this description alone.

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 names no parameters. It does not explain that id identifies the target recurring transaction or that name and active are the updatable fields, forcing the agent to infer semantics only from property 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?

The description states the verb 'Update' and the resource 'existing recurring transaction,' clearly distinguishing it from create_recurring and delete_recurring. However, it does not specify which fields or aspects can be updated, leaving some scope 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?

There is no guidance about when to use this tool versus get_recurring, create_recurring, or delete_recurring. It also does not mention prerequisites such as the recurring transaction needing to exist before updating.

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

update_ruleC

Update a rule.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
titleNo

TDQS

C2.2/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden. It says 'update' but doesn't disclose what fields are mutable, whether the operation is idempotent, what happens if the rule doesn't exist, or any side effects. For a mutation tool, this is a meaningful gap.

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

Conciseness3/5

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

The description is only a single short sentence, so it's concise, but it borders on under-specification rather than efficient compression. It front-loads the basic purpose but provides no additional structured information, so it doesn't earn high marks for effectiveness.

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 a 2-parameter schema and no output schema, the tool is simple, so it doesn't need a lengthy description. However, the complete lack of parameter semantics, behavior details, and usage guidance leaves the agent without enough context to invoke it correctly. At minimum it should explain what the update does and how 'title' is used.

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 doesn't explain 'id' or 'title' at all. The schema only gives types and a 'required' flag, so the agent is left without any meaning for the parameters. The description fails to compensate for the complete lack of schema descriptions.

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 'Update a rule' has a clear verb and resource, so an agent knows it modifies an existing rule. However, it doesn't distinguish this from create_rule or delete_rule beyond the verb, and the title is null, so there's no additional clarity. It's basic and unambiguous but lacks any specificity about what updating entails.

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 given about when to use this tool versus alternatives like create_rule or delete_rule. The sibling list includes many rule-related tools, and the description doesn't mention prerequisites, typical use cases, or exclusions, so the agent has to infer usage from the name alone.

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

update_transactionB

Update an existing transaction. Supports updating description, category_name, and other fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
tagsNo
descriptionNo
category_nameNoCategory name to assign to the transaction.

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only states the operation and supported fields, without disclosing behavior such as whether it's a partial update, what happens if the transaction is not found, whether it returns the updated transaction, or any permission requirements. This is insufficient for a mutation tool.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose. It avoids unnecessary detail and reads clearly, making it easy to scan.

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 four parameters, no output schema, and no annotations, the description is too sparse. It doesn't explain the update semantics (partial vs full), error handling, or what a successful call returns. An agent would need to guess or rely on external knowledge, which is inadequate for correct 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 25% (only category_name has a description). The description mentions 'description, category_name, and other fields' but doesn't clarify tags or the 'other fields' beyond a vague reference. It adds minimal value beyond the schema and fails to compensate for the low coverage.

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 a clear verb ('Update') and resource ('an existing transaction'), and mentions specific fields it supports (description, category_name, and other fields). This differentiates it from create and delete operations, though it doesn't explicitly name sibling tools. The 'existing' wording clarifies it modifies an existing record.

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

Usage Guidelines3/5

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

The description implies usage when an existing transaction needs modification, but provides no explicit guidance on when to use this tool versus alternatives like create_transaction or delete_transaction. There's no mention of prerequisites or exclusions, leaving the agent to infer based on the tool name.

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

upload_attachmentB

Upload a file and attach it to a Firefly III object (e.g. a transaction). Requires two steps internally: creates the attachment record, then uploads the file content.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesBase64-encoded file content
filenameYes
attachable_idYesID of the object to attach to
attachable_typeYese.g. 'TransactionJournal'

TDQS

B3.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses a behavioral trait: 'Requires two steps internally: creates the attachment record, then uploads the file content.' This is useful but does not cover other behavioral aspects like idempotency, failure modes, or side effects (e.g., does it overwrite an existing attachment?). It adds some transparency but is not comprehensive.

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

Conciseness5/5

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

Two sentences, no fluff. The main action is front-loaded, and the internal two-step detail is relevant and concise. Every word earns its place, making this an efficient, well-structured description.

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 file-upload tool with 4 required parameters and no output schema or annotations, the description provides the two-step process but omits key contextual details: what the tool returns (e.g., the created attachment ID), any file size or format limits, and whether it is a pure create operation. These gaps mean an agent cannot fully anticipate the tool's behavior, though the description covers the core action.

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 75% (3 of 4 parameters have descriptions), which is not high enough to trigger the baseline 3. The description does not compensate: it adds little meaning beyond the schema—it mentions 'file content' and 'Firefly III object' but does not clarify the 'filename' parameter (which lacks a schema description) or any format constraints. The description does not enrich parameter understanding.

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 a clear verb+resource: 'Upload a file and attach it to a Firefly III object'. It also gives an example ('a transaction') and distinguishes itself from sibling attachment tools (list/get/delete) by focusing on the upload/attach action. However, it does not explicitly name alternatives or mention it is the create operation for attachments, so it stops short of a 5.

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?

There is no guidance on when to use this tool versus alternatives. The description does not mention when to prefer upload_attachment over other attachment tools (list_attachments, get_attachment, delete_attachment) or any prerequisites. The agent must infer usage solely from the tool name and sibling context.

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. 66 tool updatesv3.0.0
    • First observedcreate_account
    • First observedcreate_bill
    • First observedcreate_budget
    • First observedcreate_budget_limit
    • First observedcreate_category
    • First observedcreate_currency
    • First observedcreate_object_group
    • First observedcreate_piggy_bank
    • First observedcreate_recurring
    • First observedcreate_rule
    • First observedcreate_split_transaction
    • First observedcreate_tag
    • First observedcreate_transaction
    • First observedcreate_webhook
    • First observeddelete_account
    • First observeddelete_attachment
    • First observeddelete_bill
    • First observeddelete_budget
    • First observeddelete_budget_limit
    • First observeddelete_currency
    • First observeddelete_piggy_bank
    • First observeddelete_recurring
    • First observeddelete_rule
    • First observeddelete_transaction
    • First observeddelete_webhook
    • First observedget_about
    • First observedget_account
    • First observedget_account_overview_chart
    • First observedget_attachment
    • First observedget_budget
    • First observedget_currency
    • First observedget_net_worth_summary
    • First observedget_preference
    • First observedget_recurring
    • First observedget_rule
    • First observedget_rule_group
    • First observedget_spending_summary
    • First observedget_transaction
    • First observedlist_accounts
    • First observedlist_attachments
    • First observedlist_bills
    • First observedlist_budget_limits
    • First observedlist_budgets
    • First observedlist_categories
    • First observedlist_currencies
    • First observedlist_object_groups
    • First observedlist_piggy_banks
    • First observedlist_preferences
    • First observedlist_recurring
    • First observedlist_rule_groups
    • First observedlist_rules
    • First observedlist_tags
    • First observedlist_transactions
    • First observedlist_webhooks
    • First observedsearch_transactions
    • First observedtrigger_export
    • First observedtrigger_rule_group
    • First observedupdate_account
    • First observedupdate_budget
    • First observedupdate_currency
    • First observedupdate_piggy_bank
    • First observedupdate_preference
    • First observedupdate_recurring
    • First observedupdate_rule
    • First observedupdate_transaction
    • First observedupload_attachment

TDQS

C2.7/5.0

Scored across 66 tools

Disambiguation5/5

Every tool maps to a distinct resource and action, and similar-sounding tools like get_account vs get_account_overview_chart are clearly separated by descriptions. Even create_transaction and create_split_transaction are differentiated as simple vs split creation.

Naming Consistency5/5

Tool names consistently follow a lowercase snake_case verb_noun pattern such as list_accounts, get_account, create_account, update_account, and delete_account. Minor exceptions like get_about and create_split_transaction do not undermine the overall predictable convention.

Tool Count2/5

With 66 tools, the surface is far too large for an AI-facing server; even though Firefly III has a broad API, this feels like an uncurated endpoint dump rather than a focused bridge. The volume creates significant context overhead and tool-selection burden for agents.

Completeness2/5

Core resources like accounts, transactions, budgets, rules, and recurring transactions have full CRUD coverage, but many secondary resources are notably incomplete: categories only have list/create, bills lack get/update, rule groups have no create/update/delete, and webhooks/object groups are partial. These gaps will cause frequent agent dead ends.

Maintenance

ActivityInactive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI tools to interact with Firefly III personal finance management instances through a cloud-deployed MCP server. Supports financial operations like account management, transactions, budgeting, and reporting with configurable tool presets.
    10 npm
    -
  • 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 interaction with Firefly III personal finance management instances via the Firefly III API, deployed as a Cloudflare Worker. It allows AI tools to manage transactions, accounts, budgets, and reporting through natural language.
    10 npm
    ISC
  • A
    license
    A
    quality
    D
    maintenance
    Integrates with Firefly III personal finance software to enable natural language management of transactions, accounts, budgets, and categories. Supports recording expenses, checking balances, and organizing financial data through conversational AI.
    23
    10 npm
    MIT