Skip to main content
Glama
juansebashr

Money Lover MCP Server

by juansebashr

Money Lover MCP Server

Node.js implementation of a Model Context Protocol (MCP) server that wraps the unofficial Money Lover REST API. The server exposes 27 MCP tools covering authentication, wallets, categories, transactions, events, debts, and static configuration — enabling AI assistants or MCP-compatible clients to query and manage personal finance data.

Features

  • Auto-authentication via EMAIL/PASSWORD environment variables — no token passing required for most tools.

  • 23 read tools covering user info, wallets, categories, transactions, events, debts, icons, providers, and static config.

  • 4 write tools: create, update, and delete transactions, wallets, and categories.

  • Large responses truncated automatically to keep LLM context manageable (configurable via limit parameter).

  • Stdio-based server compatible with Claude Code, Claude Desktop, Cursor, and any MCP host.

  • Token caching per email under ~/.moneylover-mcp/ with automatic refresh on auth errors.

Related MCP server: YNAB Assistant

Prerequisites

  • Node.js 22 or newer.

  • Money Lover account credentials.

Installation

npm install

Usage

Launch the MCP server over stdio:

npm start

Project-scoped Configuration (Claude Code)

Add .mcp.json at the project root:

{
  "mcpServers": {
    "mcp-moneylover": {
      "command": "node",
      "args": ["/absolute/path/to/moneylover-mcp/src/server.js"],
      "env": {
        "EMAIL": "your@email.com",
        "PASSWORD": "your-password"
      }
    }
  }
}

And enable it in .claude/settings.json:

{ "enabledMcpjsonServers": ["mcp-moneylover"] }

Global Configuration (Claude Desktop / Cursor)

{
  "mcpServers": {
    "mcp-moneylover": {
      "command": "npx",
      "args": ["@ferdhika31/moneylover-mcp@latest"],
      "env": {
        "EMAIL": "your@email.com",
        "PASSWORD": "your-password"
      }
    }
  }
}

Available Tools

Auth

Tool

Description

Arguments

login

Retrieve a JWT token.

email, password

User

Tool

Description

Arguments

get_user_info

Profile associated with the session.

get_user_account

Devices and active sessions.

get_user_profile

Extended profile data.

Wallets

Tool

Description

Arguments

get_wallets

List all wallets.

get_wallet_balance

Balance summary for a wallet.

walletId

get_shared_wallets

Wallets shared with other users.

get_awaiting_shared_wallets

Pending share invitations.

add_wallet

Create a new wallet.

name, currencyId; optional icon

edit_wallet

Update wallet name, icon, or currency.

walletId, currencyId (required by API); optional name, icon

delete_wallet

Delete a wallet permanently.

walletId

Categories

Tool

Description

Arguments

get_categories

Categories for a specific wallet.

walletId

get_all_categories

All categories across every wallet.

optional limit (default 50)

add_category

Create a category in a wallet.

walletId, name, icon (use get_icons to get valid names, e.g. icon_3), type (1=income, 2=expense)

edit_category

Rename a category or change its icon.

categoryId, icon (required by API even when only renaming); optional name

delete_category

Delete a category.

categoryId

Transactions

Tool

Description

Arguments

get_transactions

Transactions in a date range.

walletId, startDate, endDate (YYYY-MM-DD)

add_transaction

Create a transaction. Category IDs from get_categories are resolved to global IDs automatically.

walletId, categoryId, amount, date; optional note, with

edit_transaction

Update a transaction. The API requires the full payload on every edit — fetch the transaction first if you need current values. categoryId is resolved to global automatically.

transactionId, walletId, categoryId, amount, date; optional note, with

delete_transaction

Delete a transaction.

transactionId

search_transactions

Free-form search with optional filters.

optional filters, limit (default 20)

get_debt_transactions

Transactions flagged as debts/loans.

get_related_transactions

Related transactions by ID list.

ids (array)

get_related_transactions_by_category

Related transactions for a category.

categoryId

get_related_transactions_by_wallet

Related transactions for a wallet.

walletId

get_transaction_search_config

Available search filter options.

optional limit (default 20)

Static & Config

Tool

Description

Arguments

get_events

Saving goals/events for a wallet.

walletId; optional limit (default 50)

get_debts

Open debts in a wallet.

walletId

get_icons

Icon pack metadata.

optional pack (default "default")

get_linked_providers

Supported bank providers.

get_currencies

Currency catalogue.

optional limit (default 100)

get_exchange_rates

USD-based exchange rate snapshot.

get_other_config

Miscellaneous runtime configuration.

Tool Usage Examples

Prompt examples, required vs optional fields, gotchas, and common multi-step patterns for every tool: docs/examples.md.

Library Usage

import { MoneyloverClient } from './src/moneyloverClient.js';

const token = await MoneyloverClient.getToken(email, password);
const client = new MoneyloverClient(token);

const wallets = await client.getWallets();
const txns = await client.getTransactions(walletId, '2026-01-01', '2026-04-30');
await client.addTransaction({ walletId, categoryId, amount: '50000', date: '2026-04-18' });
await client.editTransaction('txn-id', { amount: '60000', note: 'updated' });
await client.deleteTransaction('txn-id');

Testing

Unit Tests

Mocked unit tests — no live API calls required:

npm test

Integration Tests (mcp-tester)

mcp-tester is a ReAct-agent-based MCP testing framework. It starts the server, drives an LLM to call tools in response to natural-language prompts, and asserts the correct tools were called with correct arguments.

Install

pipx install --index-url https://pypi.artifacts.furycloud.io/simple/ mcp-tester

Configure

tests/mcp-tester/mcps.json — point at the local server with your credentials:

{
  "mcp-moneylover": {
    "command": "node",
    "args": ["/absolute/path/to/src/server.js"],
    "transport": "stdio",
    "env": {
      "EMAIL": "your@email.com",
      "PASSWORD": "your-password"
    }
  }
}

Run

mcp-tester run-tests \
  --mcps tests/mcp-tester/mcps.json \
  --model gpt-4o-mini \
  --concurrent-runs 3 \
  tests/mcp-tester/read-tools.yaml

Results

tests/mcp-tester/read-tools.yaml contains 25 integration tests covering every read tool:

total 25, success 25, failures 0

Key decisions that make the tests stable:

  • No token parameter on read tools — exposing an optional token field caused LLMs to inject wallet IDs into it. The server authenticates automatically via env vars.

  • Response truncation — several endpoints return hundreds of thousands of records from the shared MoneyLover database. Tools accept a limit parameter (default: 20–100) to keep LLM context under control.

  • Dict wrapping — all tool responses return a JSON object (never a bare array) so MCP framework validation passes.

Write-Tool Tests (mcp-tester)

Three additional YAML files test the full CRUD lifecycle for wallets, categories, and transactions across three sequential phases. Each phase runs all three resource types concurrently.

File

Phase

Tests

write-create.yaml

Create

add_wallet, add_category, add_transaction

write-edit.yaml

Edit

edit_wallet, edit_category, edit_transaction

write-delete.yaml

Delete

delete_wallet, delete_category, delete_transaction

Run phases in order — each depends on the previous:

# Phase 1: Create
mcp-tester run-tests --mcps tests/mcp-tester/mcps.json --model gpt-4o-mini --concurrent-runs 3 tests/mcp-tester/write-create.yaml

# Phase 2: Edit (after Phase 1 passes)
mcp-tester run-tests --mcps tests/mcp-tester/mcps.json --model gpt-4o-mini --concurrent-runs 3 tests/mcp-tester/write-edit.yaml

# Phase 3: Delete (after Phase 2 passes)
mcp-tester run-tests --mcps tests/mcp-tester/mcps.json --model gpt-4o-mini --concurrent-runs 3 tests/mcp-tester/write-delete.yaml

Results across all three phases:

Phase 1 (Create): total 3, success 3, failures 0
Phase 2 (Edit):   total 3, success 3, failures 0
Phase 3 (Delete): total 3, success 3, failures 0

Key design decisions for write-tool tests:

  • Discovery before mutation — Edit and delete tests instruct the agent to first call a read tool (get_wallets, get_categories, get_transactions) to locate the target by name, then call the mutation tool. This mirrors real-world agent behaviour where IDs are not known in advance.

  • args: !any for write tool assertions — The framework requires exact arg matching. Write tools accept optional fields (icon, with, etc.) that the agent may include at its discretion; !any verifies the tool was called and succeeded without failing on harmless extras. Read-tool assertions can use exact arg matching because their schemas have no optional fields the LLM would add spontaneously.

  • Predictable identifiers — Test resources use fixed names (MCP-Test-Wallet, MCP-Test-Category) and a fixed note (MCP test transaction) so the agent can locate them by name during the edit and delete phases without needing to share state between test runs.

  • Full-payload edit assertionsedit_transaction is a full-replace operation; the test prompt instructs the agent to fetch the existing transaction first (get_transactions) and carry forward all current field values, only changing the note. This validates the multi-step reasoning the tool description requires.

Security Notes

  • Never commit real credentials or tokens.

  • Cached tokens live in ~/.moneylover-mcp/ restricted to the current user.

  • Delete that directory to revoke all cached sessions.

Available Tools

33 tools
add_categoryAdd CategoryC

Create a new transaction category in a wallet.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletIdYesWallet to create the category in
nameYesCategory name
iconYesIcon identifier (see get_icons)
typeYes1 = expense, 2 = income

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 full burden but only states it 'creates' without disclosing behavioral traits like permissions needed, whether it's idempotent, error handling, or rate limits. It mentions the resource but lacks details on what happens upon creation (e.g., returns an ID, affects wallet state), making it 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, clear sentence with no wasted words, effectively front-loading the core action and resource. It is appropriately sized for the tool's complexity, making it easy to parse quickly.

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 incomplete. It lacks details on behavioral aspects (e.g., what the tool returns, error conditions) and usage context, which are critical for an agent to invoke it correctly. The schema covers parameters well, but overall guidance is inadequate.

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%, so the schema already documents all parameters (walletId, name, icon, type) with descriptions. The description adds no additional meaning beyond implying creation, which is redundant with the schema. Baseline 3 is appropriate as the schema handles parameter documentation adequately.

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 ('Create') and resource ('new transaction category in a wallet'), making the purpose evident. However, it does not explicitly differentiate from siblings like 'edit_category' or 'get_categories', which would require mentioning uniqueness such as 'new' creation versus modification or retrieval.

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 'edit_category' or 'delete_category'. The description implies usage for creation but lacks context on prerequisites, exclusions, or comparisons to sibling tools, leaving the agent without clear selection criteria.

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

add_transactionAdd TransactionC

Create a new transaction in a wallet.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletIdYesWallet identifier
categoryIdYesCategory identifier
amountYesTransaction amount as string
noteNoOptional transaction note
dateYesDisplay date in YYYY-MM-DD format
withNoOptional array of related parties

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states it 'creates' without disclosing behavioral traits. It doesn't mention permissions needed, whether it's idempotent, error handling, or what happens on success (e.g., returns transaction ID). This leaves significant gaps 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 with zero wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly without unnecessary elaboration.

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 6 parameters, no annotations, and no output schema, the description is incomplete. It lacks behavioral context, usage guidance, and details on what the tool returns or how errors are handled, leaving the agent under-informed for proper invocation.

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%, so parameters are documented in the schema. The description adds no additional meaning beyond implying 'transaction' creation, which aligns with the schema but doesn't clarify parameter interactions or business rules (e.g., amount format).

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 ('Create') and resource ('new transaction in a wallet'), making the purpose evident. However, it doesn't differentiate from sibling tools like 'edit_transaction' or specify what constitutes a 'transaction' (e.g., expense, income).

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 'edit_transaction' or 'delete_transaction'. The description lacks context about prerequisites (e.g., needing an existing wallet/category) or typical use cases, offering minimal usage direction.

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

add_walletAdd WalletC

Create a new Money Lover wallet.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesWallet display name
currencyIdYesCurrency identifier (see get_currencies)
iconNoIcon name (defaults to icon_7)

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 full burden for behavioral disclosure. It mentions creation but doesn't specify whether this requires authentication, what happens on success/failure, if there are rate limits, or how it interacts with existing wallets. This leaves significant gaps 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 directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to understand at a glance.

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 insufficient. It doesn't explain what the tool returns, error conditions, authentication requirements, or how it fits into the broader wallet management context, leaving the agent with incomplete operational understanding.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all parameters. The description adds no additional parameter information beyond what's in the schema, but since the schema is comprehensive, a baseline score of 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 the action ('Create') and resource ('Money Lover wallet'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'edit_wallet' or 'delete_wallet', which would require mentioning this is for new wallet creation only.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'edit_wallet' or 'get_wallets', nor does it mention prerequisites such as authentication or context about wallet management. It simply states what the tool does without usage context.

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

delete_categoryDelete CategoryC

Permanently delete a category.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryIdYesCategory identifier to delete

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 full burden for behavioral disclosure. 'Permanently delete' implies a destructive, irreversible operation, which is critical context. However, it lacks details on permissions, side effects (e.g., impact on related transactions), error conditions, or confirmation requirements, which are important for a destructive 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, front-loaded sentence with zero wasted words. It efficiently conveys the core action and permanence, making it easy for an agent to parse quickly.

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 insufficient. It doesn't explain what happens to dependent data (e.g., transactions in that category), return values, error cases, or auth requirements, leaving significant gaps for safe tool invocation.

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 the single parameter 'categoryId' well-documented in the schema. The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline for high schema coverage without compensating value.

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 ('permanently delete') and resource ('a category'), making the tool's purpose unambiguous. It doesn't explicitly differentiate from sibling tools like 'delete_transaction' or 'delete_wallet', but the resource specificity is inherent in the tool 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 is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites, consequences, or relationships with sibling tools like 'edit_category' or 'get_categories', leaving the agent to infer usage context.

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

delete_transactionDelete TransactionC

Permanently delete a transaction by its identifier.

ParametersJSON Schema
NameRequiredDescriptionDefault
transactionIdYesTransaction identifier to delete

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 full burden of behavioral disclosure. It states the action is 'permanently delete' which conveys destructiveness, but doesn't address important behavioral aspects like: what happens to related data, whether deletion can be undone, permission requirements, error conditions, or what the response looks like (confirmation vs. void).

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 with zero waste. It's front-loaded with the core action and resource, making it immediately understandable. Every word earns its place in conveying the essential information.

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

Completeness2/5

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

For a destructive operation with no annotations and no output schema, the description is inadequate. It doesn't explain what 'permanently' entails in practice, what confirmation or response to expect, error scenarios, or system implications. The combination of destructive nature and lack of structured metadata requires more comprehensive description.

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%, so the schema already fully documents the single parameter. The description adds minimal value beyond the schema by mentioning 'by its identifier' which echoes the schema's 'Transaction identifier to delete'. Baseline 3 is appropriate when 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 clearly states the action ('permanently delete') and target resource ('a transaction by its identifier'), providing specific verb+resource combination. However, it doesn't explicitly differentiate from sibling delete tools like delete_category or delete_wallet, which follow similar patterns.

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. There's no mention of prerequisites (e.g., transaction must exist), when-not-to-use scenarios, or comparison with similar tools like edit_transaction for modifying instead of deleting.

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

delete_walletDelete WalletC

Permanently delete a wallet and all its data.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletIdYesWallet identifier to delete

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. It mentions 'permanently delete,' which implies a destructive, irreversible action, but fails to detail consequences like data loss, authorization requirements, or error handling. This is insufficient for a mutation tool with zero annotation coverage.

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 directly states the tool's action and scope without unnecessary words. It is front-loaded with the core purpose, making it easy to parse quickly.

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 inadequate. It doesn't explain what 'all its data' entails, whether deletion affects related entities (e.g., transactions), or what the response looks like. This leaves significant gaps in understanding the tool's full impact.

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

Parameters3/5

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

The input schema has 100% description coverage, with 'walletId' documented as 'Wallet identifier to delete.' The description adds no additional parameter details beyond this, such as format examples or constraints. This meets the baseline for high schema coverage but doesn't enhance 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 clearly states the action ('permanently delete') and the resource ('a wallet and all its data'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'delete_category' or 'delete_transaction' beyond the resource type, which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, such as 'edit_wallet' for modifications or 'get_wallets' for viewing. It also lacks prerequisites, warnings about irreversible effects, or context about related operations, leaving usage decisions unclear.

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

edit_categoryEdit CategoryC

Rename a category or update its icon.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryIdYesCategory identifier
iconYesIcon identifier (required by API even when only renaming — use get_icons for valid names, e.g. icon_3)
nameNoNew category name

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. It implies a mutation operation ('rename' and 'update') but lacks details on permissions, side effects (e.g., whether changes affect related transactions), or error handling. This is insufficient for a mutation tool with zero annotation coverage.

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 functionality without any wasted words. It directly states what the tool does, making it easy to parse and understand quickly.

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 mutation nature, lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like what happens on success/failure or how it interacts with siblings, leaving significant gaps for an agent to operate effectively.

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%, so the schema already documents all three parameters. The description adds no additional meaning beyond what's in the schema, such as explaining parameter interactions or constraints. This meets the baseline for high schema 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 clearly states the tool's purpose with specific verbs ('rename' and 'update') and resource ('category'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'edit_transaction' or 'edit_wallet' beyond the resource name, which is why it doesn't reach a perfect score.

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 doesn't mention prerequisites (e.g., needing an existing category), exclusions (e.g., what can't be edited), or comparisons to siblings like 'delete_category' or 'get_categories', leaving the agent without contextual usage cues.

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

edit_transactionEdit TransactionA

Update an existing transaction. The API requires the full transaction payload on every edit, so you must supply walletId, categoryId, amount, and date (fetch the transaction with get_transactions first if you need the current values). categoryId should be the global category ID from get_all_categories or from an existing transaction response.

ParametersJSON Schema
NameRequiredDescriptionDefault
transactionIdYesTransaction identifier
walletIdYesWallet identifier (required by API)
categoryIdYesCategory identifier — use global ID from get_all_categories or an existing transaction
amountYesTransaction amount as string
dateYesDate in YYYY-MM-DD format
noteNoTransaction note
withNoRelated parties

TDQS

A3.6/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. It discloses key behavioral traits: the API requires 'full transaction payload on every edit' (important constraint), mentions fetching current values first (workflow guidance), and specifies ID sources. However, it doesn't cover permission requirements, error conditions, or what happens to omitted optional fields like 'note' or 'with' during updates.

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 appropriately sized (two sentences) and front-loaded with the core purpose. Every sentence adds value: the first states the action and key requirement, the second provides important implementation guidance. No wasted words, though it could be slightly more structured with bullet points for the requirements.

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 mutation tool with 7 parameters (5 required), no annotations, and no output schema, the description is adequate but has gaps. It covers the core update operation and critical API constraints, but doesn't explain return values, error handling, or what constitutes a successful edit. Given the complexity and lack of structured metadata, it should provide more complete behavioral context.

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%, providing a solid baseline. The description adds some semantic context beyond the schema: it explains why walletId, categoryId, amount, and date are required ('API requires the full transaction payload'), clarifies categoryId should be 'global category ID from get_all_categories or from an existing transaction response', and mentions fetching current values first. However, it doesn't explain parameter interactions or provide examples.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Update an existing transaction' with specific mention of required fields (walletId, categoryId, amount, date). It distinguishes from siblings like 'add_transaction' by focusing on editing existing records, though it doesn't explicitly contrast with 'edit_category' or 'edit_wallet' beyond 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 Guidelines4/5

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

The description provides clear usage guidance: 'fetch the transaction with get_transactions first if you need the current values' and mentions using 'get_all_categories' for category IDs. It implicitly suggests when to use this tool (for updates) versus 'add_transaction' (for creation), but doesn't explicitly state when NOT to use it or compare with all alternatives like 'delete_transaction'.

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

edit_walletEdit WalletC

Update a wallet name, icon, or currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletIdYesWallet identifier
currencyIdYesCurrency identifier (required by API — use get_currencies for valid IDs, e.g. 30 for COP)
nameNoNew display name
iconNoNew icon name

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. 'Update' implies a mutation operation, but the description doesn't specify permissions required, whether changes are reversible, error handling (e.g., invalid IDs), or response format. It mentions currencyId requires valid IDs from 'get_currencies', but this is in the schema, not the description. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding 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, efficient sentence that front-loads the core action and attributes. There is no wasted wording, and it directly communicates the tool's purpose without unnecessary elaboration. It earns its place by being clear and to the point.

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 incomplete. It doesn't address behavioral aspects like permissions, side effects, or response format, which are critical for safe usage. The schema covers parameters well, but overall context for an update operation is lacking, making it inadequate for informed tool selection.

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%, so the schema already documents all parameters (walletId, currencyId, name, icon) with descriptions. The description adds minimal value by listing the updatable fields (name, icon, currency), but doesn't provide additional semantics beyond what's in the schema. Baseline 3 is appropriate when 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 clearly states the action ('Update') and the resource ('a wallet'), specifying the editable attributes (name, icon, currency). It distinguishes from siblings like 'add_wallet' or 'delete_wallet' by focusing on modification rather than creation or removal. However, it doesn't explicitly differentiate from 'edit_transaction' or 'edit_category' beyond 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 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 doesn't mention prerequisites (e.g., needing a valid walletId), when not to use it (e.g., for creating or deleting wallets), or refer to sibling tools like 'get_wallets' for obtaining wallet IDs. Usage is implied by the action but lacks explicit context.

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

get_all_categoriesGet All CategoriesA

List ALL categories across ALL wallets with no wallet filter. Use this instead of get_categories when no specific wallet is provided.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum categories to return (default 50)

TDQS

A4.2/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 full burden. It mentions the scope ('across ALL wallets') and filtering behavior ('no wallet filter'), which adds useful context. However, it lacks details on permissions, rate limits, or response format, leaving gaps for a tool with no annotation coverage.

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 two sentences with zero waste, front-loaded with the core purpose and followed by usage guidance. Every word contributes to clarity and decision-making, making it efficiently structured.

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

Completeness4/5

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

Given the tool's low complexity (1 optional parameter, no output schema, no annotations), the description covers purpose and usage well. It lacks output details, but for a simple list tool, this is a minor gap, making it nearly complete for the context.

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%, so the schema fully documents the 'limit' parameter. The description adds no parameter-specific information beyond what the schema provides, meeting the baseline for high schema coverage without compensating with extra details.

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

Purpose5/5

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

The description clearly states the verb ('List') and resource ('ALL categories across ALL wallets'), specifying scope ('with no wallet filter'). It explicitly distinguishes from sibling 'get_categories' by indicating when to use this tool instead, making the purpose specific and differentiated.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('when no specific wallet is provided') and names the alternative ('get_categories'), clearly defining the context and exclusion criteria for usage versus siblings.

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

get_awaiting_shared_walletsGet Awaiting Shared WalletsB

List wallet share invitations pending acceptance.

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 provided, the description carries the full burden of behavioral disclosure. It states the tool lists pending invitations but doesn't cover aspects like whether this is a read-only operation, if it requires authentication, rate limits, or what the output format looks like. This leaves significant gaps in understanding 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.

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It's front-loaded and appropriately sized for its function, earning a perfect score for conciseness.

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

Completeness2/5

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

Given the tool's complexity (a read operation with no parameters) and the lack of annotations and output schema, the description is incomplete. It doesn't explain what the return values are, how the list is formatted, or any behavioral traits, leaving the agent with insufficient context for effective use.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so the baseline is 4. The description doesn't need to add parameter information, and it doesn't contradict the schema, making this score appropriate 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 clearly states the action ('List') and resource ('wallet share invitations pending acceptance'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'get_shared_wallets' or 'get_wallets', which could have overlapping functionality, so it doesn't reach the highest score.

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 doesn't mention sibling tools like 'get_shared_wallets' or 'get_wallets', nor does it specify contexts or exclusions for its use, leaving the agent without clear usage instructions.

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

get_categoriesGet CategoriesB

Retrieve categories for a specific wallet.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletIdYesWallet identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
categoriesYes

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 full burden but only states it 'retrieves' categories. It lacks behavioral details like whether this is a read-only operation, if it requires authentication, rate limits, error conditions, or what happens if the wallet doesn't exist. For a tool with no annotations, this is insufficient disclosure.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it easy to parse quickly.

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

Completeness3/5

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

Given the tool has an output schema (which handles return values), 100% schema coverage for the single parameter, and no annotations, the description is minimally adequate. However, for a retrieval tool in a context with many siblings, it should better differentiate usage and provide more behavioral context to be fully 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 100%, so the schema already documents the 'walletId' parameter. The description adds no additional parameter semantics beyond implying it's for a specific wallet, which the schema's description ('Wallet identifier') already covers. Baseline 3 is appropriate when 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 clearly states the verb ('Retrieve') and resource ('categories'), specifying it's for a specific wallet. However, it doesn't distinguish from sibling 'get_all_categories', which likely retrieves categories without wallet filtering, leaving some ambiguity about when to use each.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'get_all_categories' or other category-related tools. It mentions 'for a specific wallet' but doesn't clarify prerequisites, exclusions, or comparative contexts with siblings.

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

get_currenciesGet CurrenciesA

List all currencies supported by Money Lover (names, symbols, codes). Use this for currency metadata, not exchange rates.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax currencies to return (default 100)

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It implies a read-only operation ('List') but doesn't explicitly state safety, permissions, or response format. It mentions the data structure (names, symbols, codes) which helps, but lacks details on pagination, rate limits, or authentication requirements.

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 with zero waste - the first states purpose and scope, the second provides crucial usage guidance. Every word earns its place, and the most important information (what it does) comes first.

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 read operation with 1 parameter and no output schema, the description provides good context about what data is returned and when to use it. However, without annotations or output schema, it could benefit from more detail about response format or any constraints.

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 a single 'limit' parameter fully documented in the schema. The description doesn't add any parameter-specific information beyond what the schema provides, so it meets the baseline for high schema coverage.

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

Purpose5/5

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

The description clearly states the verb 'List' and resource 'currencies supported by Money Lover', specifying the exact data returned (names, symbols, codes). It distinguishes from sibling 'get_exchange_rates' by explicitly stating this is for 'currency metadata, not exchange rates'.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('for currency metadata') and when not to use it ('not exchange rates'), with a clear alternative named in the sibling list (get_exchange_rates). This gives perfect context for tool selection.

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

get_debtsGet DebtsB

List open debts or loans tracked in a specific wallet.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletIdYesWallet identifier

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 implies a read-only operation ('List'), but doesn't specify permissions, rate limits, pagination, or what 'open debts or loans' entails (e.g., status filters, date ranges). For a tool with zero annotation coverage, this leaves significant gaps in understanding its 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, efficient sentence that front-loads the core purpose ('List open debts or loans') and adds necessary scope ('tracked in a specific wallet'). There is no wasted verbiage, making it highly concise and well-structured.

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 (1 parameter, 100% schema coverage, no output schema), the description is adequate but incomplete. It lacks behavioral details (e.g., response format, error handling) and usage guidelines compared to siblings, which are needed for full contextual understanding despite the simple schema.

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

Parameters3/5

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

The schema description coverage is 100%, with the single parameter 'walletId' documented as 'Wallet identifier'. The description adds no additional meaning beyond this, such as format examples or constraints. Since the schema does the heavy lifting, the baseline score of 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 the action ('List') and resource ('open debts or loans'), and specifies scope ('tracked in a specific wallet'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_debt_transactions' or 'get_transactions', which might also retrieve debt-related data, so it doesn't reach the highest score.

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 minimal context by mentioning 'in a specific wallet', but offers no explicit guidance on when to use this tool versus alternatives like 'get_debt_transactions' or 'get_transactions'. There are no usage exclusions, prerequisites, or comparisons to sibling tools, leaving the agent with little direction.

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

get_debt_transactionsGet Debt TransactionsB

List transactions flagged as debts or loans across the account.

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?

No annotations are provided, so the description carries the full burden. It mentions 'List transactions flagged as debts or loans', which implies a read-only operation, but doesn't disclose behavioral traits such as authentication needs, rate limits, or what 'flagged' entails (e.g., criteria or source). This leaves gaps for an AI agent to understand how it behaves beyond the basic action.

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 directly states the tool's purpose without any wasted words. It is front-loaded and appropriately sized for a simple tool, earning full marks for conciseness.

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 complexity (0 parameters, no output schema, no annotations), the description is minimally adequate. It explains what the tool does but lacks details on return values (since no output schema), behavioral context, or usage guidelines. For a read operation with no parameters, it meets the basic requirement but could be more complete by addressing sibling differentiation or output expectations.

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 0 parameters, and the schema description coverage is 100% (though empty). The description adds no parameter information, which is acceptable since there are no parameters to document. A baseline of 4 is appropriate as it doesn't need to compensate for any missing schema details.

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

Purpose4/5

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

The description clearly states the verb ('List') and resource ('transactions flagged as debts or loans'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_debts' or 'get_transactions', which might have overlapping functionality, so it doesn't reach the highest score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'get_debts' or 'get_transactions', nor does it mention any prerequisites or exclusions. It only states what it does, without context for selection among siblings.

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

get_eventsGet EventsC

List Money Lover events (savings goals, campaigns) associated with a wallet.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletIdYesWallet identifier
limitNoMaximum number of events to return (default 50)

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 full burden. It mentions listing events but lacks details on permissions, rate limits, pagination, or return format. For a read operation with no annotations, this 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.

Conciseness5/5

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

The description is a single, efficient sentence that front-loads key information (list events) with clarifying examples. Every word earns its place, with no redundancy or unnecessary elaboration.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'events' entail, their structure, or handling of limits, which is inadequate for a tool with two parameters and behavioral uncertainty.

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%, so the schema fully documents parameters. The description adds no additional meaning beyond implying walletId filters events, which is already clear from the schema. Baseline 3 is appropriate as 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 clearly states the verb ('List') and resource ('Money Lover events') with specific examples ('savings goals, campaigns') and scope ('associated with a wallet'). It distinguishes from siblings like get_transactions or get_wallets by focusing on events, though it doesn't explicitly contrast with them.

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 it implies usage for wallet-related events, it doesn't specify prerequisites, exclusions, or compare with similar tools like get_related_transactions_by_wallet, leaving the agent to infer context.

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

get_exchange_ratesGet Exchange RatesB

Fetch the USD-based exchange rate snapshot used by Money Lover.

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?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'snapshot,' implying a read-only operation, but does not specify if it requires authentication, has rate limits, or details the return format. For a tool with zero annotation coverage, this is insufficient to inform the agent adequately.

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 directly states the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it easy for an agent to parse quickly.

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

Completeness3/5

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

Given the tool has no parameters, no annotations, and no output schema, the description is minimally adequate by stating what it does. However, it lacks details on behavioral traits like authentication needs or return format, which are important for a read operation in a financial context. It meets the basic requirement but leaves gaps in 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 input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description does not add parameter details, which is appropriate, but it could have mentioned any implicit assumptions (e.g., no inputs required). Baseline is 4 for zero parameters, as the schema fully covers the lack of inputs.

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 ('Fetch') and the resource ('USD-based exchange rate snapshot used by Money Lover'), which is specific and unambiguous. However, it does not explicitly differentiate from sibling tools like 'get_currencies' or 'get_user_account', which could provide related financial data, so it misses the top score.

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. With sibling tools like 'get_currencies' that might offer currency-related data, there is no indication of context, prerequisites, or exclusions, leaving the agent to infer usage based on the tool name alone.

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

get_iconsGet IconsC

Fetch the icon pack used by Money Lover categories, wallets, and events.

ParametersJSON Schema
NameRequiredDescriptionDefault
packNoIcon pack identifier (defaults to "default")

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 states the tool fetches an icon pack but doesn't describe the return format (e.g., list of icons, metadata), potential side effects, authentication requirements, or error handling. For a read operation with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.

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 ('Fetch the icon pack') and specifies the context ('used by Money Lover categories, wallets, and events'). There is no wasted verbiage, and every word contributes to understanding the tool's scope.

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 and output schema, the description is incomplete for a tool that fetches data. It doesn't explain what the output contains (e.g., icon URLs, names, categories), how results are structured, or any limitations (e.g., pagination). For a read operation with no structured output documentation, the description should provide more context about the return value.

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

Parameters3/5

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

The input schema has 100% description coverage, with the single parameter 'pack' documented as 'Icon pack identifier (defaults to "default")'. The description adds no additional parameter semantics beyond this, as it doesn't explain what icon packs are available or how they relate to categories/wallets/events. Given the high schema coverage, a baseline score of 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 the action ('Fetch') and the resource ('icon pack used by Money Lover categories, wallets, and events'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools, but since no other tools mention icons, this is sufficiently clear. The description avoids tautology by specifying what is fetched rather than just restating the 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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., authentication), context for fetching icons, or relationships to other tools like get_categories or get_wallets that might use these icons. Without such guidance, an agent must infer usage from the tool name alone.

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

get_linked_providersGet Linked ProvidersA

List financial institution providers supported for linked accounts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states it's a list operation, implying read-only behavior, but doesn't disclose any behavioral traits like rate limits, authentication needs, or response format. For a tool with zero annotation coverage, this is a significant gap in 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, efficient sentence that front-loads the key information ('List financial institution providers') without any wasted words. It's appropriately sized for a simple list tool with no parameters.

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

Completeness3/5

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

Given the tool's simplicity (0 parameters, no output schema), the description is adequate but incomplete. It lacks behavioral context (e.g., what the output looks like, any limitations) and usage guidelines, which are needed for a tool with no annotations to be fully helpful to an AI agent.

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

Parameters4/5

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

The tool has 0 parameters with 100% schema description coverage, so no parameter information is needed. The description doesn't add param details beyond the schema, but since there are no parameters, a baseline of 4 is appropriate as it doesn't need to compensate for any gaps.

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

Purpose5/5

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

The description clearly states the specific action ('List') and resource ('financial institution providers supported for linked accounts'), distinguishing it from siblings like get_wallets or get_categories. It precisely communicates what the tool does without being vague or tautological.

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 description implies it's for listing providers for linked accounts, it doesn't specify prerequisites, timing, or how it differs from other get_* tools in the sibling list, leaving usage context unclear.

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

get_other_configGet Other ConfigB

Retrieve the small static configuration blob served under /other/config.

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 carries full burden. It mentions 'retrieve' implying a read operation, but doesn't disclose behavioral traits such as authentication needs, rate limits, error conditions, or what the 'small static configuration blob' contains. This is inadequate for a tool with zero annotation coverage.

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 key action ('retrieve') and resource. It wastes no words and is appropriately sized for a simple tool, making it easy for an agent to parse quickly.

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 and output schema, the description is incomplete. It doesn't explain what the configuration blob contains, its format, or potential errors, which are critical for an agent to use the tool effectively. This is a significant gap for a retrieval tool.

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

Parameters4/5

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

The tool has 0 parameters, and schema description coverage is 100%, so no parameter information is needed. The description appropriately doesn't discuss parameters, earning a high baseline score for not adding unnecessary details.

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 'retrieve' and the resource 'small static configuration blob served under /other/config', making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like get_transaction_search_config or get_user_profile that also retrieve configuration data, keeping it from a perfect score.

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. With siblings like get_transaction_search_config and get_user_profile that might retrieve other configs, the description lacks context on use cases, prerequisites, or exclusions, leaving the agent without direction.

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

get_shared_walletsGet Shared WalletsA

List wallets the authenticated user shares with others.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.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 mentions authentication requirement and the scope of listing shared wallets, but lacks details on behavioral traits such as return format, pagination, error handling, or rate limits. This is a significant gap for a tool with no annotation coverage.

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 directly states the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it highly concise and well-structured.

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 (0 parameters, no output schema, no annotations), the description is adequate but incomplete. It covers the basic purpose but lacks behavioral details like return format or error handling, which are important for a tool with no structured data to compensate.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description does not add parameter information, which is appropriate here, but it could have clarified that no inputs are required. Baseline is 4 for 0 parameters.

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

Purpose5/5

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

The description clearly states the action ('List') and resource ('wallets the authenticated user shares with others'), making the purpose specific and unambiguous. It distinguishes this tool from sibling tools like 'get_wallets' by specifying the 'shared with others' scope.

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 context by specifying 'authenticated user' and 'shares with others', but does not explicitly state when to use this tool versus alternatives like 'get_wallets' or 'get_awaiting_shared_wallets'. No exclusions or prerequisites are mentioned.

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

get_transactionsGet TransactionsC

Fetch transactions for a wallet between two dates.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletIdYesWallet identifier
startDateYesStart date in YYYY-MM-DD format
endDateYesEnd date in YYYY-MM-DD format

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 full burden for behavioral disclosure. It states the tool fetches transactions but doesn't mention whether this is a read-only operation, what permissions are required, how results are returned (e.g., pagination, format), or any rate limits. This is inadequate for a tool that likely accesses sensitive financial data.

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

Conciseness5/5

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

The description is a single, efficient sentence that states the core functionality without unnecessary words. It's front-loaded with the essential information, making it easy for an agent to parse quickly.

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 no annotations and no output schema, the description is insufficient. It doesn't explain what the tool returns (e.g., transaction list format, error handling) or behavioral aspects like authentication needs. Given the complexity of financial data and lack of structured fields, more context is needed for effective use.

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 clear documentation of all three parameters (walletId, startDate, endDate). The description adds no additional parameter semantics beyond what's in the schema, so it meets the baseline score of 3 for adequate coverage without adding value.

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 ('fetch') and resource ('transactions for a wallet between two dates'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'search_transactions' or 'get_related_transactions_by_wallet', which appear to serve similar functions.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'search_transactions' or 'get_related_transactions_by_wallet'. It also doesn't mention prerequisites, such as whether the wallet must exist or be accessible, leaving the agent with no contextual usage information.

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

get_transaction_search_configGet Transaction Search ConfigA

Return the saved configuration options (labels, with-parties, saved filters) available for use with the search_transactions tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum config entries to return (default 20)

TDQS

A3.9/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 full burden. It describes the tool as a read operation ('Return'), which implies it is non-destructive and likely safe, but it does not disclose behavioral traits like authentication requirements, rate limits, error handling, or the format of the returned data. The description adds value by specifying the purpose but lacks detailed behavioral context.

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

Conciseness5/5

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

The description is a single, well-structured sentence that efficiently conveys the tool's purpose and relationship to another tool. It is front-loaded with the core action and resource, with no unnecessary words or redundancy, making it highly concise and effective.

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 (one optional parameter, no output schema, no annotations), the description is adequate but minimal. It explains what the tool does and its context with 'search_transactions', but it lacks details on output format, error cases, or prerequisites. For a simple read tool, this is acceptable but leaves some gaps, aligning with a score of 3.

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 the single parameter 'limit' fully documented in the schema. The description does not add any meaning beyond the schema, as it mentions no parameters. According to the rules, with high schema coverage (>80%), the baseline score is 3, which is appropriate here since the description does not compensate but also does not detract.

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

Purpose5/5

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

The description clearly states the verb ('Return') and the specific resource ('saved configuration options') with explicit details about what those options include ('labels, with-parties, saved filters'). It also distinguishes this tool from its sibling 'search_transactions' by specifying that these configurations are 'available for use with' that tool, making the relationship and differentiation clear.

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 clear context by linking this tool to 'search_transactions', implying it should be used to retrieve configurations before or in conjunction with that sibling tool. However, it does not explicitly state when not to use it or mention alternatives, such as whether other tools might provide similar configuration data, which prevents a perfect score.

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

get_user_accountGet User AccountB

List devices and sessions tied to the Money Lover account.

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 carries the full burden of behavioral disclosure. It states 'List devices and sessions', implying a read-only operation, but does not specify permissions required, rate limits, or what the output format looks like. This leaves significant gaps in understanding the tool's behavior and constraints.

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 directly states the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it highly concise and well-structured for quick understanding.

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

Completeness2/5

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

Given the complexity of retrieving user account data, the description is incomplete. With no annotations, no output schema, and no guidance on usage or behavioral traits, it fails to provide enough context for an AI agent to use the tool effectively. It should explain output format, permissions, or limitations to compensate for the lack of structured data.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description does not add parameter details, which is appropriate, but it could have clarified the scope (e.g., all devices/sessions or filtered). Given the baseline for 0 parameters is 4, this meets expectations without redundancy.

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

Purpose4/5

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

The description clearly states the action ('List') and the resource ('devices and sessions tied to the Money Lover account'), making the purpose specific and understandable. However, it does not explicitly differentiate from sibling tools like 'get_user_info' or 'get_user_profile', which might also retrieve user-related data, leaving some ambiguity in sibling 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?

The description provides no guidance on when to use this tool versus alternatives, such as 'get_user_info' or 'get_user_profile', nor does it mention any prerequisites or exclusions. It lacks context for distinguishing it from other user-related tools in the sibling list.

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

get_user_infoGet User InfoB

Retrieve the Money Lover user profile associated with the provided token.

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 mentions authentication via 'token', which is useful, but lacks details on rate limits, error handling, response format, or whether this is a read-only operation. For a tool with zero annotation coverage, this 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.

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without any fluff or redundancy. It is appropriately sized and front-loaded, making it easy to understand at a glance.

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 (0 parameters, no output schema, no annotations), the description is adequate as a basic overview. However, it lacks details on the response structure or potential errors, which could be helpful for an agent. It meets minimum viability but has clear gaps in 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 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description appropriately does not discuss parameters, earning a baseline high score for not adding unnecessary information.

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 'Retrieve' and the resource 'Money Lover user profile', making the purpose specific and understandable. However, it does not explicitly differentiate this tool from sibling tools like 'get_user_account' or 'get_user_profile', which appear to serve similar user-related functions, preventing a perfect score.

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 minimal guidance by mentioning 'the provided token', implying authentication is needed, but it does not specify when to use this tool versus alternatives like 'get_user_account' or 'get_user_profile'. No explicit when-not-to-use or prerequisite information is given, leaving usage context vague.

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

get_user_profileGet User ProfileB

Retrieve extended profile information for the current user.

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 full burden for behavioral disclosure. It states this is a retrieval operation but doesn't mention authentication requirements, rate limits, error conditions, or what 'extended profile information' includes. For a user data tool with zero annotation coverage, this leaves significant gaps.

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 gets straight to the point without unnecessary words. Every word serves a purpose in conveying the tool's function, making it appropriately sized and 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?

Given the tool's simplicity (0 parameters, no output schema), the description provides adequate basic information about what it does. However, without annotations and with multiple similar sibling tools, it should ideally clarify what 'extended profile information' means and how this differs from other user data tools.

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 0 parameters with 100% schema description coverage, so the schema already fully documents the parameter situation. The description appropriately doesn't waste space discussing parameters that don't exist, earning a baseline score above 3 for this zero-parameter case.

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 ('Retrieve') and resource ('extended profile information for the current user'), making the purpose immediately understandable. However, it doesn't distinguish this tool from sibling tools like 'get_user_account' or 'get_user_info', which appear to serve similar user-related functions.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'get_user_account' or 'get_user_info'. It mentions 'extended profile information' but doesn't clarify what differentiates it from other user data retrieval tools in the sibling list.

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

get_wallet_balanceGet Wallet BalanceB

Fetch the current balance summary for a specific wallet.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletIdYesWallet identifier

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 carries the full burden of behavioral disclosure. It states 'fetch' and 'current balance summary,' implying a read-only operation, but doesn't specify if this requires authentication, has rate limits, returns real-time or cached data, or details the response format (e.g., numeric balance, currency). This leaves significant gaps for a tool that likely involves sensitive financial data.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose ('Fetch the current balance summary') without unnecessary words. Every part of the sentence contributes directly to understanding the tool's function, making it highly concise and well-structured.

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 (one parameter, no output schema, no annotations), the description is minimally adequate but incomplete. It covers the basic purpose but lacks behavioral details (e.g., authentication needs) and usage guidelines, which are important for financial tools. Without an output schema, it also doesn't describe the return value, leaving the agent uncertain about the result format.

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

Parameters3/5

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

The input schema has 100% description coverage, with the single parameter 'walletId' documented as 'Wallet identifier.' The description adds no additional semantic context beyond this, such as format examples (e.g., UUID) or where to obtain the ID. Given the high schema coverage, a baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.

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 ('fetch') and resource ('current balance summary for a specific wallet'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_wallets' (which might list wallets) or 'get_related_transactions_by_wallet' (which might show transactions), leaving some ambiguity about 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 provides no guidance on when to use this tool versus alternatives. For example, it doesn't mention if this should be used instead of 'get_wallets' for balance details or clarify its role relative to transaction-related tools. Without such context, the agent must infer usage from the tool name alone.

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

get_walletsGet WalletsA

List all wallets accessible to the authenticated user.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
walletsYes

TDQS

A3.5/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 states it's a list operation, implying read-only behavior, but doesn't mention any constraints like pagination, rate limits, authentication requirements beyond 'authenticated user', or what happens if no wallets exist. For a tool with zero annotation coverage, this leaves significant behavioral gaps unaddressed.

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 directly states the tool's purpose without any fluff or redundant information. It's front-loaded with the core functionality and appropriately sized for what it needs to communicate.

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 (0 parameters, has output schema), the description is adequate but minimal. It explains what the tool does but lacks context about behavioral traits (especially with no annotations) and doesn't help differentiate from sibling tools. The presence of an output schema means return values are documented elsewhere, so the description doesn't need to cover that aspect.

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 0 parameters with 100% schema description coverage, so the schema fully documents the lack of inputs. The description appropriately doesn't waste space explaining parameters that don't exist, maintaining focus on the tool's purpose. This meets the baseline expectation for zero-parameter tools.

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

Purpose5/5

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

The description clearly states the specific action ('List all wallets') and resource ('wallets accessible to the authenticated user'), distinguishing it from siblings like get_wallet_balance (which focuses on balance) or get_shared_wallets (which focuses on shared wallets only). It uses precise language that leaves 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?

The description provides no guidance on when to use this tool versus alternatives like get_shared_wallets or get_wallet_balance. It mentions 'accessible to the authenticated user' but doesn't clarify if this includes shared wallets, personal wallets only, or how it differs from other wallet-related tools. No explicit when/when-not instructions or alternative recommendations are provided.

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

loginLogin to Money LoverA

Authenticate using Money Lover credentials to retrieve a JWT token.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesMoney Lover account email
passwordYesMoney Lover account password

Output Schema

ParametersJSON Schema
NameRequiredDescription
tokenYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Describes retrieving a token but does not disclose side effects or that the token should be stored for subsequent requests.

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

Conciseness5/5

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

Single sentence with no unnecessary words. Perfectly concise.

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

Completeness3/5

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

Output schema exists but description does not mention that the token must be used for authorization in other endpoints. Missing context for the authentication flow.

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 100% with clear descriptions for both parameters. Description adds no additional meaning beyond the schema.

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

Purpose5/5

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

Description clearly states the action (authenticate), resource (Money Lover credentials), and output (JWT token). Distinguishes from sibling tools that handle transactions, categories, etc.

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

Usage Guidelines3/5

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

Implied that this is the authentication step before using other tools, but no explicit guidance on when to use, prerequisites, or alternatives. Could be more helpful.

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

search_transactionsSearch TransactionsA

Free-form search across transactions using optional filters (walletId, categoryId, keyword, parties). Use this when no date range is given or when doing a keyword/label search instead of a date-range fetch.

ParametersJSON Schema
NameRequiredDescriptionDefault
filtersNoArbitrary filter object forwarded to /transaction/search (e.g. walletId, categoryId, dates, with)
limitNoMax results to return (default 20)

TDQS

A3.5/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 burden for behavioral disclosure. It mentions the tool is a 'free-form search' and lists some filter types, but doesn't disclose important behavioral traits like whether this is a read-only operation, what permissions are required, whether results are paginated, or what format the results take. For a search tool with no annotation coverage, this leaves significant gaps.

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 perfectly concise with just two sentences that each earn their place. The first sentence states the core functionality, and the second provides usage guidance. There's zero wasted text, and the information is front-loaded appropriately.

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 moderate complexity (search with filters), no annotations, and no output schema, the description provides adequate but incomplete coverage. It explains the purpose and usage context well, but doesn't address behavioral aspects like result format, pagination, or error conditions that would be important for a search operation. The description is functional but leaves gaps in the complete context needed for optimal tool use.

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%, so the schema already documents both parameters thoroughly. The description adds some value by listing specific filter examples (walletId, categoryId, keyword, parties) beyond what's in the schema's generic 'Arbitrary filter object' description, but doesn't provide additional syntax or format details. This meets the baseline expectation when schema coverage is high.

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

Purpose4/5

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

The description clearly states the tool's purpose as 'Free-form search across transactions using optional filters' which specifies both the verb (search) and resource (transactions). It distinguishes from siblings by mentioning keyword/label search vs date-range fetch, though it doesn't name specific sibling tools like 'get_transactions' that might handle date-range queries.

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 explicit guidance on when to use this tool: 'when no date range is given or when doing a keyword/label search instead of a date-range fetch.' This gives clear context for usage, though it doesn't explicitly name alternative tools or specify when NOT to use it beyond the date-range scenario.

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. 33 tool updatesv0.0.3
    • First observedadd_category
    • First observedadd_transaction
    • First observedadd_wallet
    • First observeddelete_category
    • First observeddelete_transaction
    • First observeddelete_wallet
    • First observededit_category
    • First observededit_transaction
    • First observededit_wallet
    • First observedget_all_categories
    • First observedget_awaiting_shared_wallets
    • First observedget_categories
    • First observedget_currencies
    • First observedget_debt_transactions
    • First observedget_debts
    • First observedget_events
    • First observedget_exchange_rates
    • First observedget_icons
    • First observedget_linked_providers
    • First observedget_other_config
    • First observedget_related_transactions
    • First observedget_related_transactions_by_category
    • First observedget_related_transactions_by_wallet
    • First observedget_shared_wallets
    • First observedget_transaction_search_config
    • First observedget_transactions
    • First observedget_user_account
    • First observedget_user_info
    • First observedget_user_profile
    • First observedget_wallet_balance
    • First observedget_wallets
    • First observedlogin
    • First observedsearch_transactions

TDQS

A3.5/5.0

Scored across 33 tools

Disambiguation4/5

Most tools have distinct purposes with clear resource-action pairs, but some overlap exists: get_user_account, get_user_info, and get_user_profile could be confused, and get_related_transactions, get_related_transactions_by_category, and get_related_transactions_by_wallet have subtle distinctions that might cause misselection without careful reading of descriptions.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, with clear action prefixes (add_, delete_, edit_, get_, login, search_) and descriptive nouns. There are no deviations in style or convention, making the set predictable and readable.

Tool Count3/5

With 33 tools, the count feels heavy for a personal finance server, bordering on excessive. While it covers many features, it may overwhelm agents and could likely be streamlined without losing core functionality, placing it in the borderline range for appropriateness.

Completeness5/5

The tool surface provides comprehensive coverage for the Money Lover domain, including full CRUD operations for wallets, categories, and transactions, along with extensive querying, user management, and auxiliary features like debts, events, and search. No obvious gaps exist that would hinder agent workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to interact with the WYGIWYH expense tracking API through 75 dynamically generated MCP tools. Supports comprehensive financial operations including transaction management, account handling, recurring expenses, and investment tracking.
    7
    -
  • 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
    A
    quality
    D
    maintenance
    Enables AI assistants to interact with Money Lover personal finance app through unofficial REST API. Supports authentication, wallet management, transaction querying, and creating new transactions for expense tracking.
    6
    11
    5
    ISC
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to manage personal finances through the Realbyte Money Manager mobile app, providing transaction management, asset tracking, credit card monitoring, and financial analytics with 18 comprehensive tools.
    18
    19
    12
    MIT