Skip to main content
Glama

Server Details

Money tracker, every account in its own currency: cards, loans, budgets, bills, splits, net worth.

Ownership verified
Status
Healthy
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
hakki123mrk/vitafin-plugin
GitHub Stars
0

TDQS

B3.4/5.0

Scored across 63 tools

Disambiguation4/5

Most tools target a distinct resource and action, and descriptions usually clarify boundaries. However, several adjacent tools overlap in practice (set_account_balance vs reconcile_statement vs record_card_statement; delete_split vs delete_group_row; add_holding vs import_holdings), so an agent must read carefully.

Naming Consistency4/5

The dominant pattern is snake_case verb_noun (list_accounts, create_transfer, update_holding), with clear list_/create_/update_/delete_ families. But noun-style tools such as budget_status, chart, net_worth, upcoming, people_balances, and review_queue break the pattern, and verbs like add, create, record, and set are used interchangeably.

Tool Count2/5

At 63 tools, this is far beyond the 25+ threshold and will be unwieldy for an agent to navigate. While the personal finance domain is broad, many tools could be consolidated, such as the multiple statement-import and reconciliation variants.

Completeness3/5

The surface covers most core finance workflows: accounts, transactions, budgets, transfers, splits, groups, loans, investments, recurring rules, and reminders. Notable gaps remain: there is no delete_group or remove_group_member tool, and update_holding references a delete_lot tool that is not exposed in the server.

Available Tools

63 tools
add_categoryAdd categoryAInspect

A new category (or sub-category under a parent). Id is derived from the name unless given.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
iconNoMaterial icon name, e.g. 'restaurant'
kindNoDefault expense; sub-categories inherit
nameYes
parent_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Beyond the annotations, the description discloses that 'Id is derived from the name unless given,' which is a meaningful behavioral detail not visible in the schema. It does not address duplicate handling or side effects, so it is adequate but not rich.

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?

One sentence conveys creation, parent relationship, and ID derivation with no filler. The most important behavior is front-loaded.

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

Completeness4/5

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

For a 5-parameter creation tool with an output schema, the description covers the core behavior and unusual ID rule, and the schema covers icon and kind. It omits duplicate-name behavior and explicit alternatives, but those are not required for a basic invocation.

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

Parameters4/5

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

Schema description coverage is only 40%, and the description compensates for two undocumented parameters: id (derived from name) and parent_id (sub-category placement). It does not elaborate on name, but the explicit id behavior gives the most important missing semantics.

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

Purpose4/5

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

The phrase 'A new category' clearly describes a creation action on the category resource, and '(or sub-category under a parent)' adds scope. It does not explicitly contrast with update_category, so it falls short of full differentiation.

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

Usage Guidelines3/5

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

The description implies when to use the tool by emphasizing 'new' and by mentioning parent relationships, but it does not state alternatives or give explicit exclusions. An agent must infer that modifications belong to update_category.

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

add_group_expenseAdd group expenseAInspect

Add an expense to a group: who paid and who shares it (equal split unless amounts are given). Members are matched by name; you are the payer unless told otherwise. Optionally also logs it on one of your accounts when you paid.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
noteNo
groupYesGroup name or id
titleYes
amountYesMajor units
paid_byNoMember name; default you
currencyNoDefault: the group's home currency
account_idNoYour account to log the payment on (only when you paid; same currency)
category_idNo
split_amongNoDefault: everyone, equally

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations only provide readOnlyHint=false and other false hints, so the description carries the burden of behavioral disclosure. It adds meaningful context: members are matched by name, the user is the default payer, equal split unless amounts are given, and optional account logging. These go beyond the annotations and help the agent understand side effects.

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

Conciseness5/5

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

The description is three sentences, front-loaded with the main purpose, and each sentence adds distinct value: the first states what it does, the second explains matching and payer default, the third explains optional account logging. No waste or redundancy.

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

Completeness4/5

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

For a tool with 10 parameters and an output schema, the description covers the non-obvious semantics (split logic, payer default, account logging) and does not need to describe return values. It omits standard fields like date/note/category but those are self-explanatory, so the description is adequate for correct 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 60%, so the baseline is 3. The description adds value for split_among (equal split default), paid_by (default you), and account_id (only when you paid), but does not clarify date, note, title, or category_id. It enriches some parameters but does not fully compensate for the uncovered ones.

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

Purpose5/5

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

The description uses a specific verb 'Add' and resource 'expense to a group', and clearly explains the core semantics (who paid, who shares). It distinguishes itself from sibling add_* tools like add_category or add_holding by focusing on group expenses, making the purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies usage for group expenses but does not explicitly mention alternatives or exclusions. It does not say, for example, to use log_transaction for non-group expenses or add_planned_expense for future ones, leaving the agent to infer the appropriate context.

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

add_group_memberAdd group memberAInspect

Add a member by name to a group you are in.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
groupYesGroup id or name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already mark this as a write operation with readOnlyHint=false and destructiveHint=false, so the description does not need to restate safety. It adds the auth-like constraint 'a group you are in', which is useful context. It does not disclose duplicate-member behavior, failure modes, or permission requirements beyond membership, but the annotation coverage lowers the burden.

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

Conciseness5/5

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

The description is a single sentence that front-loads the action, resource, parameter, and scope without filler or redundancy. It earns its place and is appropriately concise for a simple two-parameter mutation.

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

Completeness4/5

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

For a tool with only two required parameters and an output schema, the description plus schema is mostly complete: the agent knows what to do, which parameters to provide, and the membership constraint. It lacks edge-case behavior such as handling duplicate members or nonexistent names, but those are not necessary for correct initial invocation. A little more contrast with group_invite would make it 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?

The schema documents 'group' as 'Group id or name' but leaves 'name' undocumented. The description adds that 'name' refers to the member's name, which is a small semantic contribution beyond the schema. It still does not clarify whether the member must already exist or what identifier format is expected, so it only partially compensates for the 50% 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 uses a clear action verb ('Add'), a specific resource ('a member by name'), and a scope condition ('to a group you are in'). This makes the tool's purpose immediately understandable and distinguishable from the many finance/group tools. It does not explicitly name a sibling alternative like group_invite, so it stops just short of a full 5.

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

Usage Guidelines3/5

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

The phrase 'a group you are in' provides a clear eligibility condition, which gives some usage context. However, the description gives no explicit when-to-use or when-not-to-use guidance, and it does not contrast this tool with adjacent siblings such as group_invite. Usage context is implied rather than fully specified.

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

add_holdingAdd holdingAInspect

Create an investment holding (a stock, ETF, mutual fund, gold, crypto…) with no lots yet; use record_lot for buys/sells, or import_holdings for a broker export. A live-price source is picked from the kind unless given.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
nameYes
noteNo
symbolNoTicker / ISIN / scheme code
currencyYes
account_idNoThe investment account it sits in (list_accounts, type investment)
quote_symbolNoProvider's symbol, e.g. 'itc.in' for stooq; default = symbol
quote_providerNonull = no live price; default from kind

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

The description adds meaningful behavioral context beyond the generic annotations: it states the holding is created empty ('no lots yet') and that a live-price source is picked from the kind unless explicitly given. It could say more about duplicate/conflict behavior, but the annotations already cover the basic safety profile and nothing is contradicted.

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 the core purpose front-loaded. Every clause earns its place by either defining the tool's scope or routing to the correct alternative, with no filler or repetition.

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

Completeness4/5

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

With an output schema present and several parameters already described in the input schema, the description is largely sufficient. Minor gaps remain around duplicate holdings and the optional account_id behavior, but these are secondary given the schema and sibling 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 50%, and the description adds only modest parameter-level insight: it enumerates kind values in prose and clarifies the quote_provider default behavior. It does not explain account_id, quote_symbol, or symbol beyond what the schema already provides, so it is adequate but not rich.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Create an investment holding' and immediately clarifies the object type (stock, ETF, mutual fund, gold, crypto). It also explicitly distinguishes itself from record_lot and import_holdings, so an agent can tell what this tool does versus those siblings.

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?

It directly says to use record_lot for buys/sells and import_holdings for broker exports, giving clear exclusions. 'With no lots yet' also frames the tool's role as initial holding creation, so the agent knows when it is and is not appropriate.

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

add_loanAdd loanCInspect

A loan you took (borrowed) or money you lent. EMI loans need term_months (the EMI is computed if omitted); pay-as-you-go loans don't.

ParametersJSON Schema
NameRequiredDescriptionDefault
emiNoOverride the computed instalment with the bank's figure
kindNo
nameYes
noteNo
currencyYes
scheduleNoDefault: emi when term_months is given, else flexible
directionYes
principalYes
start_dateNo
payment_dayNoDefault 1
term_monthsNo
counterpartyNoLender or borrower
linked_account_idNoWhere repayments go from / arrive in
annual_rate_percentNoDefault 0

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

The description adds a meaningful behavioral detail: EMI is computed if term_months is omitted, and pay-as-you-go loans do not need term_months. It does not contradict the annotations, which only carry generic flags. However, it does not explain default schedule resolution, what happens on missing required fields, or any mutation consequences beyond what the name implies.

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 short and front-loaded, with no filler. The two sentences carry distinct and useful information. It loses a point because the opening sentence reads more like a definition of a loan than an instruction for the add action, which slightly reduces its directness.

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 14-parameter creation tool, this description is materially incomplete. It does not state the action, required inputs, the exact schedule semantics, or how the EMI defaults interact with the required fields. The output schema exists but does not compensate for the missing invocation-level guidance.

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

Parameters2/5

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

Schema description coverage is only 43%, so the description must compensate for many undocumented parameters. It sheds light on term_months and EMI, but it leaves required fields like name, direction, principal, and currency mostly unexplained, and it introduces a 'pay-as-you-go' phrase that only loosely maps to the schema's 'flexible' enum. This is partial compensation for a low-coverage schema.

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

Purpose4/5

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

The description identifies the resource as a loan and makes the borrowed-vs-lent direction central, which is the key semantic of the tool. It does not explicitly say 'adds/create a loan', but the tool name and title supply the action, so an agent can infer the purpose. It is clearly distinguished from update/delete tools by the add_* prefix.

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

Usage Guidelines2/5

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

There is no guidance on when to use add_loan versus sibling tools like update_loan or record_loan_payment. The description gives a useful rule about EMI vs pay-as-you-go loans, but that is input configuration guidance, not tool-selection guidance. No alternatives or exclusions are mentioned.

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

add_planned_expenseAdd planned expenseAInspect

A one-off you know is coming (a flight, a fee, a gift): shows under Upcoming until it is logged or skipped. Amount is positive; it is an expense.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
noteNo
amountYesMajor units
currencyNoDefault: the account's currency, else INR
account_idNoWhere it will be paid from (can be decided later)
category_idNo
target_dateYesISO date

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations only indicate mutability (readOnlyHint=false) but provide no lifecycle detail. The description adds that the expense is shown under Upcoming until logged or skipped, and that amount must be positive. This is useful behavioral context beyond what annotations or schema state.

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 filler. The core concept is front-loaded and the caveat about positive amount is included without redundancy.

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

Completeness4/5

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

For a creation tool, the description explains the purpose and lifecycle adequately. An output schema exists, so return details are covered. Missing explicit parameter semantics is a minor gap but does not undermine core usability.

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

Parameters2/5

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

Schema coverage is 57%, but the description adds no parameter-level guidance beyond restating that amount is positive (already in schema). It fails to clarify name, note, category_id, or how account_id interacts with target_date. The moderate coverage is not compensated, leaving ambiguity for agents.

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

Purpose5/5

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

The description clearly states the tool adds a one-off planned expense with concrete examples (flight, fee, gift), explains it appears under Upcoming until resolved, and distinguishes it from recurring or regular transactions. It is specific and unambiguous.

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

Usage Guidelines4/5

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

The phrase 'a one-off you know is coming' implies usage for non-recurring future expenses and differentiates from add_recurring_rule. It also hints at lifecycle ('until it is logged or skipped'), pointing to resolve_planned_expense. However, it doesn't explicitly name alternatives or provide exclusion criteria, so it falls short of a perfect score.

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

add_recurring_ruleAdd recurring paymentAInspect

Set up something that repeats: rent, salary, a subscription, an EMI. Negative amount = expense, positive = income, in the account's currency. mode 'autoPost' logs it on the due day; 'remind' only shows it under Upcoming until you confirm.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoDefault remind
nameYes
noteNo
amountYesMajor units; negative = money out
end_dateNo
intervalNoEvery N periods; default 1
merchantNo
frequencyYes
account_idYes
start_dateNoFirst occurrence (ISO); default today. Past dates roll forward to the next due date.
category_idNoDefault: guessed from the name/merchant

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations are minimal (all hints false), so the description carries the burden. It explains the two modes (autoPost vs remind) and their behaviors, and clarifies the sign/currency convention. However, it does not disclose other behavioral aspects like reversibility, required permissions, or side effects on existing rules. The core behavior is covered, but not exhaustively.

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 fluff. It front-loads the purpose and examples, then details the sign convention and modes. Every sentence earns its place, and it is concise enough to be quickly parsed by an agent.

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 an 11-parameter tool with an output schema, the description covers the core semantics (recurring, sign, modes) but omits details on frequency options, interval defaults, and end-date behavior. Some of these are partially addressed by schema descriptions, but the tool is complex enough that more context would be beneficial. The description is adequate but not comprehensive.

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 45%, so the description must compensate for undocumented parameters. It adds meaning for 'amount' (sign) and 'mode' (autoPost/remind), but does not explain other parameters like 'interval', 'end_date', 'frequency', or 'account_id'. While some parameters already have schema descriptions (start_date, category_id), the description only partially fills the gap for the many undocumented ones.

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

Purpose5/5

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

The description clearly states the tool sets up recurring payments, with specific examples (rent, salary, subscription, EMI) that distinguish it from one-time planned expenses or reminders. The verb 'Set up' and resource 'something that repeats' are specific, and the sign convention for amounts is explicitly defined, making the tool's purpose unambiguous even among siblings like add_planned_expense.

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

Usage Guidelines3/5

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

The description implies usage for recurring items via examples but does not explicitly contrast with alternatives such as add_planned_expense (one-time) or add_reminder (not a payment). It gives clear context ('repeats') but no explicit when-not-to-use guidance or naming of sibling tools. This leaves the agent to infer the boundary.

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

add_reminderAdd reminderBInspect

A dated note under Upcoming (renew passport, cancel trial). No money attached.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
noteNo
titleYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, indicating a write operation, and the description adds behavioral context: the note appears under 'Upcoming' and has no money attached. This goes beyond the annotations, but it does not disclose side effects, idempotency, or what happens if the date is in the past. The description adds some value without contradicting annotations.

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

Conciseness4/5

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

The description is a single concise sentence that front-loads the core purpose ('A dated note under Upcoming') and then adds examples and a differentiator. It wastes no words and is easy to scan. Slightly more detail on parameters would be helpful, but the structure itself is efficient.

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

Completeness2/5

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

The tool has 3 parameters, 2 required, and no schema descriptions. The description does not explain the meaning of 'title,' 'date,' or 'note' clearly enough for an agent to populate them correctly without additional inference. While an output schema exists, the input guidance is lacking, making the description incomplete for a reliable call.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must explain the parameters. It only hints at 'date' and 'note' via 'dated note' and examples, but does not clarify the 'title' parameter or the exact format of 'date' and 'note.' The examples show note content (renew passport, cancel trial) but not the title. This is insufficient given the lack of schema descriptions.

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

Purpose4/5

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

The description states a clear action: it adds a dated note under the 'Upcoming' section, with examples of typical use (renew passport, cancel trial). It differentiates from monetary tools like add_planned_expense by explicitly saying 'No money attached.' While not as explicit as 'creates a reminder,' the verb 'add' is implied by the context.

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

Usage Guidelines3/5

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

The description implies usage for non-monetary dated notes through examples and the 'No money attached' note, but it does not explicitly state when to use this tool over alternatives like add_planned_expense or add_recurring_rule. It provides context but no exclusions or explicit guidance on selection criteria.

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

budget_statusBudget statusA
Read-onlyIdempotent
Inspect

Every budget with what its category (and sub-categories) has consumed this calendar month, per currency. Ratio > 1 means over budget.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthNoYYYY-MM; default current
currencyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds useful behavioral context beyond those hints: the calendar-month window, per-currency grouping, and the ratio > 1 over-budget threshold. It does not contradict the annotations.

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

Conciseness5/5

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

One sentence communicates the scope, grouping, and interpretation of the output with no filler. The over-budget ratio definition is a concise and valuable addition at the end.

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-only report with zero required parameters, an output schema, and strong annotations, the description covers the essential invocation semantics: month, currency grouping, and ratio interpretation. Minor gaps like currency format are not blocking since currency is optional.

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 documents 'month' format and default, but 'currency' has no description, leaving 50% schema coverage. The phrase 'per currency' clarifies that currency is a meaningful grouping/filter dimension, but it doesn't explain the currency format or what happens when the parameter is omitted.

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 identifies a budget-status report: it returns budgets with category/sub-category consumption for the current calendar month, per currency, and defines what an over-budget ratio means. This distinguishes it from generic spending tools like spending_summary or spending_trend, though it doesn't name them or use an explicit imperative verb.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool rather than alternatives such as spending_summary or set_budget. The intended use is inferable from the name and content, but the description provides no explicit usage context or exclusions.

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

chartChartA
Read-onlyIdempotent
Inspect

A picture of the numbers, as a PNG you can show the user: spending by month, income vs spending, where the money went (top categories) for a period, or one account's balance over time. One panel per currency, never summed across. The reply also carries the figures as a table so you can quote them exactly.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoFor categories: period end, exclusive (ISO). Default: now
topNocategories: how many bars. Default 8
fromNoFor categories: period start (ISO). Default: first of this month
kindYes
monthsNoWindow for the month-based kinds. Default 6 (12 for balance_history)
currencyNoOnly this currency
account_idNobalance_history: the account. Other kinds: limit to this account

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description adds useful behavioral details: it returns a PNG image and also includes the figures as a table for exact quoting. It also states the currency handling rule (never summed across). These go beyond annotations and help the agent set expectations without contradiction.

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, front-loads the core purpose, and every clause adds information: what it produces, the chart kinds, currency scoping, and the table output. No fluff or redundancy.

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

Completeness4/5

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

Given the 7 parameters and an output schema, the description covers the main use cases and output format. It mentions the table return and the currency rule, which are key. It doesn't detail per-kind parameter usage, but the schema descriptions already do that. The output schema documents return values, so the description is sufficiently complete for an agent to decide when and how to call it.

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 86%, so most parameters are already described. The description adds a little extra meaning—'One panel per currency' explains the currency parameter behavior, and 'top categories' hints at the top parameter. However, it does not systematically explain parameter interplay (e.g., which kinds use from/to). With high schema coverage, baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose: it produces a PNG chart of financial data, listing four specific chart kinds (spending by month, income vs spending, top categories, balance over time). It also clarifies scope (one panel per currency) and output (also a table). This distinguishes it from sibling text-based tools like spending_summary.

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

Usage Guidelines3/5

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

The description implies usage—when the user needs a visual chart—but does not explicitly name alternatives or provide when-not-to-use guidance. It says 'as a PNG you can show the user', which suggests user-facing scenarios, but it doesn't contrast with spending_summary, spending_trend, or net_worth. Usage context is inferable but not explicit.

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

complete_reminderComplete reminderA
Destructive
Inspect

Mark a reminder done (or delete it).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
deleteNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows it is a mutation. The description adds the detail that it can either mark done or delete, but does not explain side effects, reversibility, or what happens on success. It does not contradict annotations, but adds limited 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?

A single sentence with no filler. The primary action is front-loaded, and the alternative is mentioned in a parenthetical. Extremely concise 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 destructive mutation with an output schema, the description is too sparse. It does not explain prerequisites, error conditions, or the precise behavior of the delete parameter. Given the tool's destructive nature, more context is needed to ensure correct usage.

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

Parameters2/5

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

Schema coverage is 0%, so the description must explain the parameters. It mentions 'delete it', hinting at the delete boolean, but does not explicitly map 'id' to the reminder or clarify that 'delete' toggles between complete and delete. An agent might not know the semantics without inspecting the schema.

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

Purpose5/5

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

The description states a specific verb 'Mark' with a clear resource 'reminder' and an explicit alternative 'or delete it'. This clearly distinguishes it from sibling tools like add_reminder, as it is the only tool that acts on existing reminders to complete or delete them.

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

Usage Guidelines3/5

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

No explicit when-to-use guidance is given. It is implied that this tool is for completing or deleting reminders, but there is no mention of alternatives or conditions (e.g., when to use delete vs. complete). The agent must infer from the name and description.

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

correct_transactionCorrect amount or dateA
Destructive
Inspect

Change a transaction's amount, date or account — the things update_transaction deliberately leaves alone. Use when the user says the number itself was wrong.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
dateNo
amountNoMajor units; negative = expense
account_idNoMove it to another account in the same currency

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, so the agent knows this is a mutation. The description adds what gets changed, but does not go further into consequences like irreversibility, effects on splits/transfers, or approval needs. With annotations already carrying the safety profile, this is adequate but not rich.

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 no filler. The core scoping distinction is front-loaded in the first clause, and the usage trigger is in the second. Every word earns its place.

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

Completeness4/5

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

For a 4-parameter tool with an output schema and destructive annotation, the description gives strong selection and field-scope guidance. Minor gaps remain around date format and the implied requirement to provide at least one mutable field, but the schema and output schema cover much of the invocation detail.

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 50%, with amount and account_id already documented. The tool description confirms date and account are modifiable, but it does not clarify date format or specify that at least one of date/amount/account_id should be supplied alongside id. It partially compensates for the schema gap, but not fully.

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

Purpose5/5

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

The description uses a specific verb ('Change'), names the exact resources affected (amount, date, account), and explicitly distinguishes itself from update_transaction by noting it covers what that sibling 'deliberately leaves alone.' An agent can immediately tell this apart from update_transaction without opening the schema.

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

Usage Guidelines5/5

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

It gives an explicit trigger condition ('Use when the user says the number itself was wrong') and names the alternative tool it should be compared against. This is direct, actionable routing guidance rather than a generic description.

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

create_accountCreate accountCInspect

Create an account. One currency per account.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
typeYes
as_ofNoDate of the opening balance (ISO); default now
last4No
regionNoISO-3166 alpha-2
currencyYesISO-4217
institutionNo
opening_balanceNoBalance the account holds today, major units (negative for a card you owe on). Recorded as an opening-balance row, outside spending.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameYes
typeYes
last4No
regionNo
balanceNoFormatted in the row's currency, e.g. '₹1,200.00'
currencyYes
institutionNo
is_archivedNo
shared_with_meNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already indicate this is a mutating operation (readOnlyHint=false) and not idempotent, so the description does not need to restate that. It adds one useful behavioral rule: 'One currency per account.' However, it does not disclose side effects such as whether the account is immediately usable, how opening_balance interacts with account creation, or any validation failure behavior. The added constraint earns some credit but the transparency is thin.

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

Conciseness4/5

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

The description is very short, with no filler or redundant elaboration. The core action is front-loaded and the currency constraint follows directly. It is concise, but it is also minimal to the point of omitting valuable guidance, which keeps it from a 5.

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

Completeness2/5

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

With 8 parameters, 3 required fields, enum values, and an output schema, the description only states the action and one constraint. It leaves the agent to infer required fields, account type options, and the significance of opening_balance. While the schema and output schema provide some structured context, the description does not fill the gaps for a non-trivial creation operation.

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

Parameters2/5

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

Schema description coverage is only 50%, so the description must compensate for undocumented parameters. It does not. The only semantic guidance is 'One currency per account,' which partially explains the currency parameter. It says nothing about name, type, opening_balance, as_of, last4, region, or institution. The schema itself documents a few fields, but the description adds no meaningful parameter-level detail beyond the currency constraint.

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

Purpose4/5

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

The description states the specific verb and resource: 'Create an account.' The added constraint 'One currency per account' gives a meaningful business rule that differentiates the act of creation from generic setup. It is not a tautology, though it relies on the tool name for the core action. It clearly distinguishes from sibling tools like update_account and set_account_balance, which imply modification rather than creation.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as list_accounts, update_account, or set_account_balance. It does not mention prerequisites, typical scenarios, or when a user should call a different tool. The usage context is only implied by the word 'create' and the sibling list.

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

create_groupCreate groupAInspect

Start a group ledger (a trip, a flat) with you as owner and the other members by name. Members can join from their own phone later with group_invite.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
noteNo
membersNoNames of the others
currencyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Beyond the annotations (not read-only, not idempotent, not destructive), the description adds meaningful behavioral context: the caller becomes owner and members are set by name at creation, while later joining happens via group_invite. It does not detail duplicate handling or failure behavior, but the annotations and output schema cover the key safety profile.

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 short sentences, with the main purpose front-loaded and examples in parentheses. No filler or repeated schema content.

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?

With an output schema present and annotations covering safety, the description is sufficient for selecting and invoking the tool. It provides the essential ownership and member-joining context; only the absence of explicit guidance about existing groups and the currency meaning keeps it from a 5.

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 low (25%). The description clarifies that 'members' are the other members' names and implies 'name' is the group ledger's name, but it does not explain the required 'currency' parameter or the optional 'note'. This is partial compensation rather than full 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 starts with the specific action 'Start a group ledger' and gives concrete examples (a trip, a flat). It explicitly assigns the owner role to the caller and distinguishes this creation tool from group_invite, so the agent can tell it apart from sibling tools.

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

Usage Guidelines4/5

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

It clearly states when to use this tool: when starting a new group ledger with the caller as owner and naming members. It also points to group_invite as the alternative for later joining, though it does not explicitly contrast with add_group_member for adding members to an existing group.

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

create_transferCreate transferAInspect

Move money between accounts. For different currencies give to_amount or rate; the rate is frozen at creation. Legs are excluded from spending; an optional fee is a real expense.

ParametersJSON Schema
NameRequiredDescriptionDefault
feeNoIn source currency
dateNo
noteNo
rateNo1 source unit = rate destination units
to_amountNo
from_amountYes
to_account_idYes
from_account_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only state mutability (readOnlyHint=false) and non-idempotency. The description adds valuable behavioral detail: 'the rate is frozen at creation', 'Legs are excluded from spending', and 'an optional fee is a real expense'. These explain accounting effects that are not apparent from the schema. No contradiction with annotations; the extra context is significant but not exhaustive (e.g., no mention of balance updates or constraints on accounts).

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?

Three tightly written sentences, each carrying distinct information: the core action, the currency-handling nuance, and the accounting treatment. No filler or redundancy; all content earns its place.

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

Completeness4/5

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

Given the tool's complexity (currency conversion, fee, leg accounting) and that an output schema exists, the description covers the most critical behaviors. It explains the rate freezing, spending exclusion, and fee expense—aspects that would otherwise be surprising. It omits minor details like whether from_amount is the source-currency amount, but these are inferable from the schema's required field and the 'source currency' note on fee. Overall, the description is sufficiently complete for correct 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 low (25%), so the description must compensate. It does clarify the roles of rate and to_amount ('For different currencies give to_amount or rate') and the fee ('an optional fee is a real expense'). However, it does not explain date, note, from_amount, or account IDs beyond what the schema's type/required fields imply. This partial compensation is helpful but incomplete.

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

Purpose5/5

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

The description 'Move money between accounts' uses a specific verb and resource, clearly distinguishing this from create_account, delete_transfer, and log_transaction. The scope is explicit and unambiguous.

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

Usage Guidelines4/5

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

Provides clear guidance for different-currency transfers: 'For different currencies give to_amount or rate; the rate is frozen at creation.' This tells the agent when to supply which parameters. It doesn't explicitly contrast with log_transaction for income/expense, but the purpose statement implies the use case, so the guidance is adequate though not exhaustive.

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

delete_group_rowDelete group entryA
Destructive
Inspect

Delete a group expense or a group settlement (every member's phone drops it). The payer's own bank row, if any, is removed too.

ParametersJSON Schema
NameRequiredDescriptionDefault
expense_idNo
settlement_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior5/5

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

Even though annotations already mark the tool as destructive, the description adds concrete side effects beyond structured data: 'every member's phone drops it' and 'The payer's own bank row, if any, is removed too.' This meaningfully discloses cascading deletion 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 two tight sentences with no filler. The core action is front-loaded, and the parenthetical packs an important side effect into a compact, readable clause.

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

Completeness3/5

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

The description adequately covers purpose and side effects, and an output schema exists so return values need not be described. However, with zero required parameters and zero schema descriptions, the missing guidance on which ID to provide for which deletion case leaves the invocation semantics incomplete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only echoes the two parameter types ('expense' and 'settlement') without explaining how to populate expense_id or settlement_id or that exactly one is likely required. The agent is left guessing about ID selection and requiredness.

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

Purpose5/5

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

The description opens by naming the exact resource and action: 'Delete a group expense or a group settlement.' This specifically distinguishes it from sibling delete tools like delete_transaction, delete_transfer, and delete_split by the 'group' scope, while also noting the payer's bank row is removed.

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 clearly states the intended use case: deleting a group expense or a group settlement. It does not explicitly mention alternatives or when not to use it, but the group-resource framing gives enough context for an agent to pick this over nongroup deletion tools.

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

delete_parse_ruleDelete parse ruleA
Destructive
Inspect

Remove one of your parse rules (the phone drops it on its next sync).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds valuable context beyond that: the deletion takes effect on the phone's next sync, which is a non-obvious behavioral trait. This helps set expectations about the timing of the effect, so the description adds meaningful behavioral detail.

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

Conciseness5/5

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

The description is a single sentence with a useful parenthetical explanation. Every word adds value, and the core action is front-loaded. There is no redundancy.

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

Completeness4/5

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

For a simple destructive action with one parameter and an output schema present, the description covers the key behavioral nuance (sync timing). It does not explain error cases or undo possibilities, but destructiveHint already signals permanence, and the output schema likely covers return values. Overall it is adequately complete for the tool's complexity.

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

Parameters2/5

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

Schema coverage is 0%, so the description carries the burden of explaining parameters, but it does not mention 'id' at all. The parameter name alone suggests it is the identifier of the parse rule, but the description neither confirms this nor advises how to obtain a valid id. Given the low schema coverage, this is a notable gap.

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 ('Remove one of your parse rules') and the resource (parse rules). This distinguishes it from sibling tools like save_parse_rule, test_parse_rule, and list_parse_rules, which clearly serve different purposes.

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?

Usage is implied: use this to delete a parse rule. However, the description does not explicitly mention alternatives or prerequisites (e.g., finding the rule ID via list_parse_rules, or conditions that must hold before deletion). The context signals suggest there are no true alternatives for this action, but the description could still guide when not to use it.

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

delete_splitDelete splitA
Destructive
Inspect

Remove the split on a transaction (the transaction stays); or delete a settlement by id (its bank row, if any, goes too).

ParametersJSON Schema
NameRequiredDescriptionDefault
split_idNo
settlement_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description adds crucial behavioral details: that removing a split leaves the transaction intact, and that deleting a settlement also removes its associated bank row if one exists. These specifics are not captured in annotations and materially affect agent decisions.

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

Conciseness5/5

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

A single, well-structured sentence that front-loads the primary action and uses a semicolon to separate the two modes. No wasted words, and the key behavioral caveat ('the transaction stays') is included without clutter.

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?

The tool has an output schema, so return values are already specified. The description covers the two operational modes and their side effects, but doesn't clarify whether both parameters can be provided simultaneously (though the 'or' implies mutual exclusivity). This is a minor gap given the overall clarity.

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

Parameters4/5

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

Schema coverage is 0%, so the description must convey parameter meaning. It does so by associating split_id with the split-removal action and settlement_id with the settlement-deletion action, though it doesn't explicitly name the parameters. This is sufficient for an agent to infer which parameter to use for each mode.

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 two distinct actions: removing a split from a transaction (explicitly noting the transaction remains) and deleting a settlement by id. It uses specific verbs ('remove' and 'delete') tied to specific resources, and it differentiates from siblings like delete_transaction and delete_transfer by scoping to splits and settlements.

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

Usage Guidelines4/5

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

The description implies usage context: use this when you need to remove a split without affecting the transaction, or when you need to delete a settlement. It doesn't explicitly name alternatives or when-not-to-use, but the 'or' structure and clear resource distinction provide sufficient guidance for an agent to decide.

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

delete_transactionDelete transactionA
Destructive
Inspect

Delete a transaction (and any split on it). Transfer legs: delete the transfer instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

While annotations already mark this as destructive and non-idempotent, the description adds key behavioral detail: deleting a transaction cascades to its splits, and transfer legs are explicitly excluded and require deleting the transfer instead. This tells the agent exactly what gets destroyed, going beyond the annotation flags.

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 short sentences with no filler. The core action is front-loaded, and the important caveats about splits and transfer legs follow immediately. Every word earns its place.

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

Completeness5/5

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

For a single-parameter destructive tool with an output schema and strong annotations, the description covers the essential action, the cascade behavior, and the transfer exception. There are no significant gaps that would prevent an agent from calling the tool correctly.

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

Parameters2/5

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

Schema description coverage is 0%, and the description never mentions the `id` parameter explicitly or explains how to obtain it. The phrase 'a transaction' implies the id identifies a transaction, but the description does not compensate for the complete lack of schema documentation on the parameter.

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

Purpose5/5

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

States a specific verb and resource: 'Delete a transaction', and immediately clarifies scope by noting that any split on it is also deleted. It also distinguishes itself from transfer-related tools by saying transfer legs should be handled differently. This gives an agent a precise mental model of 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 Guidelines5/5

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

Provides a clear when-not-to-use instruction: for transfer legs, delete the transfer instead. It also implies that this tool is for deleting whole transactions (including splits), contrasting with split-level tools. The alternative behavior is explicit enough for an agent to route correctly.

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

delete_transferDelete transferA
Destructive
Inspect

Remove a transfer and both of its legs (and the fee row, if any).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already mark this as destructive, but the description adds valuable detail beyond that: it specifies that both legs and any fee row are removed. This is exactly the kind of behavioral nuance an agent needs before invoking 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?

One concise sentence with no filler. The core effect is front-loaded, and the conditional fee-row note is packed efficiently without being verbose.

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

Completeness5/5

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

For a simple one-parameter delete operation with a destructive annotation, the description fully conveys the scope and consequences. The output schema exists, so return-value details are not needed, and no other invocation-critical information is missing.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explicitly explain that 'id' is the transfer's identifier or what format/value it should take. The single required id parameter is left to be inferred from the tool name and context.

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

Purpose5/5

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

The description uses a specific verb ('Remove') and resource ('a transfer'), and adds important scope by naming both legs and the optional fee row. This clearly differentiates it from sibling tools like delete_transaction and delete_split.

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 cascade behavior implies this is the tool to remove an entire transfer, including its legs, but it never explicitly says when to prefer it over alternatives such as delete_split or delete_transaction. The intended usage is clear but left to inference.

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

group_inviteInvite to groupAInspect

An invite link for a group. With member_id, whoever opens it becomes that named placeholder (keeps its history); without, they join as a new member.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYes
member_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only declare readOnlyHint false, implying mutation, but the description adds meaningful behavior: it explains that with member_id the invitee becomes a named placeholder preserving history, otherwise they join as a new member. This goes beyond annotations and discloses the key side effect of creating an invite link, though it does not mention expiration or other potential side effects.

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

Conciseness5/5

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

Two sentences with no filler. The core purpose is stated first, followed by the conditional behavior. Every word earns its place, and the structure is front-loaded.

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

Completeness4/5

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

Given the tool's simplicity, the description covers the two operating modes and their outcomes. An output schema exists, so return values are defined elsewhere. Minor gaps like prerequisites or invite-link lifecycle are not critical for a straightforward tool like this.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate. It explicitly explains the meaning of member_id and its two states. group_id is not directly described, but its purpose is obvious from the context and title. The description adds value for member_id but leaves group_id to inference.

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

Purpose5/5

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

The description clearly states the tool creates an invite link for a group and distinguishes two modes based on member_id. This is specific enough to differentiate from sibling tools like add_group_member, which adds members directly, and the title reinforces the action.

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 guidance on when to use member_id (to assign a placeholder) versus not (to add a new member). However, it does not explicitly mention when to choose this tool over alternatives like add_group_member or settle_group, though the invite-link concept implies a different use case.

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

import_holdingsImport holdingsAInspect

Import a broker's holdings export (Zerodha/Groww/Kite style CSV: instrument, quantity, average cost, optionally LTP) into an investment account. Each row becomes a holding plus one 'buy' lot at the average cost dated as_of, so cost basis and P/L work from day one. Existing holdings (same symbol) are skipped unless replace=true. Dry-run unless commit=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
csvYesThe export, header included
kindNoDefault stock; use mutualFund for a fund export
as_ofNoDate to give the opening lots; default today
commitNo
replaceNoRe-import holdings that already exist (their lots are replaced by the new opening lot)
currencyNoDefault: the account's currency
account_idYesThe investment account (type investment)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

The description goes well beyond the annotations by disclosing the full effect on holdings and lots, duplicate handling, the dry-run default, and the commit requirement. It also explains why the behavior matters ('so cost basis and P/L work from day one'), which helps the agent anticipate downstream consequences.

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?

Three dense sentences deliver the core purpose, default behavior, and side-effect semantics without filler. The most decision-relevant facts (duplicates skipped, dry-run unless commit) are front-loaded and each sentence earns its place.

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

Completeness5/5

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

For a 7-parameter mutation tool with 86% schema coverage and an output schema, the description covers the non-obvious behaviors: CSV format, lot creation, duplicate handling, replace semantics, and commit gating. An agent has what it needs to call the tool correctly.

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

Parameters4/5

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

The schema already documents most parameters with 86% coverage, so the baseline is high. The description adds real value beyond the schema by defining the expected CSV columns (instrument, quantity, average cost, optionally LTP), how as_of becomes the lot date, and how replace affects existing holdings.

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

Purpose5/5

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

The description names a specific action ('import a broker's holdings export') and a specific destination ('into an investment account'), with enough CSV detail to distinguish it from one-off tools like add_holding or import_statement. The row-to-holding-and-buy-lot behavior makes the purpose concrete and unambiguous.

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

Usage Guidelines4/5

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

The description clearly states what this tool is for and gives important invocation context: it handles broker exports, creates opening lots, skips existing holdings unless replace=true, and dry-runs unless commit=true. It does not explicitly say when to use a sibling tool instead, but the context is clear enough for an agent to select it among the many sibling tools.

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

import_statementImport statementAInspect

Import a bank statement (CSV text) into one account. Dry-run by default: returns every parsed row with its status (ready / duplicate / invalid). Pass commit=true to write the ready rows; they land in the review queue. Amounts are read in the account's currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
csvYesThe CSV file contents, header line included
commitNoWrite ready rows. Default false (preview only).
account_idYes
include_duplicatesNoWith commit, also write rows flagged as duplicates

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

The description adds substantial behavioral context beyond annotations: the default is non-writing, commit has the side effect of writing rows into the review queue, and each row is returned as ready/duplicate/invalid. It also communicates currency handling ('Amounts are read in the account's currency'), which is not visible in the structured annotations.

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

Conciseness5/5

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

The description is short and front-loaded, with no filler. It packs the main action, default behavior, commit behavior, and currency rule into four focused sentences. Every sentence adds information not already in the schema or annotations.

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

Completeness4/5

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

For a tool with an output schema, the description is almost complete: it explains default behavior, commit flow, statuses, and the review queue. It does not specify how CSV rows are parsed into categories or how duplicates are detected, but the dry-run statuses and output schema make the tool safely usable initially.

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

Parameters4/5

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

The schema describes csv, commit, and include_duplicates, but the description adds meaning: commit=true writes ready rows into the review queue, and the dry-run result contains every parsed row with a status. It also adds a currency interpretation for the csv data that the schema does not provide. Only account_id remains generic, though 'into one account' implies its purpose.

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

Purpose5/5

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

The description opens with a specific action and resource: 'Import a bank statement (CSV text) into one account.' It clearly distinguishes this tool from others like import_holdings by stating the resource type and scope. It also clarifies the two modes (dry-run vs commit), removing 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 Guidelines4/5

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

The description explicitly states the default behavior ('Dry-run by default') and the condition for writing ('Pass commit=true to write the ready rows'), which tells an agent when previewing vs committing is appropriate. It does not name alternatives or exclusions such as when to use record_card_statement or import_holdings, so it stops short of full alternative-based guidance.

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

list_accountsList accountsA
Read-onlyIdempotent
Inspect

Accounts with their currency, institution, region and current balance (yours and any a partner shares with you).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already convey read-only, idempotent, non-destructive behavior. The description adds useful scope (accounts owned by the user plus partner-shared ones) and says the balance is current, but does not discuss response volume, auth, or rate limits; given the strong annotations, this is adequate but not rich.

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 16-word sentence with no filler. The topic 'Accounts' is front-loaded and every clause adds relevant information about returned attributes and access scope.

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 no-parameter read-only list with rich annotations, an output schema, and no nested objects, the description covers the returned fields and access scope well. It does not explicitly state 'returns all accounts' or mention sorting, but nothing required to invoke the tool successfully appears missing.

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

Parameters4/5

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

The tool has zero parameters, so there is no parameter-level meaning for the description to add; the baseline for 0-parameter tools is 4. The description appropriately clarifies output scope instead.

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 identifies the resource (accounts) and enumerates the returned attributes, including partner-shared accounts, which distinguishes it from sibling tools like list_holdings and list_categories. However, the description itself lacks an explicit verb such as 'list' or 'retrieve', relying on the title for the action.

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 when-to-use guidance or comparison with alternative tools is provided. The only indication of intended use comes implicitly from the name/title, with no exclusions or prerequisites stated.

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

list_categoriesList categoriesB
Read-onlyIdempotent
Inspect

Category ids, names, kind (expense/income) and parent for sub-categories.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is well covered. The description adds useful context about the data model — that categories have a kind (expense/income) and that sub-categories have parents. However, it does not disclose ordering, whether top-level categories are included, or behavior on empty results; these gaps are minor for a parameterless read-only tool.

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

Conciseness4/5

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

A single sentence that is efficient and front-loaded with the most relevant information. The phrase 'Category ids, names, kind... and parent' is a fragment lacking a verb (e.g., 'Returns...'), which makes it slightly awkward to parse as a description, but it contains no waste.

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

Completeness4/5

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

Given zero parameters, an existing output schema that documents return fields, and rich read-only annotations, the description is largely adequate. The only notable gap is the ambiguity of whether top-level (non-sub) categories are also returned, since the description emphasizes sub-categories via the 'parent' field. This is a minor omission for such a simple 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 zero parameters, so the baseline is 4 per the rubric. There are no parameters for the description to explain, and the schema carries no burden in this dimension. The description adds no parameter information, but none is needed.

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

Purpose4/5

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

The description names the resource (categories) and specifies the returned fields (ids, names, kind, parent), which tells the agent what data to expect. The action itself ('list') is carried by the title rather than the description, and the description reads as an output-field enumeration rather than a purpose statement. It does not explicitly differentiate from siblings, though the list vs. add/update contrast is self-evident.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. The description mentions 'parent for sub-categories,' which hints at the data model, but there is no when-to-use, when-not-to-use, or mention of related tools such as add_category, update_category, or set_category_rule. An agent must infer the intended use entirely from the title and sibling names.

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

list_debtsList cards and loansA
Read-onlyIdempotent
Inspect

Credit cards (limit, cycle, current balance from the card account) and loans (borrowed and lent, with payments and simple outstanding = principal − payments). Per currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_closedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

The annotations already cover readOnly, idempotent, and non-destructive behavior. The description adds useful behavioral context beyond that: the tool reports balances from the card account rather than a unified account, defines outstanding as a simple principal minus payments calculation, and notes per-currency grouping. This enriches the agent's understanding of response semantics.

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 compact two-sentence definition with no filler. It front-loads the main resource and immediately provides clarifying details in parentheses. Every clause carries information.

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 an output schema is present, the return structure needs no explanationchedron. The description covers the main content well but falls short on the one input parameter, include_closed, leaving a gap that is significant for correct invocation, especially since the schema itself provides no description.

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

Parameters2/5

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

There is one parameter, include_closed, with 0% schema description coverage, and the description does not mention it at all. The parameter name hints at filtering closed items, but the description provides no clarification of what 'closed' means or what the default behavior is, so the agent must guess.

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

Purpose5/5

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

States a specific verb and resource: lists credit cards and loans. The description breaks out exactly what is included for each (card limit, cycle, current balance; loan borrowed/lent, payments, outstanding), distinguishing it clearly from siblings like list_accounts and list_holdings.

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 makes clear what data is covered, so an agent can infer when to call it versus other list tools, but there is no explicit 'when not to use' or reference to alternatives. The usage context is implied by the resource scope, not directly stated.

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

list_groupsList groupsA
Read-onlyIdempotent
Inspect

Your expense groups (trips, flats, events) with members and, per currency, total spent, each member's net position and the payments that would settle everyone up.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNoName or id; omit for all

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value by specifying the returned data structure (members, per-currency totals, net positions, settlement payments), which goes beyond the schema. No contradictions or missing behavioral warnings are apparent.

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 front-loads the resource ('Your expense groups') and packs all essential details without redundancy. Every clause adds relevant information, and there is no fluff or unnecessary wording.

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-only list with one optional parameter and an existing output schema, the description sufficiently explains what the tool returns and from whose perspective. It does not mention sorting, pagination, or group filtering nuances, but these are minor for this simple operation. The presence of an output schema reduces the burden on the description for return-value details.

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

Parameters3/5

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

The single optional parameter 'group' is fully documented in the schema with a clear description ('Name or id; omit for all'), and schema description coverage is 100%. The tool description adds no extra parameter semantics, so the baseline score of 3 applies.

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

Purpose5/5

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

The description uses a specific verb (list) and clearly identifies the resource (expense groups), then enumerates the returned content: members, per-currency totals, net positions, and settlement payments. This distinguishes it from sibling list tools like list_accounts or list_transfers, and clarifies it is not just a basic group listing.

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 its purpose—listing the user's expense groups—but provides no explicit guidance on when to use it instead of alternatives like people_balances or settle_group. There are no when-not-to-use conditions or references to sibling tools, so usage is inferred rather than stated.

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

list_holdingsList holdingsA
Read-onlyIdempotent
Inspect

Investment holdings with quantity held, cost basis, last cached quote and unrealised P/L, per currency. Quotes carry an as-of time; never assume they are live.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_archivedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description is not responsible for those. It adds valuable context about quote freshness ('never assume they are live') and the per-currency grouping, which are not in the annotations. This exceeds the minimum bar set by annotations.

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

Conciseness5/5

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

Two short, focused sentences. The primary purpose and key data caveat are front-loaded, with no filler. Every sentence adds value and is directly relevant to invocation.

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

Completeness3/5

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

The description covers the output data shape and the quote staleness warning, but it omits any explanation of the include_archived parameter. Since an output schema exists, return format need not be detailed, but parameter semantics are a notable gap. For a simple tool, this is acceptable but not fully complete.

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

Parameters2/5

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

The schema has one parameter, include_archived, with no description in the schema (coverage 0%). The tool description does not mention this parameter at all, leaving the agent to guess its meaning and default behavior. With zero schema coverage, the description must compensate, but it fails to explain the parameter or its effect.

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

Purpose5/5

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

The description clearly states the tool lists investment holdings with specific fields (quantity, cost basis, last cached quote, unrealised P/L) and groups them by currency. This is a specific verb-resource pair that distinguishes it from sibling list_* tools like list_accounts or list_categories.

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 through the resource name but does not explicitly mention when to use this versus alternative tools (e.g., import_holdings, update_holding). No exclusions or alternatives are stated, leaving the agent to infer context from the name and sibling set.

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

list_parse_rulesList parse rulesA
Read-onlyIdempotent
Inspect

Your saved parse rules (the bank-alert patterns learned through MCP).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered. The description adds useful domain context by explaining what parse rules are, though it does not disclose any behavioral traits beyond what the annotations already provide.

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?

One sentence with no wasted words, and the key clarification—bank-alert patterns learned through MCP—is front-loaded. It earns its place by explaining the domain without padding.

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

Completeness4/5

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

For a parameterless, read-only list with an output schema and complete safety annotations, the description is nearly complete. The only minor gap is explicit routing guidance among the parse-rule sibling tools, but that does not hinder a correct call.

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

Parameters4/5

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

The tool has zero parameters, so there is no schema burden for the description to compensate for. The description adds meaning by defining the term 'parse rules,' which is sufficient for a parameterless invocation.

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 identifies the resource as saved parse rules and clarifies they are bank-alert patterns learned through MCP, which distinguishes them from transaction parsing or recurrence rules. It relies on the title for the verb 'list,' but the resource scope is unambiguous.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus related parse-rule tools such as save_parse_rule, delete_parse_rule, or test_parse_rule. The read-only listing intent is implied by the name and annotations, but no explicit when-to-use or alternative guidance is provided.

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

list_recurring_rulesList recurring paymentsB
Read-onlyIdempotent
Inspect

Your recurring rules with next run, mode and paused state.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_pausedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is fully covered. The description adds what the result contains, but it does not disclose how include_paused affects the returned set; this is acceptable for a safe read operation with an output schema, though not rich.

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?

A single, short sentence with no filler or repetition. It could be improved by making the action explicit and mentioning the include_paused caveat, but it is appropriately sized.

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

Completeness3/5

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

For a simple optional-parameter list with annotations and an output schema, the core information is present. The main gap is the unexplained include_paused parameter and the lack of any comparison with related recurring-rule or upcoming tools, leaving some ambiguity for an agent.

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

Parameters2/5

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

Schema description coverage is 0% and the description never explains include_paused. The parameter name alone suggests it controls whether paused rules are included, but the default behavior and exact boolean semantics are left ambiguous.

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

Purpose4/5

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

The description clearly identifies the resource (recurring rules) and the displayed fields (next run, mode, paused state), so an agent understands what the tool exposes. However, it is a noun phrase rather than an explicit action and does not differentiate itself from add_recurring_rule or update_recurring_rule beyond the list-style title.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives such as add_recurring_rule, update_recurring_rule, or upcoming. The read-only nature is only implied by the name and title, with no explicit context or exclusions.

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

list_transfersList transfersC
Read-onlyIdempotent
Inspect

Transfers with their effective rate.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
fromNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the 'effective rate' detail, which hints at what is included in the results, but it does not disclose pagination, ordering, date filtering behavior, or whether the 'to' and 'from' parameters are required for scoping. The description does not contradict the annotations.

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

Conciseness4/5

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

The description is extremely short and front-loaded, with no wasted words. However, it is under-specified rather than efficiently concise; the single phrase 'Transfers with their effective rate.' is grammatically incomplete and omits essential operational context. It earns a 4 for brevity but loses a point for being too sparse to be genuinely useful.

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

Completeness2/5

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

Given the tool has two undocumented parameters, no output schema details provided in the description, and a large sibling set with many list_* tools, the description is incomplete. The annotations cover safety, but the description does not explain what 'effective rate' means, how the parameters filter results, or what the response contains. An agent would need to inspect the output schema or guess parameter semantics.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the undocumented 'to' and 'from' parameters. It does not. The description only mentions 'effective rate' and gives no hint that 'to' and 'from' are likely date or account range filters. With two completely undocumented parameters and no explanatory text, the agent cannot infer their meaning from the description.

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

Purpose3/5

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

The description 'Transfers with their effective rate.' identifies the resource (transfers) and a distinguishing attribute (effective rate), but it lacks a specific verb like 'list' or 'retrieve' and does not clarify what the tool actually returns. It is distinguishable from create_transfer and delete_transfer by the resource name, but the description itself is terse and does not explicitly state the operation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as list_accounts, search_transactions, or create_transfer. There is no mention of context, exclusions, or prerequisites. The readOnlyHint and idempotentHint annotations imply it is a safe read operation, but the description itself offers no usage direction.

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

log_transactionLog transactionAInspect

Record an expense (negative amount) or income (positive) on an account, in that account's currency. Category is auto-suggested from the merchant when omitted. Lands in the review queue. Money that leaves or arrives but is not really spending or income (a payout on someone's behalf, a reimbursement, a refundable deposit) goes in with excluded=true: it moves the balance but stays out of insights and budgets.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoISO datetime; default now
noteNo
placeNo
amountYesMajor units; negative = expense
excludedNoNot spending/income: keep out of insights and budgets (balance still moves)
merchantNo
raw_textNoThe bank SMS/email/alert this came from, verbatim. Kept private (never returned by default); lets unparsed_alerts / save_parse_rule teach the app to read this bank on its own.
account_idYes
category_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
dateYes
noteNo
placeNo
amountYesFormatted in the row's currency, e.g. '₹1,200.00'
sourceNo
currencyYes
excludedNoMoves the balance but is not counted as spending or income
merchantNo
account_idYes
confidenceNo
category_idYes
is_reviewedNo
transfer_idNo
amount_minorYes

TDQS

A4.4/5.0
Behavior4/5

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

The description discloses meaningful side effects beyond the generic annotations: entries land in the review queue, category is auto-suggested from the merchant when omitted, and excluded transactions still move the balance but stay out of insights and budgets. Since annotations only carry false flags, the description carries the behavioral burden and mostly meets it.

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?

Four compact sentences, all substantive: core purpose, category behavior, review-queue side effect, and the excluded nuance. There is no filler or unnecessary prose.

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?

Covers the purpose, the required amount semantics, the review-queue side effect, and the non-obvious excluded behavior; the output schema can cover the return shape. It does not mention transfer/group alternatives or failure behavior, which keeps it from being fully complete.

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

Parameters4/5

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

The description adds important meaning beyond the schema: amount sign semantics, account currency, optional category_id auto-suggestion from merchant, and concrete excluded examples. This compensates for the low 44% schema coverage, though note, place, and merchant are left to inference.

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

Purpose5/5

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

States a specific action ('Record') with an explicit resource ('an expense (negative amount) or income (positive) on an account') and even gives the sign convention for amounts. The scope clearly differentiates it from transfer and group-expense siblings without needing to name them.

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?

Gives clear conditions for what belongs here: real expenses/income, with excluded=true for balance-only movements such as reimbursements or refundable deposits. It stops short of explicitly directing the agent to create_transfer for transfers or add_group_expense for group spending, so it lacks a full when-not-to-use statement.

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

net_worthNet worthA
Read-onlyIdempotent
Inspect

The whole picture in one currency: cash (account balances), investments (last quote), what you are owed (loans lent, IOUs, group nets) and what you owe (cards, loans, IOUs, group nets), restated at today's rate. Lists what could not be converted. Per-currency figures stay exact in the other tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoDisplay currency; default the one most of your accounts use

Output Schema

ParametersJSON Schema
NameRequiredDescription
netNoFormatted in the row's currency, e.g. '₹1,200.00'
baseNo
cashNoFormatted in the row's currency, e.g. '₹1,200.00'
noteNo
as_ofNo
emptyNo
linesNo
you_oweNoFormatted in the row's currency, e.g. '₹1,200.00'
estimateNo
investmentsNoFormatted in the row's currency, e.g. '₹1,200.00'
owed_to_youNoFormatted in the row's currency, e.g. '₹1,200.00'
rates_sourceNo
not_convertedNo

TDQS

A4.5/5.0
Behavior5/5

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

Despite strong annotations (readOnly, idempotent, non-destructive), the description adds meaningful behavior beyond them: investments use the 'last quote,' amounts are 'restated at today's rate,' and unconvertible items are explicitly listed. This gives the agent an accurate model of what the tool actually does with data, which annotations do not convey.

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

Conciseness5/5

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

The description is two tight sentences with no filler. The primary idea is front-loaded, the component breakdown is scannable, and the caveat about unconvertible items and per-currency exactness is placed at the end without bloating the message.

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

Completeness5/5

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

For a read-only aggregation tool with a single optional parameter, an output schema, and strong safety annotations, the description covers the important operational details: valuation basis, scope of assets/liabilities, conversion behavior, and failure handling. An agent has enough context to call this tool correctly and interpret its purpose relative to siblings.

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 single optional currency parameter is already documented in the schema. The description reinforces that the whole summary is expressed in one currency and restated at today's rate, but it does not add new parameter-specific meaning beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly defines the tool as a consolidated net-worth snapshot, listing exactly which components are included: cash, investments, amounts owed, and amounts owing. It distinguishes this aggregate view from the many raw list/ledger siblings by emphasizing 'the whole picture in one currency.' The intent is unambiguous even though it relies on 'restated' and 'Lists' rather than a single imperative verb.

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

Usage Guidelines4/5

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

The description implies when to use this tool: when a consolidated multi-currency picture is needed. It also gives guidance to prefer other tools when exact per-currency figures are required: 'Per-currency figures stay exact in the other tools.' It does not name specific sibling tools like list_holdings or list_debts, but the routing signal is clear.

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

parse_transaction_textParse bank messageA
Read-onlyIdempotent
Inspect

Run a bank SMS/email body through the same rule engine the app uses. Returns amount, currency, direction, merchant, last4, date and a confidence; does NOT save. Use log_transaction to record it.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
sender_idNoSMS sender id like HDFCBK, if known
account_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which fully cover the safety profile. The description adds 'does NOT save' (redundant) and 'same rule engine the app uses' (context, not behavioral). No contradiction, but little extra beyond annotations.

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

Conciseness5/5

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

The description is three short sentences, front-loaded with the action, then returns, then a routing hint. No wasted words, and every sentence adds value.

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?

The description covers the core purpose, the safety (via annotations), the return fields (likely in the output schema), and provides a clear alternative for recording. The main gap is parameter semantics for account_id and sender_id (beyond schema) and a lack of differentiation from test_parse_rule, but overall it is fairly complete for a read-only parse tool.

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

Parameters2/5

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

Schema description coverage is only 33% (sender_id has a description). The description implicitly explains 'text' as the bank SMS/email body but does not explain account_id or sender_id beyond what the schema provides. With low schema coverage, the description should compensate more for the remaining parameters but does not.

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

Purpose5/5

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

The description states a clear verb and resource: 'Run a bank SMS/email body through the same rule engine the app uses.' It also specifies the returned fields and explicitly says it does NOT save, which differentiates it from log_transaction. This is specific and unambiguous.

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

Usage Guidelines4/5

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

The description gives an explicit when-not: 'does NOT save' and directs to 'Use log_transaction to record it,' which is a clear alternative for recording. However, it does not mention other similar tools like test_parse_rule or save_parse_rule, so the guidance is partial but still useful.

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

people_balancesWho owes whomA
Read-onlyIdempotent
Inspect

Who owes you what from split bills (and what you owe them), per person per currency, with each split and settlement. Positive balance = they owe you.

ParametersJSON Schema
NameRequiredDescriptionDefault
personNoName filter, case-insensitive

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context: balances are per person per currency, include both splits and settlements, and define the sign of the balance. This goes beyond the annotations without contradicting them.

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, information-dense sentence that front-loads the core purpose and immediately clarifies the sign convention. There is no redundant filler or repetition of schema details.

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

Completeness5/5

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

The tool is simple: one optional parameter, full schema coverage, an output schema, and read-only/idempotent annotations. The description covers the essential semantics needed to call and interpret the tool correctly, leaving no significant gaps.

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

Parameters3/5

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

Schema description coverage is 100% and the single optional 'person' parameter is already documented as a case-insensitive name filter. The tool description adds context about per-person/currency granularity but does not add new parameter-level meaning beyond the schema, so the baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states what the tool does: it reports who owes whom from split bills, per person per currency, including splits and settlements. The phrase 'from split bills' distinguishes it from broader debt/loan tools, and the sign convention ('Positive balance = they owe you') makes the output interpretable.

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 gives clear context: it is for split-bill balances and settlements rather than general debts or loans. It does not explicitly name alternatives like list_debts, but the scope is specific enough that an agent can infer when to use it.

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

reconcile_statementReconcile statementA
Destructive
Inspect

Reconcile one account against a bank statement for a period. Give the statement as CSV text or as rows (date, amount, description) you read off a PDF. Reports matched lines, lines the app is missing, ledger rows the bank never saw, and the closing-balance difference. Dry-run unless commit=true; then the missing rows are added as bank-confirmed, the unexplained ledger rows go to the review queue, and the run is recorded.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoPeriod end, inclusive (ISO). Default: latest statement row
csvNoStatement CSV text, header included
fromNoPeriod start (ISO). Default: earliest statement row
rowsNoAlternative to csv: rows you extracted yourself
commitNoApply: add missing rows, flag unexplained ledger rows. Default false
account_idYes
window_daysNoHow far apart a statement date and a ledger date may be to still match. Default 3
closing_balanceNoThe statement's closing balance in major units, to check the ledger's running total
opening_balanceNoOptional; with closing_balance, checks the statement's own arithmetic

Output Schema

ParametersJSON Schema
NameRequiredDescription
addedYes
countsYes
periodYes
run_idYes
accountYes
dry_runYes
flaggedYes
currencyYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark destructiveHint=true, but the description goes further: it details the dry-run default, the exact side effects of commit=true (adding missing rows as bank-confirmed, flagging unexplained ledger rows to review queue, recording the run), and the report contents. This is rich behavioral disclosure beyond the annotations, with no contradiction.

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

Conciseness5/5

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

Two sentences, no filler. The core purpose is front-loaded, and the second sentence efficiently enumerates the report and commit behavior. Every clause earns its place; the description is both concise and information-dense.

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

Completeness5/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 (9 parameters, mostly optional), the presence of an output schema, and the detailed annotations, the description covers what an agent needs: input formats, report items, dry-run vs commit semantics, and side effects. No critical information is missing for correct invocation.

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

Parameters4/5

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

Schema coverage is 89% (all but account_id described). The description adds semantic context for key parameters: it explains the two input modes (csv vs rows) and the effect of commit, which is not fully captured in the schema. It does not re-describe each parameter but adds meaningful usage context, elevating it above the baseline.

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

Purpose5/5

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

The description opens with a precise verb and resource: 'Reconcile one account against a bank statement for a period.' It clearly distinguishes from siblings like import_statement (which imports statements) and set_account_balance (which sets a balance) by specifying the reconciliation scope and the report output. The purpose is unambiguous.

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

Usage Guidelines4/5

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

The description explains how to supply the statement (CSV text or rows from a PDF) and the dry-run/commit workflow, which gives clear context. However, it does not explicitly name alternatives like import_statement or state when NOT to use this tool (e.g., 'for simple statement import, use import_statement instead'). The usage is clear but lacks explicit exclusions.

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

record_card_statementRecord card statementA
Destructive
Inspect

One credit-card statement, as the bank printed it. Give the statement date and the closing balance owed and the ledger is anchored to the bank: card terms (limit, statement day, due date, minimum due) are set from the statement, the lines you list are matched or added, and whatever still separates the ledger from the closing balance becomes one dated 'Balance adjustment' row that never counts as spending. Send statements oldest first, one call each; re-sending the same statement date replaces its adjustment instead of stacking. Dry-run unless commit=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
bankNoIssuer name for the notes, e.g. 'Emirates NBD'
feesNoTotal fees this period; used only when lines are not given
linesNoThe transaction lines, if you read them. Leave out to anchor the balance only.
commitNoWrite it. Default false: report what would change
interestNoTotal interest/finance charges this period; used only when lines are not given
account_idYesAn account of type card
apr_percentNoAnnual rate if the statement states one (a monthly rate × 12)
minimum_dueNoMinimum payment due, as printed
credit_limitNoAs printed. Needed the first time a card is recorded
statement_dateYesThe statement's closing date (ISO or the bank's format)
closing_balanceYesTotal outstanding at the statement date, positive as printed (the 'current balance' / 'closing balance', not the minimum or total *due*). Negative only if the bank owes you.
payment_due_dateNoAs printed; 'immediate' or 'overdue' is accepted
previous_balanceNoThe previous statement's closing balance as printed, to check the statement's own arithmetic

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: the dry-run-until-commit=true gate, side-effect on card terms (limit, statement day, due date, minimum due), the match-or-add behavior for lines, the auto-generated 'Balance adjustment' row that "never counts as spending," and replacement-on-reread. The re-send replacement nuance is consistent with idempotentHint=false (the tool is still not globally idempotent).

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?

A single dense ~90-word paragraph with the core purpose front-loaded and every sentence carrying information. It is appropriately sized for a 13-parameter tool, though the mid-sentence "whatever still separates the ledger from the closing balance" phrasing is somewhat convoluted and could be tighter.

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 complex, write-behind tool, the description covers the main workflow end to end: anchoring, terms-setting, line handling, adjustment creation, ordering, re-send, and dry-run. The output schema and 100%-covered input schema carry the remaining burden; the description could have acknowledged the accounting-only params (fees, interest, apr_percent, previous_balance) but their schema descriptions already say they are used only when lines are absent.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real relational meaning: it identifies statement_date + closing_balance as the pair that anchors the ledger, explains that lines are matched or added against the closing balance, and positions commit as the write gate. This goes beyond the schema's literal per-field descriptions.

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 opening phrase — "One credit-card statement, as the bank printed it" — names a specific resource, and the body makes the action concrete: give statement date + closing balance and the ledger is anchored to the bank. It clearly distinguishes itself from siblings like import_statement or reconcile_statement by scoping to card statements and by describing the anchoring behavior.

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?

Gives explicit procedural guidance: "Send statements oldest first, one call each" and explains re-send semantics ("re-sending the same statement date replaces its adjustment instead of stacking"), plus the dry-run default. It does not, however, name alternatives or state when to prefer this over siblings such as import_statement or set_credit_card, so exclusions are implicit rather than explicit.

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

record_loan_paymentRecord loan paymentAInspect

An instalment or prepayment on a loan (or money received back on one you lent). Optionally the bank account it moved through, which also writes the cash row.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
kindNo
noteNo
amountYes
loan_idYes
account_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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

The annotations already indicate a write operation (readOnlyHint=false), and the description adds a meaningful side-effect: optionally writing the cash row when account_id is provided. It does not contradict the annotations and provides behavioral context beyond the structured fields.

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 tight sentences with no filler. It front-loads the core purpose and then adds the important side-effect in the second sentence. Every phrase contributes meaning.

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 six-parameter record operation with zero schema description coverage, the description covers the core behavior but leaves some parameter semantics (date, note) and potential effects on the loan balance unexplained. The output schema and annotations reduce some burden, but the description alone is not fully complete for all inputs.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It clarifies the meaning of 'kind' (instalment vs prepayment) and 'account_id' (moved through the bank account, writes cash row), while 'loan_id' and 'amount' are largely inferable from names. However, 'date' and 'note' receive no semantic explanation.

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

Purpose4/5

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

The description states a specific action ('record') on a clear resource ('loan payment') and indicates two kinds of payments (instalment/prepayment) plus the lending direction. It does not explicitly contrast with siblings like add_loan, update_loan, or log_transaction, but the operation is specific enough to be identifiable.

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

Usage Guidelines2/5

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

The description gives useful guidance for when to include the optional bank account ('which also writes the cash row'), but it does not say when to use this tool versus alternatives such as create_transfer or log_transaction. No exclusions or explicit routing to sibling tools are provided.

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

record_lotRecord buy or sellAInspect

Record a buy or sell of a holding: quantity, total amount paid/received (before fee), optional fee, and optionally the bank account the cash moved through (writes the cash row too).

ParametersJSON Schema
NameRequiredDescriptionDefault
feeNo
dateNoISO; default now
kindYes
noteNo
amountYesTotal consideration in the holding's currency, before fee
holdingYesHolding id, symbol or name
quantityYesUnits (fractional allowed)
account_idNoBank account for the cash side, same currency

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With readOnlyHint=false and idempotentHint=false already signaling a non-idempotent write, the description adds useful behavioral context beyond annotations: it discloses that providing an account also writes the cash row ticket and that the amount is the total before fee. It does not contradict the annotations.

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

Conciseness4/5

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

The description is a single dense sentence with no filler, front-loading the core action and then compactly listing optional inputs and side effects. The parenthetical about the cash row is slightly compressed but still earns its place because it explains an important non-obvious behavior.

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 output schema exists and the annotations already communicate the write/non-idempotent nature, the description is largely complete for correct invocation: it names required inputs, clarifies amount semantics, and discloses the conditional cash-row effect. A minor gap is the lack of guidance on edge cases like holding ambiguity or duplicate recording, but that is not essential for a straightforward call.

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 63%, and the description reinforces some parameter meanings (amount before fee, optional fee, optional account causing a cash row), but much of this repeats the schema's existing descriptions. Parameters like date and note are not elaborated in the description, and kind is only implied by "buy or sell," so the description adds some but not extensive value beyond the schema.

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

Purpose5/5

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

The opening phrase "Record a buy or sell of a holding" gives a specific verb, resource, and action, making it immediately distinguishable from sibling write tools like record_settlement or record_loan_payment. It also lists the key inputs (quantity, amount, fee, optional account) and the notable side effect of writing a cash row, leaving 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 Guidelines4/5

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

The description clearly states when to use the tool: to record buy or sell events for a holding. However, it does not explicitly mention when not to use it or point to alternatives such as log_transaction for general cash movements or create_transfer for pure transfers, so an agent must infer the boundary from sibling names and the holding-specific language.

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

record_settlementRecord settlementAInspect

Someone paid you back (or you paid them) for split bills. Positive amount = they paid you. Optionally also records the money on one of your accounts. The phone picks it up on its next sync.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoISO date; default now
noteNoe.g. UPI, cash
amountYesMajor units in `currency`; positive = they paid you, negative = you paid them
personYesName; created if unknown
currencyYes
account_idNoAlso log it as income/expense on this account (must be the same currency)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

The description adds useful behavioral context beyond the annotations: it explains the sign convention, notes the optional side-effect of recording the payment against an account, and mentions that the phone picks it up on next sync. Annotations alone do not disclose these details, so this is meaningful extra 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?

Three short sentences, front-loaded with purpose and amount semantics. There is no redundant wording, and every sentence contributes practical information.

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 six-parameter write operation, the description covers the core scenario, sign convention, optional account effect, and sync behavior. The output schema and structured parameter descriptions fill remaining details. The only notable completeness gap is the lack of sibling routing guidance.

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?

Parameter schema coverage is 83%, so most parameter semantics are already documented. The description reinforces the amount-direction meaning and the optional account linkage, but it does not substantially extend what the schema descriptions already provide, warranting the baseline score.

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

Purpose4/5

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

The description clearly states the operation: recording a repayment between individuals for split bills, and explicitly clarifies that positive amount means 'they paid you' and negative means 'you paid them.' While it is specific, it does not explicitly distinguish itself from sibling tools such as settle_group or record_loan_payment, leaving some differentiation to inference.

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 intended scenario is clear: someone repaid you for a previously split bill. However, there is no explicit when-to-use versus alternatives, no exclusions, and no reference to related tools like settle_group or log_transaction. The guidance is implied but not stated.

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

resolve_planned_expenseResolve planned expenseA
Destructive
Inspect

A planned expense happened (log it as a transaction on an account, optionally with the real amount/date) or won't happen (skip).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
dateNoActual date; default now
actionYes
amountNoActual amount if it differed
account_idNoRequired for log when the plan has no account

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already flag destructiveHint=true, so the description does not need to repeat mutating behavior. It adds that logging creates a transaction on an account, which is useful, but it does not disclose side effects on the planned expense itself (e.g., deletion or marking as resolved). This is a minor gap but not contradictory.

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

Conciseness4/5

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

The description is a single, efficient sentence that front-loads the core purpose and the two possible actions. It is concise and easy to parse, with no wasted words. It could be slightly more formal but is well-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 moderate complexity (5 params, 2 required) and the presence of an output schema, the description covers the essential scenarios (log vs. skip) adequately. It does not describe every edge case (e.g., default date, account handling), but the schema fills those gaps. It is complete enough for correct invocation in most cases.

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

Parameters2/5

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

Schema description coverage is 60%, and the description adds no parameter-level details. It does not explain the meaning of 'id' (planned expense identifier) or the 'action' enum beyond what the schema lists, nor does it clarify conditional requirements like account_id for log when the plan lacks an account. Since coverage is not high, the description should compensate but fails to.

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

Purpose5/5

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

The description clearly states the tool's purpose: resolving a planned expense by either logging it as a transaction (with optional real amount/date) or skipping it. It uses a specific verb ('resolve') and resource ('planned expense'), and implicitly distinguishes from siblings like add_planned_expense (creation) and log_transaction (general logging).

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 context: use it when a planned expense has happened (log it) or won't happen (skip). This is a specific trigger condition, though it does not explicitly name alternatives or exclusions. It is sufficient for an agent to infer when to invoke this tool over generic transaction tools.

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

review_queueReview queueA
Read-onlyIdempotent
Inspect

Transactions awaiting the user's confirmation (auto-captured or created via MCP).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful context about what kinds of transactions appear in the queue, but it does not disclose ordering, pagination, or how confirmation is expected to happen.

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?

One sentence with no filler, front-loading the queue's defining trait. Every word earns its place.

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

Completeness5/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, an output schema, and read-only annotations, the description covers what an agent needs to understand the queue's purpose and invoke the tool correctly. No critical invocation details are missing.

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

Parameters4/5

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

The tool has zero parameterschend. No parameter documentation is needed, and there is nothing for the description to add beyond the empty schema. Baseline 4 is 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 names a specific resource—transactions awaiting the user's confirmation—and adds inclusion criteria (auto-captured or created via MCP). It is clear enough to distinguish from transaction creation/search tools, though it never states an explicit verb like 'list' or 'retrieve'.

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

Usage Guidelines2/5

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

There is no guidance about when to call this tool versus alternatives such as search_transactions or unparsed_alerts. The description only defines the queue's contents, so the agent must infer usage from the name and title.

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

save_parse_ruleSave parse ruleA
Destructive
Inspect

Save a parse rule for your account. It must match at least one stored alert with the right amount (or pass force=true). Synced to your phone, which then reads that bank's alerts by itself.

ParametersJSON Schema
NameRequiredDescriptionDefault
ruleYes
forceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already carry the safety profile (readOnlyHint=false, destructiveHint=true), so the burden on the description is lower. The description adds useful behavioral context beyond annotations: validation requires a matching stored alert, force bypasses this, and the rule syncs to the phone for autonomous alert reading. It does not explicitly disclose overwrite behavior, but the destructiveHint annotation partially covers that.

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?

Three sentences, each earning its place: the first states the core action, the second gives the key validation behavior, and the third explains the sync side-effect. No filler or repetition, and the most identifying information is front-loaded.

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

Completeness4/5

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

The output schema exists, so the description need not explain return values. The presence of a nested rule object is substantial, but the schema covers its fields. The description adds the essential runtime behavior around alert matching, force, and phone sync. It misses only explicit guidance about overwriting existing rules and how this relates to test_parse_rule, which keeps it from a 5.

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 for the top-level parameters is 0%, so the description must compensate. It adds meaning to the force parameter by explaining it bypasses the stored-alert match requirement. However, it does little to explain the rule object's structure; that burden falls on the nested schema, which does contain rich descriptions. This is adequate but not fully compensating.

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

Purpose5/5

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

The description opens with a specific verb and object: "Save a parse rule for your account," which clearly identifies the action, resource, and scope. The follow-up about matching a stored alert or passing force=true further distinguishes this from sibling tools like list_parse_rules, test_parse_rule, and delete_parse_rule.

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

Usage Guidelines3/5

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

The description states an important acceptance condition: the rule must match a stored alert with the right amount, or force=true must be passed. This implies when the tool can be used, but it never explicitly explains when to choose this over test_parse_rule or delete_parse_rule, so the guidance is implied rather than stated.

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

search_transactionsSearch transactionsB
Read-onlyIdempotent
Inspect

Search transactions. Each row carries its own currency; do not add rows across currencies.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoISO date, exclusive
fromNoISO date, inclusive
textNo
limitNo
currencyNo
account_idNo
category_idNo
include_rawNoInclude original SMS/email text. Off by default.
unreviewed_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes

TDQS

B3.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds a valuable behavioral rule: rows each carry their own currency and must not be summed across currencies. This is exactly the kind of semantic context that goes beyond structured annotations.

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

Conciseness3/5

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

Very short, but the first sentence 'Search transactions' merely restates the title and adds no information. The second sentence is useful and specific. Overall it is efficient but slightly redundant in the opening.

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?

An output schema exists and annotations cover read-only/idempotent behavior, reducing the burden on the description. However, with 9 optional parameters and no required ones, it's unclear how filters combine, what a bare call returns, how limit applies, or which fields text searches. The currency warning addresses one important behavior but leaves significant gaps.

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

Parameters2/5

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

Schema description coverage is only 33%, covering to, from, and include_raw. Six parameters (text, limit, currency, account_id, category_id, unreviewed_only) have no schema descriptions. The description adds no parameter-level meaning and never mentions these filters. The currency note refers to result rows, not the currency parameter's semantics.

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

Purpose4/5

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

The description clearly names a verb and resource: 'Search transactions.' Since there is no sibling named 'list_transactions,' the tool's purpose is unambiguous even though the title restates the name. It doesn't explicitly differentiate from sibling tools, but none of them seem to overlap directly.

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 when-to-use guidance, alternative selection, or conditions are provided. The only usage note is a post-aggregation warning about currencies, which is not guidance on when to invoke this tool vs siblings like review_queue, unparsed_alerts, or list_* tools.

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

set_account_balanceSet account balanceAInspect

Make an account's balance equal what the bank shows, by recording one adjustment row for the difference (outside spending). Use after the user reads a balance off their banking app; prefer reconcile_statement when a statement is available.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
as_ofNoISO date; default now
balanceYesThe balance right now, major units
account_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only state readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the description carries the burden of explaining side effects. It does this well by disclosing that the tool records exactly one adjustment row for the difference and categorizes it as outside spending, which is meaningful behavioral context beyond the annotations.

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

Conciseness5/5

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

Two sentences with no wasted words. The core purpose and mechanism are front-loaded, followed by usage guidance and the alternative tool, making the description quick to scan and act on.

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 4-parameter tool with an output schema, the description covers purpose, mechanism, trigger condition, and the alternative. It is complete enough for most calls, though it leaves slight ambiguity around when the optional note and as_of parameters should be used.

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 50%, covering balance and as_of, but note and account_id are undocumented in the schema. The description adds useful context that the balance is 'what the bank shows' and that an adjustment row captures the difference, but it does not fully compensate for the missing parameter semantics of note and account_id.

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

Purpose5/5

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

The description states a specific verb-resource pair ('Make an account's balance equal what the bank shows') and explains the mechanism in concrete terms: recording one adjustment row for the difference. It also distinguishes itself from the sibling reconcile_statement, giving an agent enough to tell the tools apart.

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 is explicit about when to use it: after the user reads a balance off their banking app. It also names the alternative condition, 'prefer reconcile_statement when a statement is available', which directly routes the agent to the correct sibling.

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

set_budgetSet budgetA
Destructive
Inspect

Set (or replace) a spending limit for a category in one currency per week/month/year. Pass limit 0 to remove it. budget_status reports progress.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitYesMajor units; 0 removes the budget
periodNoDefault monthly
currencyYes
category_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already convey destructive/write behavior, so the description adds valuable specifics: set or replace, removal via limit 0, one currency per period. It does not go into failure modes or auth, but the main behavioral traits are transparent.

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

Conciseness5/5

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

Three short sentences, key behavior first, no filler. The budget_status pointer is purposeful.

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?

The core semantics for correct invocation are present, and an output schema exists. It could have stated the monthly default explicitly, but the schema already supplies that, so nothing critical is missing for this simple tool.

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 descriptions cover limit and period; description adds the one-currency rule and reinforces removal via zero. However, category_id and currency remain minimally explained in both description and schema, so the description only partially compensates for the 50% 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?

States a specific verb ('Set') and resource ('spending limit for a category'), clarifies replace semantics, and distinguishes from budget_status by naming it as the progress reporter. The scope is immediately recognizable among siblings like set_category_rule.

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?

Gives clear context: use it to set or replace a category budget, pass 0 to remove, and consult budget_status for progress. It lacks explicit when-not-to-use conditions compared with other mutation tools, but the context is sufficient.

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

set_category_ruleSet category ruleA
Destructive
Inspect

Teach the categoriser: merchants matching a pattern get this category from now on (on the phone too). Optionally re-categorise the existing transactions that match.

ParametersJSON Schema
NameRequiredDescriptionDefault
patternYesRegex tested against the merchant, case-insensitive, e.g. '^arabia taxi' or 'talabat'
category_idYes
apply_to_existingNoAlso update unreviewed past transactions whose merchant matches. Default false

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

It adds useful behavioral context beyond annotations: the rule persists ('from now on'), syncs ('on the phone too'), and can re-categorise existing transactions. This complements the destructiveHint=true annotation without contradiction, though it does not cover permissions or failure modes.

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

Conciseness5/5

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

The description is a single compact, front-loaded statement. It states the core behavior first, then adds the optional mass-update effect, with no filler or redundant detail.

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 an output schema exists and annotations already signal destructiveness, the description covers the main agent-relevant behavior: persistence, cross-device effect, and optional re-categorisation. It does not explain whether an identical pattern overwrites an existing rule or how category_id is validated, but these are secondary for basic 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 coverage is 67%: pattern and apply_to_existing are well-described. The description reinforces these but adds little new meaning, and category_id remains undocumented in both schema and description—an agent must infer the value type from sibling tools like list_categories.

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 and resource: 'Teach the categoriser' so matching merchants get a category from now on. It distinguishes itself from category-creation tools like add_category by framing the action as pattern-to-category rule, though it does not explicitly name sibling alternatives.

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

Usage Guidelines3/5

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

The description implies when to use it: when you want persistent, pattern-based merchant categorization. However, it does not explicitly say when not to use it or point to alternatives like save_parse_rule or update_category, leaving some inference to the agent.

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

set_credit_cardSet card detailsA
Destructive
Inspect

Give a card account its terms so due dates and utilisation work: limit, statement day, days until due, minimum due. Creates or replaces.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesAn account of type card
apr_percentNo
credit_limitYes
statement_dayYes
minimum_due_floorNo
minimum_due_percentNoDefault 5
due_days_after_statementNoDefault 20

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already signal destructiveHint=true, and the description adds the important behavioral detail that the operation 'creates or replaces' the card's terms. This clarifies that existing values may be overwritten. It does not add extraneous behavioral guarantees, but it provides meaningful context beyond the annotations.

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

Conciseness5/5

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

The description is a single well-structured sentence that front-loads the core purpose, lists the relevant terms, and ends with the important upsert behavior. Every phrase earns its place; there is no filler.

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

Completeness3/5

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

The output schema and annotations reduce some burden, and the description covers the core card-term concepts. Still, apr_percent is left undocumented and the two minimum-due parameters are conflated, so an agent cannot fully infer the semantics of all seven parameters. It is adequate but not complete.

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

Parameters3/5

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

With schema description coverage at only 43%, the description helps by naming credit_limit, statement_day, due_days_after_statement, and minimum due. However, it omits apr_percent entirely and lumps minimum_due_percent and minimum_due_floor together as 'minimum due', leaving ambiguity. It partially compensates for the schema gap but not fully.

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 identifies the operation: giving a card account its terms, with the key fields listed (limit, statement day, days until due, minimum due). It also adds the create-or-replace behavior, which helps distinguish it from plain update tools. It does not explicitly name a sibling for contrast, so it stops short of a 5.

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

Usage Guidelines3/5

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

The intended use is implied: use this when configuring a card account's terms. There is no explicit 'use when' or 'use instead of' statement, and no guidance about when update_account or set_account_balance would be more appropriate. The context is clear but only by inference.

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

set_quoteSet priceA
Destructive
Inspect

Record the current price of a holding by hand (e.g. from the broker app), with an as-of time. The app refreshes live sources on its own; this is for holdings without one.

ParametersJSON Schema
NameRequiredDescriptionDefault
as_ofNo
priceYesPer unit, in the holding's currency
holdingYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already communicate mutation and destructive potential (readOnlyHint=false, destructiveHint=true, idempotentHint=false), so the description only needs to add context. It adds that this is a manual record with an as-of time, but it does not disclose whether an existing quote is overwritten or what happens to prior values.

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 no filler: the action is front-loaded and the second sentence provides necessary context about live-source refresh. Every word earns its place.

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

Completeness3/5

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

The tool is simple, has an output schema, and annotations cover the destructive/mutation profile, so the description does not need to explain return values or safety. The main gaps are the meanings of holding and the representation of as_of, which an agent needs for correct invocation.

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

Parameters2/5

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

Schema description coverage is only 33%, so the description must compensate for undocumented parameters. It clarifies as_of as a point in time, but not its expected format, and leaves holding entirely unexplained, making it hard for an agent to know what value to supply.

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

Purpose5/5

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

States a specific verb ('Record') and resource ('current price of a holding'), and scopes the action to manual entry from the broker app. The contrast with the app's own live-source refresh clearly differentiates this from related holding tools.

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?

Explicitly indicates when to use the tool: for holdings without a live source. It also states that the app refreshes live sources on its own, implying this tool should not be used for those holdings, though it does not name a specific alternative sibling tool.

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

settle_groupSettle groupB
Destructive
Inspect

Record a payment between two group members that squares up part of the group's balance (e.g. Rahul paid you ₹2,000 for the trip). Use list_groups → settle_up for the suggested payments.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesMember who received
dateNo
fromYesMember who paid
noteNo
groupYes
amountYes
currencyNoDefault: the group's home currency
account_idNoYour account the money left or landed in (when you are one of the two)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already signal destructiveHint=true and readOnlyHint=false. The description adds useful context that the action alters the group balance ('squares up part of the group's balance'), but it does not disclose consequences such as reversibility or how repeated settlements are handled. No contradiction with annotations.

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

Conciseness5/5

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

The description is two concise sentences with no filler. It front-loads the core action and effect, then adds a useful workflow hint, making every sentence earn its place.

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

Completeness4/5

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

Given the annotations, output schema, and the presence of good parameter descriptions for from, to, currency, and account_id, the description covers the essential behavioral and workflow context. It could be more complete by differentiating from 'record_settlement' and clarifying optional parameters, but it is largely sufficient for correct invocation.

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

Parameters2/5

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

Schema description coverage is only 50%, so the description should compensate for undocumented parameters like group, date, note, and amount. The example ('Rahul paid you ₹2,000 for the trip') implies from/to/amount/group semantics, but it does not explicitly explain these parameters or the optional fields, leaving a meaningful gap.

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

Purpose4/5

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

The description states a specific action ('Record a payment'), the resource ('between two group members'), and the effect ('squares up part of the group's balance'), with a concrete example. It does not, however, distinguish itself from the similar sibling tool 'record_settlement', so it falls short of a 5.

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

Usage Guidelines3/5

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

The description gives a workflow hint ('Use list_groups → settle_up for the suggested payments'), which implies a proper context for using the tool. It does not explicitly state when not to use this tool, nor does it mention the overlapping sibling 'record_settlement' as an alternative.

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

spending_summarySpending summaryA
Read-onlyIdempotent
Inspect

Spent / received totals for a period, ONE BLOCK PER CURRENCY, with a per-category breakdown. Never sums across currencies. Transfer legs are excluded.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYes
fromYes
currencyNo
group_byNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

The description adds substantial behavioral context beyond the read-only/idempotent annotations: it specifies one block per currency, never sums across currencies, and excludes transfer legs. These calculation and filtering behaviors are not present in the annotations or schema and are valuable for correct interpretation of results.

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?

Three tightly written sentences with no filler. The main purpose is front-loaded, followed by two critical constraints. Every sentence earns its place and the structure makes the key facts easy to scan.

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

Completeness3/5

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

The description is behavior-rich but not fully complete for a tool with 4 parameters and zero schema coverage. It lacks explicit guidance on the currency parameter (optional? filter?) and only hints at group_by by mentioning categories, omitting other valid groupings. Given the output schema exists, return values are covered, but input semantics remain partially underspecified.

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

Parameters3/5

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

With 0% schema description coverage, the description carries the burden of explaining parameters. It partially compensates: 'period' implies from/to are date boundaries, 'one block per currency' hints at currency grouping, and 'per-category breakdown' relates to group_by. However, it does not explain the currency parameter's optionality or filtering role, nor does it mention group_by's other allowed values (parent_category, merchant, account), leaving meaningful 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 states a specific verb and resource: it returns spent/received totals for a period, with currency and category breakdowns. It distinguishes itself from siblings by highlighting the per-currency block and the exclusion of transfer legs, which sets it apart from tools like spending_trend or budget_status.

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 (period summary with category breakdown) but never explicitly states when to use this tool over siblings like spending_trend or search_transactions. It gives no when-not guidance or alternative tool names, so the agent must infer the use case from the described behavior.

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

spending_trendSpending trendA
Read-onlyIdempotent
Inspect

Spent and received per calendar month for the last N months, one series per currency (never summed across). Transfer legs excluded.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthsNo
currencyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile with readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description adds useful behavioral detail beyond them: per-currency series, 'never summed across' semantics, and exclusion of transfer legs. It does not contradict any annotation.

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 contain only relevant, substantive information. The main behavior is front-loaded and every clause adds detail, with no filler or redundant restatement of the tool name.

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-only report with an output schema, the description captures the core scope, aggregation rule, and transfer-leg exclusion. The only real gap is the behavior of an omitted optional currency parameter, which is minor given the tool's low complexity.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate for the parameters. It does clarify that 'months' controls the trailing window and 'currency' drives the series grouping, but it leaves unspecified currency format, default behavior when currency is omitted, and how the two parameters interact.

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 tool's output: spent and received amounts per calendar month for a trailing window, with one series per currency and no cross-currency summation. It also distinguishes itself by surfacing 'received' rather than only spending and by explicitly excluding transfer legs.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus related reporting siblings such as spending_summary, budget_status, chart, or net_worth. The intended use is only implicit in the metric definition; no alternatives or exclusions are mentioned.

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

split_transactionSplit a transactionAInspect

Split one of your expenses with other people: each owes their share until settled. Amounts omitted → equal split with you included (you keep the rounding). Replaces any existing split on that transaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoLabel for the IOU, e.g. 'Dinner at Toit'
peopleYes
transaction_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations provide no hints (all false), so the description carries the full burden. It discloses that it replaces any existing split and explains the equal-split default with rounding. It does not mention failure conditions or authorization needs, but the main behavioral traits are covered adequately 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?

Two concise sentences: the first states purpose and the second explains the default behavior and replacement semantics. Front-loaded, no fluff, every sentence earns its place.

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

Completeness3/5

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

For a mutation with no annotations and low schema coverage, the description covers core behavior but lacks details on prerequisites (e.g., transaction must exist and be an expense), error cases, or when to use this vs other tools. The presence of an output schema reduces the need to explain returns, but more operational context would help.

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 low (33%) – only note has a description. The description clarifies that omitted amounts default to equal split, which adds meaning to the optional amount parameter. However, transaction_id and the overall people array structure are not elaborated beyond the schema, so the description only partially compensates for the coverage gap.

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

Purpose5/5

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

States a specific verb (split) and resource (transaction), and explains the outcome (each owes their share). It also mentions the key behavior of replacing any existing split, which distinguishes it from siblings like delete_split. Clear and specific.

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?

Provides clear context: splitting an expense with other people. The note that it replaces existing splits implies it can be used for updating, but it does not explicitly mention when to prefer this over alternatives like correct_transaction or delete_split. It has a defined context but lacks explicit exclusions or comparisons.

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

test_parse_ruleTest parse ruleA
Read-onlyIdempotent
Inspect

Dry-run a parse rule over your stored alerts (and any extra samples): which match, and whether the parsed amount equals what was logged. Nothing is saved.

ParametersJSON Schema
NameRequiredDescriptionDefault
ruleYes
samplesNoExtra alert texts to try

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

The description adds behavioral detail beyond annotations: it states nothing is saved (reinforcing readOnlyHint) and describes the specific behavior of checking matches and amount equality. It also mentions it runs over stored alerts and optionally extra samples, which is not in annotations.

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

Conciseness5/5

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

The description is a single, well-structured sentence with no wasted words. It front-loads the purpose and then clarifies the behavior and side-effect-free nature.

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 nested rule object and the presence of an output schema, the description gives enough context to understand the tool's high-level purpose and outcome. It doesn't explicitly mention the required rule parameter, but that is in the schema, and annotations cover safety. It's reasonably 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?

The description mentions 'extra samples' which relates to the samples parameter, but it does not explain the rule object or its fields. The schema has descriptions for rule properties and samples, so with ~50% coverage, the description adds marginal value but doesn't 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 states a specific verb ('Dry-run') and resource ('parse rule') and clearly explains what it does: tests the rule against stored alerts and optional samples, reporting matches and whether the parsed amount equals the logged amount. This distinguishes it from sibling tools like save_parse_rule (which saves) and parse_transaction_text (which likely actually parses).

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 this is a test without side effects ('Nothing is saved'), which gives context, but it does not explicitly name alternatives or state when to use this versus saving a rule. It could benefit from a note like 'Use this before save_parse_rule to validate.'

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

unparsed_alertsUnparsed bank alertsA
Read-onlyIdempotent
Inspect

Bank alert texts you logged (via log_transaction raw_text) that no parse rule reads yet, grouped by bank, each with the amount/merchant that was logged for it. Use them to write a rule for that bank, then test_parse_rule and save_parse_rule.

ParametersJSON Schema
NameRequiredDescriptionDefault
bankNoFilter by the guessed bank name
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the description repeats little. It adds context about the data being raw texts logged via log_transaction and grouping by bank, but doesn't detail edge cases like empty results or how the guessed bank is determined. With annotations covering safety, this is adequate.

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

Conciseness5/5

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

Two sentences, front-loaded with the core purpose and data, then the workflow action. No wasted words, clear and direct.

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?

With an output schema present, return format is covered. Complex enough to require grouping and filtering, but the description's workflow guidance is sufficient. Missing minor details like pagination or empty-state behavior, but not critical.

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

Parameters4/5

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

Schema covers 50% of parameters: 'bank' has description, but 'limit' has none. The description says 'grouped by bank' which clarifies the bank filter's role, but 'limit' is left to the schema's maximum/minimum. The description partially compensates, so a 4 is appropriate.

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

Purpose5/5

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

The description clearly states the tool lists unparsed bank alerts, grouped by bank, with logged amount/merchant. It specifies the source (via log_transaction raw_text) and the purpose (to write a parse rule), distinguishing it from related tools like review_queue or parse_transaction_text.

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?

It gives explicit when-to-use guidance: use it to write a parse rule for an unparsed bank, then test and save the rule. It implies when not to use (if you already have a rule) and names the follow-up tools (test_parse_rule, save_parse_rule).

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

upcomingUpcoming paymentsA
Read-onlyIdempotent
Inspect

What's due in the next N days: recurring rules (next run), planned one-off expenses, reminders, card due dates and loan payment days. Committed outflow per currency (never summed across).

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already establish that this is read-only, idempotent, and non-destructive. The description adds meaningful behavioral context beyond annotations by specifying that results are grouped per currency and never summed across currencies, and by listing the heterogeneous sources of upcoming payments. This is sufficient for a read-only query 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?

Two compact sentences carry the full meaning: the first defines scope and contents, the second states a key aggregation rule. No filler or redundancy; the most important information is front-loaded.

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

Completeness4/5

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

With annotations covering safety and an output schema available, the description does not need to explain return values. It gives a useful enumeration of result categories and the currency behavior. The only missing piece is the default window when 'days' is not supplied, which prevents a perfect score for a single-parameter tool.

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

Parameters3/5

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

The schema has 0% description coverage, so the description must clarify the 'days' parameter. It does so by saying 'in the next N days', mapping N directly to the parameter. However, it does not state the behavior when the parameter is omitted, even though the schema marks it as optional, leaving a small but real invocation ambiguity.

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 what the tool does: it surfaces upcoming obligations within a configurable time window and enumerates the exact categories included (recurring rules, planned expenses, reminders, card due dates, loan payment days). This makes it readily distinguishable from siblings like list_recurring_rules or record_loan_payment.

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 for when to use the tool: whenever the user wants to know what is due in the next N days. It does not explicitly name alternatives or exclusion conditions, but the scoped purpose and the 'never summed across' caveat give adequate practical guidance without requiring inference.

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

update_accountUpdate accountA
Destructive
Inspect

Rename an account, fix its bank/country/last-4, or archive it (archived accounts keep their history but leave every list).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
nameNo
last4No
regionNo
archivedNo
institutionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameYes
typeYes
last4No
regionNo
balanceNoFormatted in the row's currency, e.g. '₹1,200.00'
currencyYes
institutionNo
is_archivedNo
shared_with_meNo

TDQS

A3.9/5.0
Behavior4/5

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

With annotations already marking destructiveHint=true, the description adds valuable context by clarifying that archiving preserves history while removing the account from lists. It does not go further into reversibility or unarchive behavior, but the description meaningfully supplements the annotation signal without contradicting it.

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

Conciseness5/5

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

A single, focused sentence that front-loads the action and uses a parenthetical to clarify the archive side effect. There is no filler repetition of the title or redundant schema information.

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 mutating tool with six parameters and an output schema, the description covers the main update scenarios and the most important behavioral side effect. It does not need to describe return values because an output schema exists; minor completeness gaps are unarchiving and null-clearing semantics.

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?

Given the description carries most of the parameter burden due to 0% schema coverage, it successfully explains the main update scenarios and the meaning of archive. The natural-language coverage addresses five of the six parameters explicitly, though the required id is not described beyond its property name and nullable 'clear this field' behavior is not mentioned.

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

Purpose4/5

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

The description clearly states a concrete action ('Rename an account') and enumerates the editable attributes: bank/country/last-4 and archived. It also states the key consequence of archiving ('keep their history but leave every list'), which gives it a distinct purpose from creation or list operations, though it does not explicitly name a sibling alternative.

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?

There is a clear implied usage context: call this tool when you need to rename an existing account, correct its bank/country/last-4, or archive it. However, it never explicitly routes the agent to alternatives such as create_account or set_account_balance, and it does not state when not to use this tool.

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

update_categoryUpdate categoryA
Destructive
Inspect

Rename a category, change its icon, or archive it (rows keep their category; it just leaves pickers).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
iconNo
nameNo
archivedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark the tool as mutating and destructive, so the description's main job is to add behavioral nuance. It does: archiving does not delete rows, it only removes the category from pickers. This is valuable context beyond what readOnlyHint, destructiveHint, or idempotentHint provide.

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

Conciseness5/5

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

A single, efficient sentence with a parenthetical for the most surprising behavior. It is front-loaded with the primary actions and contains no filler or repetition of schema or annotation details.

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 update tool with an output schema and destructive/readOnly annotations, the description covers the main behavioral nuance an agent needs. It could be more complete by mentioning the required id or listing sibling alternatives, but the remaining gaps are minor given the low parameter complexity.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate for parameter meaning. It maps operations to parameters: 'Rename' suggests name, 'change its icon' maps to icon, and 'archive it' maps to archived. However, the required id parameter is not explained, and icon/name formats are unspecified, leaving semantic 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 opens with a specific verb-resource pair ('Rename a category') and enumerates the exact operations available: rename, change icon, archive. It also clarifies the subtle archiving behavior (rows keep their category; it just leaves pickers), which clearly distinguishes this tool from add_category or delete-related siblings.

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 makes the intended use clear: use this tool when a category needs renaming, icon changes, or archiving. It also explains the consequence of archiving, which helps an agent decide correctly. However, it does not explicitly name alternatives or state when not to use this tool versus add_category or set_category_rule.

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

update_holdingUpdate holdingA
Destructive
Inspect

Rename a holding, change its price source/symbol, or archive it. delete_lot removes a mistaken buy/sell.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
nameNo
archivedNo
quote_symbolNo
delete_lot_idNo
quote_providerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true, and the description adds behavioral specifics: delete_lot removes a mistaken buy/sell and the tool can archive a holding. It gives useful context about what operation may be destructive. No contradiction with the annotations is present.

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

Conciseness5/5

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

Two short sentences deliver the core operations and the deletion behavior without filler. The most important actions are front-loadedached, and every phrase earns its place.

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

Completeness4/5

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

Given that an output schema exists and the annotations cover safety, the description is mostly complete for a 6-parameter update tool. It does not explicitly describe partial-update semantics or interaction between fields, but the schema and the operation list give enough guidance for correct invocation.

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

Parameters5/5

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

With 0% schema description coverage, the description compensates by mapping nearly every optional parameter to its meaning: name→rename, quote_provider→price source, quote_symbol→symbol, archived→archive, delete_lot_id→removes a mistaken buy/sell. Only the self-evident required id is left implicit, which is acceptable.

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

Purpose5/5

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

The description states concrete actions on the holding resource: rename it, change its price source/symbol, or archive it. It also clarifies that delete_lot removes a mistaken buy/sell, which differentiates this tool from sibling tools like delete_transaction. This goes well beyond a tautology of 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 Guidelines3/5

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

The description implies the use cases: rename, adjust price source/symbol, archive, or delete a mistaken lot. It gives clear context for when to call this tool, but it does not explicitly name alternatives or state when not to use it. The coverage is adequate but not explicit.

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

update_loanUpdate loanA
Destructive
Inspect

Close a loan (fully repaid), reopen it, rename it, or delete it with its payments.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
nameNo
deleteNo
statusNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already mark the tool as destructive and not read-only, but the description adds specific behavioral context: deleting a loan also deletes 'its payments', and closing implies full repayment. This goes beyond the structured metadata by clarifying the scope of destructive behavior, though it does not address idempotency or side effects.

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

Conciseness5/5

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

The entire description is one 20-word sentence that front-loads the main actions and avoids filler. Every phrase carries operational meaning.

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 4-parameter mutation with an output schema and destructive annotations, the description covers the user-facing operations and the cascade-delete behavior. It omits details about simultaneous parameter combinations, but the output schema handles return values, so the remaining gaps are modest.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry parameter meaning. It does map major operations to parameters—'rename' suggests name, 'close/reopen' suggests status, 'delete' suggests delete—but it never names the parameters or explains combinations and constraints, leaving the required id and optional interactions ambiguous.

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 enumerates four concrete operations—close, reopen, rename, and delete—on a specific loan resource, so an agent can distinguish update_loan from siblings like add_loan or record_loan_payment. The tool name is made meaningful by specifying exactly what kinds of updates are supported.

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

Usage Guidelines3/5

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

The description implies when to use the tool by associating close with 'fully repaid', but it does not name alternative tools or state when not to use it. Siblings like record_loan_payment and add_loan exist, so explicit routing would be more helpful.

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

update_personUpdate personA
Destructive
Inspect

Rename someone you split with, set their contact, or archive them.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
nameNo
contactNo
archivedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation risk is known. The description adds some behavioral context by naming archiving as a possible operation, but it does not explain what archiving implies or what else may be affected.

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

Conciseness5/5

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

A single sentence delivers the full behavioral intent without any filler. Every phrase corresponds to a meaningful parameter or usage scenario.

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 output schema exists, annotations cover the destructive nature, and the description explains all three mutable fields, the definition is largely complete. It lacks explicit guidance about when not to use it, but that is a minor gap for this simple 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?

Schema description coverage is 0%, so the description carries the burden of explaining parameter intent. It successfully maps 'rename' to name, 'set their contact' to contact, and 'archive' to archived, adding meaning beyond the raw schema. It does not add detail for id, but the schema already marks it as required and self-explanatory.

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

Purpose5/5

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

The description names the specific resource (a person you split with) and the concrete operations: rename, set contact, or archive. This clearly distinguishes update_person from the many sibling update_* tools.

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 phrase 'someone you split with' provides clear context for when to use this tool, and the listed actions (rename, set contact, archive) define its intended scope. It does not explicitly mention alternatives or exclusions, but the usage context is clear enough.

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

update_recurring_ruleUpdate recurring paymentA
Destructive
Inspect

Pause/resume, change the amount, or delete a recurring rule.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
amountNoNew amount, major units, negative = expense
deleteNo
pausedNo
end_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and destructiveHint=true, which align with the description's mention of 'delete' as a destructive action. The description adds value by specifying the non-destructive actions (pause/resume, change amount) and the destructive one, providing clarity beyond the annotation flags. No contradictions.

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

Conciseness5/5

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

The description is a single concise sentence that front-loads the primary purpose and the three possible operations. Every word earns its place, with no redundant or filler content.

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 5 parameters and a destructive option, the description is too brief. It omits parameter interactions (e.g., whether 'delete' and 'paused' can be set together), the semantics of 'end_date', and the impact of changes on future payments. The output schema might clarify, but the description alone is insufficient for safe usage.

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 only 20% (only 'amount' has a description). The description maps actions to parameters: pause/resume to 'paused', change amount to 'amount', delete to 'delete', but it does not clarify the 'end_date' parameter or the required 'id'. It partially compensates for the low coverage but leaves 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 tool updates a recurring rule and explicitly lists three distinct actions: pause/resume, change amount, or delete. This specific verb+resource combination distinguishes it from add_recurring_rule and list_recurring_rules without ambiguity.

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 on existing rules through the verb 'update' and the sibling tool 'add_recurring_rule', but it does not explicitly state when to use it versus alternatives, nor does it provide exclusions or prerequisites. The guidance is implied rather than explicit.

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

update_transactionUpdate transactionA
Destructive
Inspect

Change category, merchant, note, reviewed flag, or whether the row counts as spending/income (excluded). Amount and date are immutable once reviewed.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
noteNo
excludedNotrue: not spending/income, out of insights and budgets; false: counts again
merchantNo
category_idNo
is_reviewedNo
learn_categoryNoAlso remember merchant→category for next time

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
dateYes
noteNo
placeNo
amountYesFormatted in the row's currency, e.g. '₹1,200.00'
sourceNo
currencyYes
excludedNoMoves the balance but is not counted as spending or income
merchantNo
account_idYes
confidenceNo
category_idYes
is_reviewedNo
transfer_idNo
amount_minorYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation nature is known. The description adds valuable context: it lists mutable fields, states immutability of amount/date, and explains the 'excluded' flag's semantics (though the schema also covers that). It also implies 'learn_category' affects future behavior, but doesn't detail. Overall, description adds context beyond minimal annotations.

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

Conciseness5/5

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

The description is two sentences, the first front-loads the primary purpose and the second succinctly states the immutability constraint. No wasted words; every phrase adds information.

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 is complex with 7 parameters, no output schema details needed as output schema exists. The description covers mutable fields, immutability, and the excluded semantics. It doesn't explicitly mention idempotency or error conditions, but with annotations covering destructive behavior and schema covering parameter details, it is mostly complete. A slight gap is not noting the effect of 'learn_category' on future parsing, but schema description covers it.

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

Parameters4/5

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

Schema coverage is only 29%, so the description must compensate. It does explain the core fields (category, merchant, note, reviewed, excluded) and the immutability of amount/date. It also clarifies 'excluded' behavior. However, it does not explain 'learn_category' (though schema has a description) or 'category_id' format, but for commonly understood fields, this is sufficient.

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

Purpose5/5

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

The description clearly states the tool updates a transaction's mutable fields (category, merchant, note, reviewed flag, excluded), and explicitly declares what is immutable (amount, date). It uses a specific verb and resource, and the list of fields distinguishes it from sibling tools like correct_transaction and delete_transaction.

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

Usage Guidelines3/5

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

The description implies it is for editing transaction details but does not explicitly state when to use it versus siblings like correct_transaction (which likely corrects amount/date) or delete_transaction. It mentions immutability of amount/date, hinting that correct_transaction may be needed for those, but this is not explicit.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 63 tool updates
    • First observedadd_category
    • First observedadd_group_expense
    • First observedadd_group_member
    • First observedadd_holding
    • First observedadd_loan
    • First observedadd_planned_expense
    • First observedadd_recurring_rule
    • First observedadd_reminder
    • First observedbudget_status
    • First observedchart
    • First observedcomplete_reminder
    • First observedcorrect_transaction
    • First observedcreate_account
    • First observedcreate_group
    • First observedcreate_transfer
    • First observeddelete_group_row
    • First observeddelete_parse_rule
    • First observeddelete_split
    • First observeddelete_transaction
    • First observeddelete_transfer
    • First observedgroup_invite
    • First observedimport_holdings
    • First observedimport_statement
    • First observedlist_accounts
    • First observedlist_categories
    • First observedlist_debts
    • First observedlist_groups
    • First observedlist_holdings
    • First observedlist_parse_rules
    • First observedlist_recurring_rules
    • First observedlist_transfers
    • First observedlog_transaction
    • First observednet_worth
    • First observedparse_transaction_text
    • First observedpeople_balances
    • First observedreconcile_statement
    • First observedrecord_card_statement
    • First observedrecord_loan_payment
    • First observedrecord_lot
    • First observedrecord_settlement
    • First observedresolve_planned_expense
    • First observedreview_queue
    • First observedsave_parse_rule
    • First observedsearch_transactions
    • First observedset_account_balance
    • First observedset_budget
    • First observedset_category_rule
    • First observedset_credit_card
    • First observedset_quote
    • First observedsettle_group
    • First observedspending_summary
    • First observedspending_trend
    • First observedsplit_transaction
    • First observedtest_parse_rule
    • First observedunparsed_alerts
    • First observedupcoming
    • First observedupdate_account
    • First observedupdate_category
    • First observedupdate_holding
    • First observedupdate_loan
    • First observedupdate_person
    • First observedupdate_recurring_rule
    • First observedupdate_transaction

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Tracks subscriptions and recurring bills with flexible billing cycles, and provides upcoming renewals and spending summaries.
    -
  • A
    license
    C
    quality
    A
    maintenance
    open-source personal finance app with a first-party MCP server. 91 HTTP tools (OAuth 2.1 + DCR) and 87 stdio tools cover transactions, budgets, accounts, portfolio analytics, FX conversion, loans, subscriptions, goals, importers, and rules. Users self-host with Docker + PostgreSQL or use the managed cloud
    89
    17
    AGPL 3.0
  • A
    license
    A
    quality
    A
    maintenance
    Full double-entry accounting on local GnuCash books: transactions (single and batch), invoices and bills, budgets, investment lots, scheduled transactions, reconciliation, and reports. Multi-currency and multi-book aware, with a plain-text audit trail of every write. Your data never leaves your machine.
    271
    87
    70
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Enables local-first personal finance management through deterministic tools for importing, categorizing, and analyzing bank transactions.
    36
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.