Skip to main content
Glama

Server Details

Consulte contas, cartões, transações e orçamentos da sua conta financeira Vessell.

Ownership verified
Status
Healthy
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP
URL
Repository
VessellTech/cdf.mcp
GitHub Stars
0
Server Listing
CDF Finance Server

Available Tools

82 tools
active_installmentsParcelas ativasA
Read-only
Inspect

Parcelas de compras parceladas (não faturas de cartão — qualquer forma de pagamento com totalInstallments > 1) ainda não pagas. count/total somam TODAS as parcelas em aberto, sem filtro de data — inclui parcelas já vencidas. upcoming traz até 5 parcelas com a data mais próxima, ordenadas de forma crescente; se houver parcela vencida e não paga, ela aparece primeiro (não é só futuro). Use esta ferramenta pra saber o compromisso do usuário com compras parceladas em geral; para o total da fatura mensal de um cartão específico use invoice_for_period, e para faturas de cartão pendentes em geral use list_pending_invoices.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
textNo
countNo
totalNo
upcomingYes

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnlyHint and destructiveHint annotations, the description reveals important behavioral details: count/total sum all open installments without date filtering, including overdue ones; upcoming returns at most 5 installments sorted ascending and prioritizes overdue unpaid installments first. This meaningfully informs the agent about edge-case behavior without contradicting 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?

The description is dense but every sentence earns its place: it defines the resource, clarifies scoping behavior, explains the upcoming field's ordering, and routes to alternatives. It is front-loaded with the core definition and contains no filler or repetition.

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 and an output schema exists, the description covers all the behavioral context an agent needs: scope, exclusion of card invoices, aggregation semantics, ordering behavior, and alternative tools. Nothing critical is missing for correct selection and 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?

The tool has zero parameters, and schema coverage is 100% (vacuously). Per the baseline rule, a no-parameter tool receives a 4 since there is no parameter semantics to enhance; the description instead usefully explains response field semantics such as count, total, and upcoming.

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 identifies the resource: unpaid installments of installment purchases, explicitly excluding credit card invoices and defining them as any payment method with totalInstallments > 1. It also names the two closest sibling tools (invoice_for_period and list_pending_invoices) and states what this tool is not, making differentiation unambiguous.

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?

Usage guidance is explicit: use this tool to understand the user's overall installment purchase commitment. It also provides direct when-not-to-use guidance by pointing to invoice_for_period for a specific card's monthly invoice and list_pending_invoices for pending card invoices generally.

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

add_equity_valuationAdicionar avaliaçãoAInspect

Adiciona um ponto no histórico de valor de um investimento (id = id do investimento/equity, não da avaliação). Sempre insere uma nova linha, mesmo se já houver avaliação na mesma data — não sobrescreve nem deduplica. date é opcional (default agora); use pra registrar uma avaliação retroativa. Efeito colateral: o value/cost do investimento em si também é atualizado para os valores desta avaliação, então ela passa a ser o valor 'atual' retornado por list_equities. Diferença de update_equity: use esta ferramenta pra registrar histórico com data específica sem tocar em outros campos do investimento (nome, ticker etc.); use update_equity quando quiser editar o investimento e deixar o valor atualizado datado de hoje.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId do investimento (Equity), não da avaliação
costNoCusto/valor investido nesta data. Default: igual a value (sem ganho/perda registrado se omitido)
dateNoData da avaliação (ISO). Default: agora. Use pra backfill retroativo
valueYesNovo valor de mercado do investimento

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
asOfNo
costNo
valueNo
equityIdNo
createdAtNo
updatedAtNo

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, idempotentHint=false), the description discloses key behavioral traits: it always inserts a new row and never overwrites or deduplicates, consistent with the non-idempotent flag, and it reveals the important side effect that the investment's own value/cost is updated to this valuation, becoming the 'current' value returned by list_equities. It also clarifies what it does NOT touch (name, ticker), which is valuable context 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?

Four sentences, each carrying necessary information: core purpose, insert-always semantics, date default behavior, side effect, and sibling differentiation. The most important behavioral facts are front-loaded and no sentence is wasted.

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 mutation tool with two required parameters and a significant side effect on the parent investment, the description covers everything needed for correct invocation: non-idempotent insert behavior, date semantics, the side effect on current value, and which sibling to use instead. An output schema exists, so return values do not need to be explained.

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 schema already documents all four parameters well (id as equity id, cost defaulting to value, date defaulting to now for backfill). The description re-states the id/date clarifications and ties the value/cost side effect to the parameters, but this is behavioral context more than new parameter semantics, so the baseline 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 states a specific action — 'Adiciona um ponto no histórico de valor de um investimento' (adds a point in the value history of an investment) — with a clear resource and the crucial distinction that `id` refers to the investment/equity, not the valuation. It also explicitly differentiates itself from the confusable sibling update_equity.

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 names update_equity as the alternative and gives an explicit decision rule: use this tool to register history at a specific date without touching other investment fields, and use update_equity to edit the investment with today's date. It also tells when to use the `date` parameter for retroactive backfill.

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

analytics_historyHistórico financeiro mensalA
Read-only
Inspect

Série histórica contínua (meses com e sem movimento) com saldo reconstruído, patrimônio e estatística elaborada (média/mediana/desvio/variação, tendência por regressão linear, médias móveis 3/6/12m, taxa de poupança). Suporta vida inteira (até 120 meses). Use from/to como YYYY-MM ou YYYY-MM-DD. Use esta ferramenta pro histórico mensal geral (saldo/patrimônio/receita/despesa); para série por categoria use category_history, para separar aporte de valorização em investimentos use wealth_evolution, e para um retrato único do momento atual (não série) use financial_snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoFim do intervalo (YYYY-MM ou YYYY-MM-DD) — default mês atual
fromNoInício do intervalo (YYYY-MM ou YYYY-MM-DD) — default 11 meses atrás

Output Schema

ParametersJSON Schema
NameRequiredDescription
toNo
fromNo
statsNo
trendNo
monthsNo
debtTotalNo
equityTotalNo
movingAverageNo
currentBalanceNo

TDQS

A4.9/5.0
Behavior5/5

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

Beyond readOnlyHint/destructiveHint annotations, it discloses non-obvious behavior: continuous months including those without movement, reconstructed balance, computed statistics, up to 120 months of history, and accepted date formats. 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?

Description is dense but front-loaded: core purpose and scope first, then limit/date syntax, then sibling routing. The statistics list is long but informative; there is no filler.

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 analytics tool with an output schema present and only two optional parameters, the description covers what it returns conceptually, how to scope dates, the range limit, and how it differs from related tools. Nothing critical is missing.

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

Parameters4/5

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

The schema already covers the two optional date parameters at 100% with syntax and defaults. The description adds a meaningful constraint: the range can span up to 120 months (entire life), which helps an agent choose a valid 'from' value.

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

Purpose5/5

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

The description clearly identifies the tool as a continuous monthly financial history series with reconstructed balance, net worth, and statistics, and explicitly contrasts it with category_history, wealth_evolution, and financial_snapshot. This differentiates it from siblings without needing to inspect schemas.

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 direct instructions: use for general monthly history (balance/equity/income/expense), and names sibling tools for category series, investment appreciation, and current snapshot. It also documents supported range and date formats, leaving no ambiguity about when 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.

behavior_insightsInsights de comportamentoA
Read-only
Inspect

Observações financeiras já analisadas e prontas para narrar (cada item já vem com um texto pronto em text): padrão de dia da semana por categoria, aumento de gasto nos dias após o recebimento de renda, e categorias que sobem nos fins de semana. Pode retornar lista vazia se nenhum padrão for detectado. Distinto de insights_highlight (só 1 destaque, prioriza atraso/orçamento) e das tools de anomalia específica (bill_anomalies, transport_routine, bill_concentration, best_card_day, subscriptions_overview), que olham sinais isolados diferentes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already establish readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds valuable non-obvious behavior: it can return an empty list when no pattern is detected, and each result item comes with a pre-written narrative `text`. It also discloses the analytical scope, which goes beyond what the annotations or schema 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?

The description is compact and front-loaded with the core value ('already analyzed and ready to narrate'), then covers empty-list behavior and sibling differentiation. Every sentence earns its place, and the structure is easy to scan.

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 zero parameters, read-only annotations, an output schema, and a description that explains return behavior and distinguishes it from related tools, the agent has everything needed to invoke and interpret this tool correctly. The empty-list case and ready-made `text` field are explicitly addressed.

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

Parameters4/5

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

The tool has zero parameters and schema description coverage is 100%, so there are no parameter semantics for the description to clarify. The baseline of 4 applies because there is nothing meaningful to add.

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 purpose: returning pre-analyzed financial observations ready to narrate, with each item containing a ready-made `text`. It enumerates the exact behavior patterns covered (weekday-by-category, post-income spending increase, weekend category rises) and explicitly distinguishes the tool from insights_highlight and specific anomaly tools, making the resource and scope unambiguous.

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 gives clear when-not guidance by naming alternatives: insights_highlight for a single budget/delay-focused highlight, and bill_anomalies, transport_routine, bill_concentration, best_card_day, subscriptions_overview for isolated anomaly signals. This lets an agent route to the correct tool instead of behavior_insights.

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

best_card_dayMelhor dia para comprar no cartãoA
Read-only
Inspect

Avisa, para cada cartão do usuário, quando hoje é véspera do fechamento da fatura — comprar amanhã em vez de hoje cairia na fatura seguinte, ganhando mais dias até o vencimento para pagar. Só sinaliza cartões onde essa diferença é ≥15 dias; cartões sem closingDay/dueDay configurado são ignorados. Lista vazia se nenhum cartão estiver na véspera do fechamento.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only nature is covered. The description adds valuable behavior beyond annotations: the 15-day threshold, ignoring unconfigured cards, and returning an empty list when no card qualifies. It could also mention edge cases or errors, but this is solid 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 compact sentences carry the full meaning: the core alert, the filter condition, and the empty-result behavior. The description is front-loaded and every 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 zero-parameter, read-only tool with no output schema, the description explains when it triggers, which cards are excluded, the threshold used, and the empty-list fallback. An agent has enough information to invoke the tool and interpret the result.

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

Parameters4/5

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

The input schema has zero parameters, so there is no parameter semantics to clarify. The description correctly implies that the tool derives its behavior from the user's card data rather than explicit arguments, matching the baseline 4 for zero-parameter tools.

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

Purpose5/5

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

The description states a specific verb and resource: it warns the user, for each card, when today is the eve of invoice closing, and explains the practical benefit of postponing a purchase. This clearly distinguishes it from list_cards and other invoice-related 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 specifies the triggering condition (day before closing), the ≥15-day difference threshold, and the handling of cards without closingDay/dueDay. It does not explicitly name alternatives or state when not to use the tool, which keeps it from a 5.

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

bill_anomaliesContas acima da médiaA
Read-only
Inspect

Contas recorrentes de despesa ativas (aluguel, luz, etc.) cuja última ocorrência lançada neste mês veio bem acima (>20%) da média das ocorrências dos últimos 6 meses. Exige pelo menos 2 ocorrências históricas para comparar — recorrente nova ou sem histórico suficiente não entra. Lista vazia se nada passar do limiar; ordenado do maior desvio % para o menor.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds substantial behavioral detail: the >20% threshold, the 6-month comparison window, the minimum historical occurrences requirement, empty-list behavior when nothing qualifies, and ordering by largest deviation. This goes well beyond the annotation 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?

The description is three sentences with zero waste. The core anomaly rule is front-loaded, followed by the exclusion condition and output ordering behavior. Every sentence carries essential, non-redundant information.

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 zero-parameter, read-only analysis tool with an output schema, the description is fully complete. It explains the detection rule, prerequisites, edge cases, ordering, and empty behavior. There is no missing information needed to invoke or interpret the result.

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 schema description coverage is 100% and no parameter documentation is needed. The description appropriately focuses on the tool's filtering semantics rather than parameters, matching the baseline for a no-parameter tool.

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

Purpose5/5

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

The description states exactly what the tool does: it identifies active recurring expense bills whose latest posted occurrence this month exceeds the 6-month average by more than 20%. It gives concrete examples (rent, electricity), clear exclusion criteria, and output ordering, making it distinctly recognizable among sibling analytics 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 description provides clear context for when to use it — for surfacing unusually high recurring bills in the current month — and defines qualifying conditions (active recurring expenses, at least 2 historical occurrences). It does not explicitly name alternative tools or state when not to use it, so it misses the full 5.

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

bill_concentrationDias de maior apertoA
Read-only
Inspect

Acha a janela de 5 dias consecutivos, dentro dos próximos 30, com maior concentração de compromissos (transações EXPENSE/INVOICE_PAYMENT não pagas + faturas de cartão não pagas vencendo no período). Só retorna algo se essa janela concentrar ≥35% do total previsto para os 30 dias — senão vem lista vazia.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true; the description goes further by disclosing the exact lookahead window, qualifying transaction types, the ≥35% concentration threshold, and the empty-list behavior when the threshold is not met. This is strong behavioral disclosure 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?

The description is a single dense sentence that front-loads the primary objective, clearly defines the calculation inputs, and states the conditional return. Every clause adds necessary information; there is no filler.

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 description fully specifies the computation window, the types of commitments included, the threshold, and the empty-list fallback. Since an output schema exists, return-value details need not be repeated, and there are no parameters to document.

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

Parameters4/5

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

The tool has zero parameters and schema description coverage is 100%, so there is nothing for the description to add about parameters. The baseline of 4 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 states a specific action ('Acha'), a specific resource (5-day window within the next 30 days), and the exact composition of commitments. It also defines the threshold condition, making it clearly distinct from generic forecasting or anomaly-detection siblings.

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

Usage Guidelines3/5

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

The description makes the tool's scope and threshold clear, so an agent can infer when it is relevant. However, it never explicitly says when to prefer this tool over overlapping siblings like bill_anomalies, cashflow_forecast, or spending_projection, nor does it mention exclusions.

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

budget_comparisonComparativo do orçamentoA
Read-only
Inspect

Compara orçado (Budget.amount) vs gasto real de UM orçamento específico no seu período (mês, se MONTHLY; ano inteiro, se YEARLY), somando as transações do mesmo type/category no intervalo. Inclui daily: série diária acumulada do mês com projeção linear até o fim do mês (só para orçamentos MONTHLY do mês vigente — demais casos devolvem lista vazia). id é o id do Budget, não de uma categoria.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId do orçamento (Budget)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dailyNo
spentNo
budgetNo
budgetedNo
remainingNo
percentageNo
transactionsNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral details beyond annotations: the empty-list behavior for `daily`, the projection only for current-month MONTHLY budgets, and the transaction aggregation logic.

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 focused sentences cover the core comparison, period logic, aggregation rule, the `daily` field behavior, and the `id` disambiguation. No wasted words, and the most important semantic caveat is included up front.

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 a single parameter, a read-only annotation set, and an existing output schema, the description sufficiently explains the tool's behavior and edge cases. An agent has enough information to invoke it correctly without additional context.

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% with one parameter already described. The description adds meaningful semantic clarity by explicitly warning that `id` is the Budget id, not a category id, and by explaining how the budget period affects the aggregation.

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 function: comparing budgeted amount versus actual spending for one specific budget over its period. It also explicitly distinguishes the `id` as a Budget id, not a category id, which helps disambiguate this comparison tool from category-level analytics.

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 on when to use the tool: for a specific budget and its configured period, with special handling for `daily` only in current-month MONTHLY budgets. It does not explicitly name alternative tools, but the scope is unambiguous enough for an agent to select it correctly.

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

can_affordPosso comprar isso?A
Read-only
Inspect

Simula uma despesa única a partir de hoje: verifica se o saldo atual (soma de contas não-cartão) cobre, o impacto no saldo projetado dos próximos 12 meses (reusando a mesma projeção materializada de cashflow_forecast, inclusive se algum mês passa a ficar negativo) e quanto meses cada meta ativa atrasaria dado o aporte mensal necessário dela. Não grava nada, é só simulação — para comparar cenários de liquidação de ativo ou amortização de dívida use cashflow_forecast com liquidationParams/simulationParams.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesValor da compra simulada, em reais. Deve ser > 0

Output Schema

ParametersJSON Schema
NameRequiredDescription
textNo
amountNo
monthsNo
goalImpactsNo
canAffordNowNo
currentBalanceNo
newNegativeMonthsNo

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds meaningful behavior beyond that: it defines the balance check as 'soma de contas não-cartão', the 12-month projection horizon, reuse of cashflow_forecast's materialized projection, detection of months becoming negative, and goal delay calculation. It also explicitly states 'Não grava nada'.

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 dense but every clause carries load: what is simulated, the exact checks performed, the no-persistence guarantee, and the alternative tool when different scenarios must be modeled. It is structured with the core action first, followed by detail and routing.

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 a single well-documented parameter and an available output schema, the description provides all necessary context: scope of simulation, inputs it considers, time horizon, side-effect-free behavior, and when to use a different tool instead. Nothing essential is missing 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?

The schema already covers the single required parameter 'amount' completely with type and a constraint that it must be greater than 0. The description adds the framing of a one-time expense from today, but does not need to compensate for any schema gap, so a baseline score 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 opens with a specific verb and resource: 'Simula uma despesa única a partir de hoje' and then details exactly what is checked. The final sentence differentiates it from the sibling cashflow_forecast, so an agent can reliably select can_afford over alternatives.

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 explicitly states that this is a read-only simulation and provides an exclusion condition: 'para comparar cenários de liquidação de ativo ou amortização de dívida use cashflow_forecast com liquidationParams/simulationParams'. This gives clear routing guidance versus the relevant sibling.

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

cashflow_forecastProjeção de fluxo de caixaA
Read-only
Inspect

Projeção mês a mês (até 12 meses) de entradas, saídas e saldo projetado, incluindo receita/despesa recorrente, categorias, centros de custo e meses no vermelho. Quando pending=true (default) e não há simulação, serve a leitura já materializada (cache); caso contrário recalcula ao vivo no motor Python. Suporta simular liquidação de um ativo (liquidationParams) ou amortização extra de uma dívida (simulationParams) e ver o impacto no saldo projetado — não grava nada, é só simulação. Diferença dos outros: é o único que traz saldo/caixa completo por mês; para só gastos por categoria use spending_projection, para só patrimônio líquido use networth_projection, para o mês corrente (sem projeção futura) use current_month_spending, e para série histórica real (passado) use analytics_history.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthsNoQuantidade de meses a projetar, 1-12 (default 12)
userIdNoId do cliente a consultar (uso de planejador financeiro); omitido usa o próprio usuário autenticado
topCategoriesNoQuantas categorias de topo trazer por mês em topExpenses, 1-20 (default 5)
includePendingNoSe true (default), considera transações pendentes na projeção; false usa só o histórico realizado e força recálculo ao vivo (não usa cache)
simulationParamsNoJSON stringificado simulando amortização extra de uma dívida: {"debtId": "<id>", "amount": number, "frequency"?: "MONTHLY"|..., "installments"?: number}. Só tem efeito se debtId e amount forem válidos.
liquidationParamsNoJSON stringificado simulando a liquidação de um ativo: {"assetId": "<id do Equity>", "amount": number, "liquidationLevel"?: "LL1"|..., "months"?: number}. Só tem efeito se assetId e amount forem válidos.

Output Schema

ParametersJSON Schema
NameRequiredDescription
monthsNo
cacheHitNo
chartDataNo
generatedAtNo
balanceTrendNo
categoryKeysNo
costCenterKeysNo
negativeMonthsNo
startingBalanceNo
variableSummaryNo
currentMonthForecastNo
finalProjectedBalanceNo

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnlyHint=true annotation, the description discloses meaningful dynamic behavior: it serves a cached/materialized read when includePending=true and no simulation is requested, otherwise recalculates live in the Python engine. It also explicitly states the simulation modes write nothing ('não grava nada, é só simulação'), which is consistent with — and adds depth to — the annotations. 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.

Conciseness4/5

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

The description is long but every sentence earns its place: core function, cache-vs-live behavior, simulation semantics, and sibling differentiation are each handled in one sentence. It is front-loaded with the primary purpose. Minor blemish: it refers to 'pending=true' where the actual parameter is 'includePending', which could cause a slight mismatch when an agent maps the description to the schema.

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 (so return values need not be explained), annotations cover the read-only safety profile, and the schema covers 100% of parameters, the description is very complete. It covers cache/live modes, both simulation types with non-persistence, and sibling differentiation. Only minor gaps remain, such as the parameter-name shorthand and no explicit mention of the 1-12 month constraint (left to the schema).

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

Parameters3/5

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

Schema description coverage is 100%, so the schema documents all six parameters in detail (defaults, ranges, JSON shapes, validity conditions). The description adds the framing that simulation parameters impact the projected balance without persisting, and references the months cap, but most parameter semantics are already carried by the schema, so the baseline 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 states a specific verb and resource: month-by-month projection of inflows, outflows, and projected balance ('Projeção mês a mês... de entradas, saídas e saldo projetado'). It also explicitly distinguishes itself from siblings, claiming to be the only tool that returns complete monthly cash/balance and naming spending_projection, networth_projection, current_month_spending, and analytics_history as alternatives.

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 final sentence gives explicit routing rules: use spending_projection for expenses-only by category, networth_projection for net worth only, current_month_spending for the current month without future projection, and analytics_history for real historical series. This is direct when-to-use-vs-alternatives guidance tied to concrete sibling names.

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

categories_insightsInsights por categoriaA
Read-only
Inspect

Gasto acumulado por categoria (somando subcategorias) no mês alvo vs mês anterior, com % de variação e comparação com orçamento (se houver Budget mensal para a categoria). Sem month/year usa o mês atual e serve a versão materializada (mais rápida); com month/year calcula ao vivo. Para série de vários meses use category_history; para insights por tag (não categoria) use tags_insights; para um resumo de correlações do momento (poupança, dívida, reserva) use financial_snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoAno alvo (default ano atual)
monthNoMês alvo, 1-12 (default mês atual). Informar sem year usa o ano atual
userIdNoId do cliente a consultar (uso de planejador financeiro); omitido usa o próprio usuário autenticado

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearNo
monthNo
insightsNo

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds meaningful behavioral context beyond annotations: it sums subcategories, compares to the previous month, conditionally includes budget comparison, defaults to the current month, and switches between materialized and live calculation. This gives the agent a solid understanding of what the tool actually does at runtime.

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 dense but efficient, front-loading the core purpose before moving to behavioral nuances and sibling alternatives. It could be slightly more scannable with separate sentences, but every clause earns its place and there is no redundant content.

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 presence of an output schema, the description does not need to explain return values. It covers the comparison logic, aggregation, budget conditionality, default behavior, computation modes, and alternatives, leaving no significant gap for an agent to call this 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?

Schema description coverage is 100%, so the structured schema already documents year, month, and userId well. The description adds extra value by explaining the behavioral consequence of omitting month/year (materialized fast path vs. live calculation) and clarifies that omitting year uses the current year, complementing the schema defaults.

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 a specific verb and resource: accumulated spend by category, compared with the previous month, including percentage change and budget comparison. It also explicitly differentiates itself from sibling tools by naming category_history, tags_insights, and financial_snapshot, so an agent can select the right tool without opening schemas.

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

Usage Guidelines5/5

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

The description provides explicit routing guidance: use category_history for multi-month series, tags_insights for tag-based insights, and financial_snapshot for correlation summaries. It also explains the materialized vs. live computation modes depending on whether month/year is supplied, which clarifies when each call mode is appropriate.

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

category_historyHistórico por categoriaA
Read-only
Inspect

Série histórica mensal (não projeção) por categoria, limitada às top N categorias por volume no período, com estatística (média/mediana/desvio) e tendência de cada uma. Use para sazonalidade/comparar categorias ao longo do tempo; para o total geral (sem quebra por categoria) use analytics_history, e para o mês corrente vs anterior por categoria (sem série longa) use categories_insights.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoFim (YYYY-MM ou YYYY-MM-DD)
topNoTop N categorias (1-20, default 5)
fromNoInício (YYYY-MM ou YYYY-MM-DD)

Output Schema

ParametersJSON Schema
NameRequiredDescription
toNo
topNo
fromNo
seriesNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already mark readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds valuable behavior: the series is historical and explicitly not a projection ('não projeção'), limited to top N categories by volume, and includes mean/median/standard deviation and trend. This goes beyond the annotations and clarifies what the agent should expect.

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 dense, efficient sentences: the first defines the output and its constraints, the second provides usage and alternatives. No filler or repetition; the core concept is front-loaded.

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?

An output schema is present, so return values are already structurally documented. With no required parameters and all optional ones covered, the description provides purpose, scope, usage context, and alternative routing. Nothing essential for an agent to decide whether and how to invoke this tool is missing.

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 all three parameters already have descriptions including format (YYYY-MM or YYYY-MM-DD) for from/to and range plus default for top. The description adds only marginal semantic value by linking 'top' to 'top N categorias' and implying from/to define the analysis window. A baseline of 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 opens by stating exactly what the tool returns: a monthly historical series (not a projection) broken down by category, limited to top N categories, with statistics and trend. It explicitly contrasts itself with analytics_history and categories_insights, so an agent can distinguish it from siblings without inspecting schemas.

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 gives an explicit use context: 'Use para sazonalidade/comparar categorias ao longo do tempo'. It then names two alternatives and the exact conditions for choosing them: analytics_history for the general total without category breakdown, and categories_insights for current vs previous month without a long series. This fully routes the agent.

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

confirm_new_transactionCriar transação já confirmadaAInspect

Igual a create_transaction, mas SEM validar saldo suficiente — permite deixar a conta negativa (a validação de limite de cartão continua valendo). Use no lugar de create_transaction quando o usuário está registrando algo que sabidamente vai deixar o saldo negativo (ex: import de extrato retroativo) e isso é esperado, não um erro. Não suporta installments, scheduledDate, nature, ticker/exchange/shares — para parcelamento ou investimento use create_transaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesData ISO ou dd/mm/yyyy
typeYes
amountYesValor total da transação
cardIdNoObrigatório se accountId não for informado
goalIdNoMeta financeira vinculada — só tem efeito quando type é TRANSFER
isPaidNoEsta tool é para transações já efetivadas (padrão: true, aplica o efeito no saldo/fatura imediatamente). Para lançar como pendente sem afetar saldo, passe isPaid: false ou use create_transaction.
agentIdNoContato/agente (Agent) vinculado
equityIdNoInvestimento (Equity) vinculado
accountIdNoObrigatório se cardId não for informado
categoryIdNoId da Category do usuário
descriptionYesDescrição/título da transação
costCenterIdNoCentro de custo vinculado
destinationAccountIdNoObrigatório para TRANSFER
confirmNegativeBalanceNotrue confirma explicitamente que o saldo pode ficar negativo (mesmo efeito de isPaid: true nesta tool — a checagem de saldo já é pulada por padrão)

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
cardNo
dateNo
tagsNo
typeNo
agentNo
amountNo
cardIdNo
goalIdNo
isPaidNo
natureNo
userIdNo
accountNo
agentIdNo
categoryNo
equityIdNo
paidDateNo
accountIdNo
createdAtNo
updatedAtNo
categoryIdNo
costCenterNo
externalIdNo
descriptionNo
costCenterIdNo
categoryModelNo
scheduledDateNo
totalInstallmentsNo
billReminderSentAtNo
currentInstallmentNo
destinationAccountNo
destinationAccountIdNo
recurringTransactionIdNo

TDQS

A4.7/5.0
Behavior4/5

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

Annotations only indicate the tool is not read-only, not idempotent, and not destructive. The description adds meaningful behavioral detail: balance validation is skipped, negative balances are permitted, card limit validation still applies, and certain parameters are unsupported. It does not fully enumerate all side effects, but for a mutation tool this is solid transparency.

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

Conciseness5/5

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

The description is dense and well-structured: first the key differentiator, then the recommended use case, then exclusions. Every sentence adds value and there is no fluff. The most important behavioral caveat is front-loaded.

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 high schema coverage, output schema, and available sibling create_transaction, the description is complete enough for correct invocation. It explains when to use it, what behavioral difference it has, which fields it does not support, and what should be used instead. The reliance on create_transaction for baseline behavior is acceptable because that sibling is available in the context.

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 93%, and the schema already documents most parameters, so the baseline is 3. The description adds value beyond the schema by explicitly listing unsupported parameters (installments, scheduledDate, nature, ticker/exchange/shares), which helps the agent avoid invalid inputs. It also reinforces the semantic relationship with balance behavior, though it does not deeply explain every parameter.

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

Purpose5/5

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

The description clearly states the tool creates a transaction like create_transaction but without validating sufficient balance, expressly allowing negative balances. It distinguishes itself from its sibling by naming the exact behavioral difference and the unsupported fields. The purpose is unambiguous and tied to a specific verb and resource.

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 explicitly says when to use this tool instead of create_transaction: when the user registers something knowingly leaving the balance negative, such as a retroactive statement import. It also gives explicit exclusions—no installments, scheduledDate, nature, ticker/exchange/shares—and directs the user to create_transaction for those cases. This is strong, actionable routing guidance.

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

confirm_pending_transactionConfirmar transação pendenteAInspect

Marca uma transação existente (agendada ou com isPaid: false) como paga agora (paidDate = agora) e aplica o efeito no saldo da conta vinculada. Retorna 400 se a transação já estiver paga. Não reaplica efeito em cartão (limitUsed/fatura) — hoje só transações vinculadas a conta são afetadas por esta confirmação.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID da transação pendente a confirmar

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
cardNo
dateNo
tagsNo
typeNo
agentNo
amountNo
cardIdNo
goalIdNo
isPaidNo
natureNo
userIdNo
accountNo
agentIdNo
categoryNo
equityIdNo
paidDateNo
accountIdNo
createdAtNo
updatedAtNo
categoryIdNo
costCenterNo
externalIdNo
descriptionNo
costCenterIdNo
categoryModelNo
scheduledDateNo
totalInstallmentsNo
billReminderSentAtNo
currentInstallmentNo
destinationAccountNo
destinationAccountIdNo
recurringTransactionIdNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already mark this as a non-read-only, non-idempotent mutation. The description adds concrete behavioral details: sets paidDate, applies balance effect, does NOT affect card fields, and returns 400 on already-paid transactions. This enriches the annotation signals with actionable outcomes.

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 main action and immediately followed by error and limitation caveats. No filler, no repetition of schema details, and every 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 single-parameter tool with an output schema, the description covers the operation, its side effects on balance, non-effects on card, and the 400 error case. It is fully sufficient for an agent to invoke it correctly.

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

Parameters4/5

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

The schema already documents the single 'id' parameter at 100% coverage with 'ID da transação pendente a confirmar'. The description adds value by explicitly defining what 'pendente' means (agendada ou isPaid: false), narrowing the acceptable input and connecting it to the balance 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 states a specific verb and resource: 'Marca uma transação existente... como paga agora' and precisely defines the target state (agendada ou com isPaid: false). It also clarifies what it does not do (card effect), distinguishing it from sibling confirmation 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 description gives clear context for when to use the tool: for existing pending transactions only. It explicitly excludes already-paid transactions (returns 400) and card-affecting scenarios (no limitUsed/fatura effect). It does not name an alternative sibling, but the boundary is well-defined.

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

create_accountCriar contaAInspect

Cria uma conta bancária/carteira nova com o usuário autenticado como OWNER. balance é o saldo inicial (default 0), não um saldo calculado a partir de transações — o saldo depois é ajustado incrementalmente conforme transações pagas são criadas/confirmadas/excluídas.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNome da conta, ex: 'Nubank', 'Carteira'
typeYesTipo da conta, ex: CHECKING, SAVINGS, WALLET, INVESTMENT
colorNoCor hex para exibição, ex: #3B82F6
balanceNoSaldo inicial (default 0) — não recalculado a partir de transações, é o ponto de partida
bankCodeNoCódigo do banco (ex: FEBRABAN), opcional, sem validação de formato
currencyNoMoeda ISO 4217, default BRL
balanceDateNoData ISO de referência do saldo inicial informado. Default: null (sem data associada)

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
typeNo
colorNo
userIdNo
balanceNo
bankCodeNo
currencyNo
createdAtNo
updatedAtNo
balanceDateNo

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the thin annotations (all false), the description discloses the most important behavioral trait: balance is the initial value and is later adjusted incrementally as paid transactions are created/confirmed/deleted. It also states the ownership/authentication context (authenticated user as OWNER), which is exactly the kind of context that helps an agent reason about 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 the main purpose front-loaded and the critical balance nuance in the second sentence. There is no filler; each sentence 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 7-parameter creation tool with a complete schema and output schema, the description covers the core purpose, ownership, and the one non-obvious parameter behavior. It does not explicitly cover usage boundaries versus sibling tools, but the schema and name make most of the remaining context unnecessary.

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; the description goes further by explaining the balance parameter's role as a starting point and how it evolves with transactions. This adds behavioral meaning beyond the schema property description and helps the agent supply a correct initial balance.

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 the specific action 'Cria uma conta bancária/carteira nova' and adds that the authenticated user becomes OWNER, which clearly identifies the resource and scope. The create/update/delete/list sibling cluster is easily disambiguated because 'account' is named explicitly as the new resource.

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 situation where it should be used: when a new account/wallet must be created for the authenticated user. However, it does not explicitly state when not to use it or name alternatives such as update_account for existing accounts, leaving the routing partly to inference.

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

create_budgetCriar orçamentoAInspect

Cria um orçamento (limite planejado) por categoria e período. name e type são obrigatórios no banco e não têm default — omiti-los grava valores vazios e quebra o cruzamento com transações feito por budget_comparison (que casa Transaction.type = Budget.type). Efeito colateral: recalcula analytics (cashflow/networth) e insights do usuário. Diferente de create_goal (meta de acúmulo) e create_debt (dívida a pagar).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNome do orçamento (ex: 'Mercado de Janeiro')
typeYesTipo — precisa bater com o Transaction.type das transações que devem contar para este orçamento
yearYesAno do período (ex: 2026)
monthNoMês (1-12), obrigatório apenas quando period = MONTHLY
amountYesValor orçado/limite do período
periodNoPeriodicidade. Sem default no banco: se omitido, o orçamento não casa com a regra MONTHLY em budget_comparison/budget_daily e acaba tratado como anual — prefira sempre informar
categoryNoNome da categoria a limitar (deve bater com Transaction.category). Omitido ou 'ALL' = todas as categorias desse type
currencyNoMoeda (ISO 4217). Default: BRL

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
typeNo
yearNo
monthNo
amountNo
periodNo
userIdNo
categoryNo
currencyNo
createdAtNo
updatedAtNo

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations (readOnly=false, destructive=false), the description discloses an important side effect: recalculation of analytics and user insights. It also reveals harmful behavior when required fields are omitted — empty values break the join with budget_comparison — which is highly valuable for an agent.

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

Conciseness5/5

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

Three dense, well-structured sentences: the purpose comes first, followed by critical DB constraints and side effects, then sibling differentiation. Every sentence contributes value and the description remains compact.

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 description, combined with a fully documented schema, an output schema, and annotations, covers all necessary aspects: what the tool does, critical constraints, side effects, and sibling distinctions. No meaningful information an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaningful context about name and type: they are required in the database, have no default, and omitting them causes empty values and breaks transaction matching. This goes beyond the schema's required list and enum 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 description clearly states a specific action and resource: 'Cria um orçamento (limite planejado) por categoria e período.' It also explicitly differentiates itself from create_goal and create_debt, so an agent can distinguish this from similarly named budget/goal/debt creation tools.

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 explicitly names alternatives (create_goal and create_debt) and explains what each is for, making it clear when not to use this tool. It also gives critical usage warnings about mandatory name/type fields and the consequences of omitting them, which is strong operational guidance.

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

create_cardCriar cartãoAInspect

Cria um novo cartão de crédito para o usuário autenticado, com limite usado e fatura atual zerados.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNome/apelido do cartão, ex: 'Nubank Roxinho'
brandNoEx: VISA, MASTERCARD
colorNoCor hex para exibição, ex: #3B82F6
limitNoLimite total do cartão. Omita para criar um cartão 'Sem Limite' (sem teto de crédito)
dueDayYesDia do vencimento da fatura (1-31)
currencyNoMoeda ISO 4217, default BRL
accountIdNoID da conta usada para pagar a fatura deste cartão
closingDayYesDia do fechamento da fatura (1-31)
lastFourDigitsNoÚltimos 4 dígitos do cartão, só para exibição

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
brandNo
colorNo
limitNoLimite do cartão; null = Sem Limite
dueDayNo
userIdNo
currencyNo
accountIdNo
createdAtNo
limitUsedNo
updatedAtNo
closingDayNo
currentInvoiceNoTotal da fatura atual (não paga)
lastFourDigitsNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish that this is a non-read-only, non-destructive operation. The description adds behavioral context beyond the annotations by specifying that a newly created card starts with used limit and current invoice at zero and is scoped to the authenticated user. No contradiction with annotations exists.

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

Conciseness5/5

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

A single, front-loaded sentence that moves from action to resource to behavioral details without filler. Every clause earns its place: scope, resource type, and the zeroed initial state.

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 create tool with an output schema, exhaustive schema descriptions, and safety annotations, the description covers the essential domain semantics that are not in structured fields. Explicit alternative routing is the only missing element, and that is already accounted for in usage_guidelines.

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 baseline is 3 even without parameter information in the tool description. The description adds no field-level semantics, but the input schema fully documents all nine parameters, including requirements and defaults.

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 ('Cria'), a clear resource ('cartão de crédito'), and adds meaningful scope ('para o usuário autenticado') plus initial state details. This distinguishes it from sibling creation tools such as create_account, create_transaction, and update_card.

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

Usage Guidelines3/5

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

The description implies the tool is for creating a new card for the authenticated user, but it never explicitly states when to choose it over alternatives like update_card/delete_card/list_cards. It provides no exclusions or alternative routing, so guidance is only implicit.

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

create_categoryCriar categoriaAInspect

Cria uma categoria ou subcategoria do usuário (informe parentId para criar como subcategoria — o pai precisa ser do mesmo type). Opcionalmente vincula a um catálogo global (globalCategoryId/globalSubcategoryId): se informado, o type é herdado do registro global e um type divergente enviado junto gera erro 400.

ParametersJSON Schema
NameRequiredDescriptionDefault
iconNoNome do ícone, ex: 'shopping-cart'
nameYesNome da categoria/subcategoria
typeYesEXPENSE ou INCOME. Se globalCategoryId/globalSubcategoryId for informado, o type é herdado dali e precisa bater com o valor enviado aqui
colorNoCor hex, ex: #3B82F6
parentIdNoID de outra categoria do usuário para criar esta como subcategoria dela (precisa ter o mesmo type)
globalCategoryIdNoID de uma categoria do catálogo global (GlobalCategory) para vincular
globalSubcategoryIdNoID de uma subcategoria do catálogo global (GlobalSubcategory) para vincular — se informado, também resolve/preenche globalCategoryId a partir do pai dela

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
iconNo
nameNo
typeNo
colorNo
userIdNo
parentIdNo
createdAtNo
updatedAtNo
globalCategoryIdNo
globalSubcategoryIdNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations carry almost no signal — all hints are false — so the description carries the behavioral burden, and it delivers: it discloses that the type is inherited from the global record when global IDs are supplied, that a divergent type triggers a 400 error, and that parentId requires matching types. This goes meaningfully beyond the structured annotation 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?

Two dense sentences with zero filler: the core purpose is front-loaded, followed by the subcategory rule and the global-catalog inheritance caveat. Every clause earns its place — the parentheticals carry real constraints rather than 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 7 parameters, 2 required, and an output schema present, the description plus the fully-covered schema provide a complete picture of the creation variants (plain category, subcategory, global-linked). Minor gaps remain — no mention of name-uniqueness constraints or subcategory depth limits — but nothing an agent needs to invoke the tool correctly is missing.

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 baseline is 3; the schema already documents every parameter including the type-inheritance rule on the type field. The description adds some connective meaning (the parentId type-constraint and the 400-error consequence), but it mostly re-expresses what the schema already states, so no credit above baseline is warranted.

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 — "Cria uma categoria ou subcategoria do usuário" — and adds a distinguishing mechanism (parentId for subcategories), which separates it from siblings like create_transaction or create_account. The mention of the global catalog tie-in further narrows this tool's unique identity among the create_* family.

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 conditional usage context: when to use parentId (to create a subcategory), when to use globalCategoryId/globalSubcategoryId (to link to the global catalog), and the consequence of a type mismatch (400 error). It does not explicitly name alternatives like update_category or list_categories, but the create/update/list/delete split among siblings is self-evident, so the lack of exclusions is a minor gap.

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

create_cost_centerCriar centro de custoAInspect

Cria um centro de custo novo (não-padrão — isDefault sempre começa false).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNome do centro de custo
descriptionNoDescrição livre do centro de custo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
userIdNo
createdAtNo
isDefaultNo
updatedAtNo
descriptionNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already signal that this is a mutating, non-idempotent, non-destructive operation. The description adds meaningful behavioral context beyond those annotations by guaranteeing that a newly created cost center always has `isDefault` set to false, which an agent could not infer from the schema alone.

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

Conciseness5/5

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

A single, clear sentence that states the action, the object, and the most important behavioral nuance with no wasted words. The key behavior is front-loaded and easy to parse.

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?

This is a simple creation tool with only two parameters, one required, full schema descriptions, and an output schema present. The description plus annotations and schema cover all essential information an agent needs to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, and both `name` and `description` are already described in the schema. The description does not add further parameter-level semantics, but it does not need to because the schema already carries the burden.

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 ('Cria') and resource ('centro de custo novo'), and adds the key distinguishing trait that created cost centers are non-default with `isDefault` starting false. This clearly separates it from update, delete, and list siblings.

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

Usage Guidelines3/5

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

The use case is implied by the verb and the word 'novo': create a new cost center rather than updating or deleting an existing one. However, the description does not explicitly state when to prefer this over update_cost_center or mention any prerequisites, so guidance remains implicit.

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

create_debtCriar dívidaAInspect

Registra uma dívida do usuário. Se equityId for informado, precisa pertencer ao usuário (validado antes de gravar — erro 400 'Invalid equityId' caso contrário) e representa o ativo financiado por essa dívida (ex: financiamento vinculado ao imóvel). Efeito colateral: recalcula analytics (patrimônio líquido) e insights do usuário.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNome/descrição da dívida (ex: 'Financiamento do carro')
statusNoDefault: ACTIVE
dueDateNoData de vencimento (ISO)
categoryNoCategoria livre da dívida (ex: 'Financiamento', 'Empréstimo pessoal')
creditorNoNome do credor/instituição
currencyNoMoeda (ISO 4217). Default: BRL
equityIdNoId de um Equity (investimento/ativo) do usuário financiado por esta dívida
descriptionNo
totalAmountYesValor total original da dívida
interestRateNoTaxa de juros mensal em % (ex: 1.5 = 1.5% a.m.), usada para projetar o saldo devedor futuro
remainingAmountNoSaldo devedor atual. Default: 0 se omitido — informe para não zerar a dívida por engano

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
statusNo
userIdNo
dueDateNo
categoryNo
creditorNo
currencyNo
equityIdNo
createdAtNo
updatedAtNo
descriptionNo
totalAmountNo
interestRateNo
remainingAmountNo

TDQS

A4.5/5.0
Behavior5/5

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

The description discloses meaningful behavioral details beyond the annotations: equityId is validated to belong to the user before saving, with a specific 400 'Invalid equityId' error otherwise. It also explicitly warns about the side effect of recalculating analytics and insights, which is exactly the kind of non-obvious behavior an agent needs to know.

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 efficiently structured: a one-line primary purpose, then the most important conditional parameter behavior, then the side effect disclosure. Every sentence adds information not already available in the schema or annotations, with no filler.

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 complexity (11 parameters, 2 required, a create operation with side effects) and the rich schema and output schema, the description covers the essential non-obvious aspects: equityId ownership constraints, the resulting error, and analytics/insights recalculation. Nothing critical for correct invocation appears to be 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?

With 91% schema description coverage, the schema already documents most parameters well. The description adds valuable semantic context for equityId by explaining ownership validation, the error case, and the asset-financed-by-debt relationship, going beyond the schema's brief field description.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Registra uma dívida do usuário' (records a user's debt), making the tool's core action immediately clear. It also adds distinguishing details like the equityId financing relationship, which separates this create-debt operation from generic transaction or account creation siblings.

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

Usage Guidelines3/5

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

The description clearly implies this is for registering a new debt, and the presence of update_debt/delete_debt siblings makes the create-vs-update distinction inferable. However, it never explicitly states when to choose create_debt over update_debt or how to handle an existing debt, so the guidance remains implied rather than explicit.

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

create_equityCriar investimentoAInspect

Cria um ativo de investimento (Equity) e, no mesmo statement atômico, registra sua primeira avaliação (EquityValuation) com value/cost/data informados — equivalente a criar o ativo e já chamar add_equity_valuation uma vez. Dispara recálculo best-effort de projeções e insights em background.

ParametersJSON Schema
NameRequiredDescriptionDefault
costNoCusto/valor investido. Default: igual a value (sem ganho/perda registrado se omitido)
nameYesNome do investimento
typeYesTipo do ativo — ex: stocks, crypto, real-estate-house, real-estate-apt, vehicle-car, business, cash, jewelry, art. Usado para agrupar a alocação em investments_workspace
colorNoCor associada ao investimento na UI (ex: hex '#RRGGBB')
valueYesValor de mercado atual do investimento
sharesNoQuantidade de cotas/ações compradas, se aplicável
tickerNoCódigo do ativo na bolsa/exchange (ex: PETR4). Convertido para maiúsculas
exchangeNoBolsa/exchange onde o ativo é negociado
descriptionNoDescrição livre do investimento
acquisitionDateNoData de aquisição (ISO). Default: agora

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
costNo
nameNo
typeNoTipo do ativo — ex: stocks, crypto, real-estate-house
colorNo
valueNo
sharesNo
tickerNo
userIdNo
exchangeNo
createdAtNo
updatedAtNo
descriptionNo
acquisitionDateNo

TDQS

A4.5/5.0
Behavior5/5

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

As annotations são todas negativas/falsas e não informam os comportamentos relevantes. A descrição adiciona contexto valioso: atomicidade da operação, criação simultânea da primeira EquityValuation com value/cost/data e recálculo best-effort em background. Não há contradição com as 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?

Duas frases objetivas: a primeira entrega a função central e a atomicidade; a segunda adiciona o efeito assíncrono. Não há palavras redundantes nem informações desnecessárias. A estrutura é front-loaded e eficiente.

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?

Com 10 parâmetros, schema 100% coberto, output schema presente e annotations fornecidas, a descrição cobre os comportamentos não óbvios: operação atômica, primeira avaliação e recálculo em background. A não idempotência é sinalizada por idempotentHint=false, então não é uma lacuna. Nada essencial falta para o agente invocar corretamente.

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?

O schema cobre 100% dos 10 parâmetros com descrições próprias, então o baseline é 3. A descrição apenas menciona que value/cost/data alimentam a primeira avaliação, sem acrescentar detalhes além do schema. Ela não compensa nem contradiz as definições paramétricas já existentes.

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?

A descrição é específica: cria um ativo de investimento (Equity), registra a primeira avaliação (EquityValuation) no mesmo statement atômico e dispara recálculo em background. Isso a distingue claramente de add_equity_valuation, update_equity e list_equities. Não há ambiguidade sobre o recurso ou a ação.

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?

A descrição posiciona a ferramenta em relação a add_equity_valuation: criar o ativo e já chamar add_equity_valuation uma vez é equivalente a este tool. Isso indica que avaliações subsequentes devem usar add_equity_valuation, mas não há uma regra explícita de quando não usar. A orientação é clara, porém implícita.

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

create_goalCriar metaAInspect

Cria uma meta financeira (ex: 'Viagem', 'Reserva de emergência'). category e color são obrigatórios no banco — se omitidos, a meta é criada com esses campos vazios (string ''), então prefira sempre informá-los. Não dispara recalculo de analytics/insights (diferente de create_budget/create_debt).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNome/título da meta
colorNoCor de exibição (hex, ex: '#22C55E'). Campo obrigatório no banco — omitir grava string vazia
categoryNoCategoria/tipo da meta (texto livre, ex: 'Viagem', 'Casa'). Campo obrigatório no banco — omitir grava string vazia
currencyNoMoeda (ISO 4217, ex: 'BRL'). Default: BRL
deadlineNoPrazo da meta (data ISO, ex: YYYY-MM-DD). Default: sem prazo (null)
targetAmountYesValor alvo a ser atingido
currentAmountNoValor já acumulado hoje. Default: 0

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
colorNo
userIdNo
categoryNo
currencyNo
deadlineNo
createdAtNo
updatedAtNo
targetAmountNo
currentAmountNo

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations (which only indicate non-read-only and non-idempotent), the description discloses a critical database behavior: category and color are required at the DB level but get silently stored as empty strings if omitted, with a recommendation to always provide them. It also explicitly states that no analytics/insights recalculation is triggered, a useful side-effect trait for the agent.

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

Conciseness5/5

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

The description is compact and well-structured: purpose first, then a critical behavioral warning, then a differentiation note. Every sentence adds distinct value with no repetition or filler.

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 presence of a complete input schema and output schema, the description covers the essential operational nuances not evident from structured data: the DB-level required fields and the absence of analytics recalculation. An agent has enough context to invoke the tool correctly without needing additional 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?

Schema description coverage is 100%, so all seven parameters are already documented with meaningful descriptions. The tool description mostly repeats the category/color DB-required caveat already present in the schema, adding only the advice to prefer providing them. Since the schema carries the heavy lifting, a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('Cria') and resource ('meta financeira') with concrete examples ('Viagem', 'Reserva de emergência'). It also differentiates from create_budget and create_debt by noting the analytics recalculation difference, making the tool's scope clear even among many create_* 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 explicitly names create_budget and create_debt as alternatives in the context of analytics recalculation, providing a clear criterion for choosing this tool over those when no recalculation is desired. It does not, however, explain the broader semantic differences between a goal, budget, and debt, so some inference is still required.

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

create_recurring_transactionCriar transação recorrenteAInspect

Cria uma regra recorrente e, de uma vez, já gera todas as transações concretas entre startDate e endDate (default endDate: 1 ano após startDate) — as datadas até hoje entram como pagas e afetam o saldo da conta imediatamente; as futuras entram como pendentes. Se cardId for informado, também cria/vincula as faturas de cartão correspondentes a cada ocorrência EXPENSE. Diferente de Transaction, RecurringTransaction não tem categoryId (FK) — category é só um rótulo texto livre.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesTipo de cada ocorrência gerada
amountYesValor de cada ocorrência gerada
cardIdNoCartão usado para ocorrências EXPENSE — gera fatura correspondente para cada uma
natureNoDefault: PERSONAL
endDateNoData ISO da última ocorrência a gerar. Default: 1 ano após startDate
categoryNoRótulo livre da categoria (texto, não é um categoryId/FK — RecurringTransaction não referencia a tabela Category)
accountIdNoConta usada para débito/crédito de cada ocorrência
frequencyYesEx: MONTHLY, WEEKLY, YEARLY
startDateYesData ISO da primeira ocorrência
descriptionYesDescrição de cada ocorrência gerada
costCenterIdNoCentro de custo aplicado a cada ocorrência gerada
destinationAccountIdNoConta de destino, se as ocorrências forem transferências

Output Schema

ParametersJSON Schema
NameRequiredDescription
successNo
invoiceErrorsNo
invoicesCreatedNo
recurringTransactionNo
transactionsGeneratedNo

TDQS

A4.7/5.0
Behavior5/5

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

Annotations are all false, so the description carries the full burden for behavioral disclosure. It reveals that past-dated occurrences become paid and immediately affect balance, future ones are pending, and card invoices are created for EXPENSE occurrences when cardId is supplied — exactly the non-obvious side effects an agent needs to know.

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 with no filler: the core behavior, default endDate, payment status split, card invoice behavior, and the categoryId contrast are each presented once and all earn their place. Key information is front-loaded.

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?

With an output schema available, return-value explanation is unnecessary. The description covers the non-obvious behaviors (immediate balance impact, pending future occurrences, card invoice creation, category free-text semantics) and leaves field mechanics to the fully described schema, making it complete for a 12-parameter create 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 coverage is 100%, so the baseline is 3. The description adds value by explaining the temporal consequence of startDate/endDate (past occurrences paid, future pending) and reinforcing the cardId invoice behavior beyond the raw 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 description states a specific action ('Cria uma regra recorrente e, de uma vez, já gera todas as transações concretas entre startDate e endDate') and explicitly distinguishes RecurringTransaction from Transaction by noting the absence of categoryId. This makes the tool's purpose unambiguous and separable from sibling create_transaction.

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

Usage Guidelines4/5

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

It gives clear context for when to use the tool and directly contrasts with Transaction, signaling that if a real category FK is needed, the one-off Transaction tool is the alternative. It does not explicitly enumerate all when-not scenarios, but the distinction is enough to route an agent correctly.

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

create_tagCriar tagAInspect

Cria uma nova tag para marcar transações do usuário autenticado. Não valida duplicidade de nome.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNome da tag
colorNoCor da tag (ex: hex '#RRGGBB')

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
colorNo
userIdNo
createdAtNo
updatedAtNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already mark this as non-read-only, non-idempotent, and non-destructive. The description adds a non-obvious behavioral caveat: 'Não valida duplicidade de nome', which tells the agent duplicate names are allowed and not rejected. It also scopes the operation to the authenticated user's transactions.

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 in Portuguese, front-loaded with the action and followed by the one caveat that matters. No filler 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 simple two-parameter creation tool with output schema and safety annotations, the description covers the essential behavior. It could additionally direct the agent to list existing tags when uniqueness matters, but that is a usage-guidance enhancement rather than a blocker.

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

Parameters4/5

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

With 100% schema coverage, the schema already documents both parameters. The description adds one meaningful parameter-related fact: the `name` field is not validated for duplicate, so the agent should not assume uniqueness. This goes beyond the schema's plain type/description.

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: 'Cria uma nova tag para marcar transações do usuário autenticado.' It clearly identifies what is created and for whom, and the resource 'tag' distinguishes it from sibling tools like create_category and create_transaction.

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

Usage Guidelines2/5

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

No guidance on when to prefer this tool over alternatives is given. It does not mention checking existing tags with list_tags before creating, nor any condition that would rule this tool out. The duplicate-name warning is behavioral, not usage routing.

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

create_transactionCriar transaçãoAInspect

Cria uma transação (EXPENSE/INCOME/TRANSFER). Requer accountId ou cardId. Se a transação vai ser considerada paga agora (isPaid não-false e sem scheduledDate futura), valida saldo suficiente na conta (EXPENSE/TRANSFER) ou limite disponível no cartão (EXPENSE) e retorna 400 se faltar — para permitir saldo negativo use confirm_new_transaction. scheduledDate no futuro agenda a transação sem tocar saldo/limite até ser confirmada depois (confirm_pending_transaction). installments > 1 divide amount em parcelas iguais e cria as ocorrências futuras automaticamente. category 'INVESTMENT' + EXPENSE/INCOME atualiza o valor/custo de um Equity (cria um novo via ticker/exchange se não existir nenhum, ou usa/cria um 'Investimentos Gerais' default). Para TRANSFER com goalId, incrementa o progresso da meta. Dispara recálculo de projeções e insights (best-effort) e um alerta de orçamento (push) se estourar categoria.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesData ISO ou dd/mm/yyyy (normalizada automaticamente)
typeYes
amountYesValor total da transação — se installments > 1, é o valor total, dividido igualmente entre as parcelas
cardIdNoCartão usado (só para EXPENSE). Obrigatório se accountId não for informado
goalIdNoMeta financeira vinculada — só tem efeito (incrementa progresso) quando type é TRANSFER
isPaidNoDefault: calculado a partir de date/scheduledDate (passado/hoje = true). Force false para lançar como pendente mesmo com data passada
natureNoPERSONAL, PROFESSIONAL, MIXED ou BUSINESS. Default: PERSONAL
sharesNoQuantidade de cotas/ações da operação de investimento, se aplicável
tickerNoTicker do ativo (ex: PETR4) — usado só quando categoryId aponta pra categoria 'INVESTMENT', pra achar/criar o Equity correspondente
agentIdNoContato/agente (Agent) vinculado à transação
equityIdNoInvestimento (Equity) a atualizar diretamente, alternativa a ticker/exchange
exchangeNoBolsa do ativo, usado junto com ticker ao criar um novo Equity
paidDateNoData ISO em que foi efetivamente paga, se diferente de date
accountIdNoConta debitada/creditada. Obrigatório se cardId não for informado
categoryIdNoId da Category do usuário
descriptionYesDescrição/título da transação
costCenterIdNoCentro de custo vinculado
installmentsNoNúmero de parcelas (>1 gera parcelas futuras adicionais, tipicamente usado com cardId)
scheduledDateNoData ISO futura — agenda a transação como pendente sem afetar saldo/limite até ser confirmada
destinationAccountIdNoObrigatório para TRANSFER — conta de destino

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
cardNo
dateNo
tagsNo
typeNo
agentNo
amountNo
cardIdNo
goalIdNo
isPaidNo
natureNo
userIdNo
accountNo
agentIdNo
categoryNo
equityIdNo
paidDateNo
accountIdNo
createdAtNo
updatedAtNo
categoryIdNo
costCenterNo
externalIdNo
descriptionNo
costCenterIdNo
categoryModelNo
scheduledDateNo
totalInstallmentsNo
billReminderSentAtNo
currentInstallmentNo
destinationAccountNo
destinationAccountIdNo
recurringTransactionIdNo

TDQS

A4.6/5.0
Behavior5/5

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

Annotations are minimal (all flags false), so the description carries the burden — and it delivers: validation failure mode with 400 on insufficient balance/limit, conditional validation gated on isPaid and scheduledDate, side effects (best-effort recalculation of projections/insights, budget push alert), and per-parameter behavioral branching (installments generating future occurrences, Equity create/update with a default fallback, goal progress on TRANSFER). Nothing contradicts 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?

A single dense paragraph of roughly 170 words with zero filler — every clause carries semantic weight, and the core action plus required-field note come first. However, the density hurts scannability: the investment/Equity portion stacks multiple conditionals into one sentence, and bullet structure would make the conditional behaviors easier for an agent to parse.

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 20-parameter tool with an output schema present, the description covers the cross-cutting behaviors that the flat schema cannot convey: validation gates, scheduling semantics, installments, Equity creation/update with default fallback, goal interaction, and post-creation side effects. Only minor edge cases are uncovered (e.g., both accountId and cardId supplied together), and those are marginal given the rich schema and output schema.

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

Parameters4/5

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

With 95% schema coverage, the baseline is 3 and the schema already documents most parameters. The description adds genuinely cross-parameter semantics the flat schema cannot express: the accountId XOR cardId requirement summarized, the isPaid × scheduledDate gate that toggles fund validation, the amount/installments relationship, and the default 'Investimentos Gerais' Equity fallback that appears nowhere in 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 opens with a specific verb and resource — 'Cria uma transação (EXPENSE/INCOME/TRANSFER)' — and immediately delimits scope: a single transaction of three possible types. It semantically separates from the confirm_* siblings (which confirm rather than create) and from create_recurring_transaction (which creates a recurring pattern rather than a single transaction with installments).

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 names alternatives with conditions: 'para permitir saldo negativo use confirm_new_transaction' and the scheduling flow that later routes to confirm_pending_transaction. However, it gives no guidance about when to prefer create_recurring_transaction — the closest sibling, also a transaction-creating tool — nor about update/delete fallbacks.

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

current_month_spendingGastos do mês atualA
Read-only
Inspect

Só o mês corrente (não série futura): gasto já realizado, ritmo diário, total projetado até o fim do mês e confiança da projeção, comparado a orçamento se houver. Diferente de cashflow_forecast/spending_projection (que olham vários meses à frente) e de categories_insights (que compara mês atual vs anterior por categoria, sem ritmo/projeção de fechamento).

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdNoId do cliente a consultar (uso de planejador financeiro); omitido usa o próprio usuário autenticado
topCategoriesNoQuantas categorias trazer em topCategories, 1-20 (default 5)

Output Schema

ParametersJSON Schema
NameRequiredDescription
budgetNo
dailyPaceNo
confidenceNo
overBudgetNo
spentSoFarNo
daysElapsedNo
daysInMonthNo
generatedAtNo
topCategoriesNo
projectedTotalNo
dailyBudgetSimpleNo
dailyBudgetByWeekdayNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already carry readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds behavioral context beyond those: the strict current-month scope, the fact that projections include a confidence level, and the conditional budget comparison ('se houver'). No contradictions 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?

A single dense sentence front-loads the critical scope constraint, then lists the computed outputs, then states exclusions. Every clause earns its place: nothing is filler, and the sibling differentiation is packed into the trailing clause without bloating the text.

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 analytics tool with an output schema present, the description covers everything needed: scope limitation, the set of computed values, the conditional budget comparison, and sibling differentiation. Return structure is already handled by the output schema, so no additional information is missing.

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

Parameters3/5

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

Schema description coverage is 100%: both userId (client id for financial planner use, defaults to authenticated user) and topCategories (count range 1-20, default 5) are fully documented in the schema. The description adds no parameter-specific information, so the baseline of 3 applies — the schema carries the heavy lifting.

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 resource (current month spending) and enumerates exactly what is computed: realized spending, daily pace, projected total to end of month, projection confidence, and budget comparison when a budget exists. It also bounds the scope with 'Só o mês corrente (não série futura)' and explicitly contrasts itself with three sibling tools, so an agent can distinguish it without opening any 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?

The description explicitly names alternatives and the condition that selects them: cashflow_forecast/spending_projection for multi-month forward looks, and categories_insights for month-over-month category comparison without pace/closing projection. An agent deciding between these tools has clear routing criteria and no inference is required.

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

debt_payoff_planPlano de quitação de dívidaA
Read-only
Inspect

Simula a quitação de UMA dívida: informe targetMonths (quanto pagar por mês pra quitar em N meses) OU monthlyPayment (em quantos meses quita pagando R$X/mês) — nunca os dois. Devolve o valor mensal, total pago, juros totais e o impacto no saldo projetado (inclusive se cria mês no vermelho). Não grava nada, é só simulação — para efetivamente abater o saldo use update_debt (remainingAmount).

ParametersJSON Schema
NameRequiredDescriptionDefault
debtIdYesid da dívida (ver list_debts)
targetMonthsNoQuero quitar em N meses — devolve o valor mensal necessário
monthlyPaymentNoPosso pagar R$X/mês — devolve em quantos meses quita

Output Schema

ParametersJSON Schema
NameRequiredDescription
textNo
debtIdNo
monthsNo
debtNameNo
totalPaidNo
totalInterestNo
monthlyPaymentNo
interestRatePctNo
projectedImpactNo
remainingAmountNo
newNegativeMonthsNo

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnlyHint/destructiveHint annotations, the description discloses that nothing is persisted, the exact computed outputs (monthly amount, total paid, total interest, projected balance impact including negative months), and the simulation nature. It reinforces and expands on 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?

Two dense sentences carry purpose, input rules, output summary, and the alternative tool. The most important scoping information (simulation, one debt, exclusive parameters) is front-loaded, and every phrase 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 read-only simulation with an output schema, the description covers what the tool does, what inputs are allowed, what it returns, and what to use instead for real changes. An agent has everything it needs to invoke it correctly and avoid confusing it with update_debt.

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 schema already documents all three parameters. The description adds real value by explaining the mutually exclusive relationship between targetMonths and monthlyPayment, and by linking each one to its computed result, which the schema alone does not convey.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Simula a quitação de UMA dívida' (simulates paying off one debt), and immediately clarifies it is a simulation, not an actual write. It distinguishes itself from update_debt by name, so an agent can tell planning from execution.

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 explicitly states the two possible input modes (targetMonths OR monthlyPayment), forbids using both ('nunca os dois'), and tells the agent to use update_debt(remainingAmount) instead when the goal is to actually reduce the balance. This gives clear when/when-not guidance.

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

delete_accountExcluir contaA
DestructiveIdempotent
Inspect

Exclui uma conta permanentemente. Só o dono (userId da conta) pode excluir — membros de uma conta conjunta não conseguem, mesmo podendo editá-la via update_account. Não há confirmação adicional nem verificação de transações/cartões vinculados antes de excluir.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID da conta a excluir

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations (destructiveHint=true, readOnlyHint=false), the description reveals that deletion is permanent and irreversible, that there is no extra confirmation step, and that linked transactions/cards are not checked before deletion. This is meaningful behavioral context an agent needs to warn the user or set expectations.

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 action and permanence, the permission restriction and sibling contrast, and the missing safety checks. 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.

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 full schema coverage, an output schema, and annotations already covering side effects, the description provides all essential context: who may call it, what it does, and what it does not do. Nothing critical is missing.

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

Parameters3/5

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

Schema coverage is 100%, and the `id` parameter is already described as "ID da conta a excluir." The description mentions `userId` in an authorization context but does not add further semantic detail about the parameter itself. Baseline 3 is appropriate given the high schema coverage.

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

Purpose5/5

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

The description opens with "Exclui uma conta permanentemente," which names a specific verb (delete), a specific resource (account), and the key property (permanently). It also differentiates itself from update_account by stating that joint account members can edit but cannot delete.

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 explicitly states who is allowed to use the tool: only the account owner, identified by `userId`. It also gives a clear when-not condition: joint account members cannot delete even though they can edit via update_account, naming the alternative tool directly.

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

delete_budgetExcluir orçamentoA
DestructiveIdempotent
Inspect

Exclui um orçamento. Efeito colateral: recalcula analytics e insights do usuário. Não apaga nem desvincula as transações que eram comparadas contra ele.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId do orçamento (Budget) a excluir

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
successNo

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the annotations (destructiveHint=true, idempotentHint=true), the description discloses two important behavioral details: it recalculates user analytics and insights, and it does not delete or unlink transactions compared against the budget. This adds meaningful context about side effects and non-effects, which is exactly what an agent needs.

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 short sentences, front-loading the primary action and immediately following with the most critical side effects. Every sentence adds value and there is no redundant wording.

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 tool with a single documented parameter, output schema present, and annotations covering safety and idempotency, the description covers the remaining behavioral context (side effects and what is not affected). Nothing essential is missing for an agent to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, and the single parameter 'id' is fully described in the schema as the budget ID to delete. The description adds no additional parameter-level meaning, so 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 uses a specific verb ('Exclui') and resource ('orçamento'), clearly identifying what the tool deletes. It implicitly differentiates from sibling tools like create_budget, update_budget, and list_budgets by stating the delete operation on the exact resource.

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 usage context is implied: use this when you need to delete a budget. However, the description does not explicitly state when to use this tool over alternatives, nor does it mention any exclusions or prerequisites. It provides no direct routing guidance among the budget-related sibling tools.

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

delete_cardExcluir cartãoA
DestructiveIdempotent
Inspect

Exclui um cartão de crédito permanentemente. Não há verificação de faturas em aberto ou transações vinculadas antes de excluir.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID do cartão a excluir

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description adds important behavioral context: deletion is permanent and no validation is performed for open invoices or linked transactions. This gives the agent a clear picture of consequences not inferable from annotations alone.

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

Conciseness5/5

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

Two concise sentences cover the action, permanence, and a key warning. There is no redundant or vague text, and 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.

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 destructive operation with an output schema and clarifying annotations, the description is complete. It covers what is deleted, that it is permanent, and the risk of unverified linked data, leaving no critical gap 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?

The input schema fully documents the only parameter 'id' with 'ID do cartão a excluir'. The description adds no extra meaning about the id's format or how to determine the correct value, so it does not meaningfully improve on 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 action and resource: 'Exclui um cartão de crédito permanentemente' (permanently deletes a credit card). This clearly distinguishes it from sibling tools like update_card and list_cards.

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

Usage Guidelines3/5

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

The description implies the tool is used when a card must be permanently deleted and warns that no invoice or transaction checks occur. However, it does not explicitly state when to prefer this tool over alternatives or mention any conditions or prerequisites.

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

delete_categoryExcluir categoriaA
DestructiveIdempotent
Inspect

Exclui uma categoria (ou subcategoria) permanentemente. Não há verificação de transações/orçamentos vinculados antes de excluir — não exclui em cascata subcategorias filhas.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID da categoria a excluir

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate destructive and idempotent behavior, but the description adds important non-obvious details: there is no verification of linked transactions/budgets before deletion, and child subcategories are not cascade-deleted. This goes beyond what annotations alone 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?

The description is two short, purposeful sentences. The main behavior is front-loaded, and the critical caveats about linked data and subcategory handling are stated without unnecessary words.

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

Completeness4/5

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

For a one-parameter destructive operation with an output schema and strong annotations, the description covers the essential behavioral context: permanence, absence of validation, and non-cascade behavior. It does not explain what happens to orphaned subcategories, but the other structured information reduces that burden.

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 already covers the only parameter 'id' with a description, so the baseline is 3. The tool description confirms that the id may refer to a category or subcategory but does not add deeper semantic detail beyond the schema.

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

Purpose5/5

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

The description opens with 'Exclui uma categoria (ou subcategoria) permanentemente,' which clearly states the specific action, resource, and scope. It also clarifies that subcategories are included, distinguishing it from broader or sibling delete tools.

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 purpose statement makes it clear that this tool is used when a category or subcategory should be removed. However, it does not explicitly mention alternatives like update_category or create_category, nor does it state conditions for when this tool should not be used.

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

delete_cost_centerExcluir centro de custoA
DestructiveIdempotent
Inspect

Exclui um centro de custo permanentemente. Retorna erro se o centro de custo for o padrão (isDefault: true) — todo usuário precisa ter ao menos um. Não verifica transações/recorrências vinculadas antes de excluir.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID do centro de custo a excluir

Output Schema

ParametersJSON Schema
NameRequiredDescription
successNo

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations, the description discloses two important behaviors: the operation is permanent, and there is no validation of linked transactions/recurrences before deletion. This is exactly the kind of safety-critical behavioral context an agent needs before calling 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?

Two sentences, front-loaded with the core action followed by essential caveats. Every sentence adds value and there is no redundant or vague wording.

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, the description covers the action, irreversibility, a critical error condition, and the lack of referential checks. Nothing essential is missing for an agent to decide whether and how to invoke 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?

The schema already fully documents the single `id` parameter with 100% coverage. The description does not add extra parameter-level detail, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states a specific action ('Exclui permanentemente') on a specific resource ('centro de custo'), and adds distinguishing details like the default cost center protection. It is unambiguous and immediately differentiates this deletion tool from update or list cost center 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 description provides clear context for when deletion is allowed: it will fail for the default cost center, and it warns that linked transactions/recurrences are not checked. It doesn't explicitly name alternative tools, but the usage conditions are strong enough to guide an agent.

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

delete_debtExcluir dívidaA
DestructiveIdempotent
Inspect

Exclui uma dívida. Efeito colateral: recalcula analytics (patrimônio líquido) e insights do usuário.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId da dívida (Debt) a excluir

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo

TDQS

A4/5.0
Behavior4/5

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

The description explicitly discloses a side effect beyond the annotations: deleting a debt recalculates analytics (net worth) and user insights. This complements the destructiveHint and idempotentHint annotations with additional consequence information, though it does not detail the exact output.

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 short sentences with no filler: the primary action comes first, followed by the key side effect. Every sentence 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 simple single-parameter tool, an output schema, and annotations covering destructive/idempotent behavior, the description is nearly complete. The only small gap is the absence of explicit usage guidance, but the core purpose and side effects are fully covered.

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

Parameters3/5

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

Schema description coverage is 100%, with the single id parameter already documented as 'Id da dívida (Debt) a excluir'. The description adds no new parameter-level meaning, so the baseline 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 opens with 'Exclui uma dívida', a specific verb and resource that clearly identifies the operation as deleting a debt. This differentiates it from sibling delete_* and update_debt tools by naming the exact resource affected.

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 usage context is implied by the verb 'Exclui' and the resource, so an agent can infer this is for removing debts. However, there is no explicit statement about when to prefer this over alternative tools such as update_debt or delete_transaction, or any exclusions or prerequisites.

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

delete_equityExcluir investimentoA
DestructiveIdempotent
Inspect

Exclui permanentemente um ativo de investimento do usuário dono (id = id do investimento). Não afeta transações já lançadas ligadas a ele (equityId fica órfão); o histórico de avaliações (EquityValuation) é removido junto via cascade do banco. count retorna 0 se o id não existir ou não pertencer ao usuário (sem erro).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId do investimento a excluir

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo

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 destructiveHint annotation by disclosing that deletion is permanent, related transactions remain but become orphaned, EquityValuation history is removed via cascade, and count returns 0 without error when the id does not exist or is not owned by the user.

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 compact and front-loaded with the primary action, followed by the two most important consequences and an edge-case behavior. Every sentence adds value and there is no redundant or promotional language.

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?

With one simple parameter and an output schema present, the description fully covers the tool's behavior: what is deleted, what is preserved, what is cascaded, and how missing or unauthorized ids are handled. No critical context is missing.

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

Parameters4/5

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

The schema already fully documents the id parameter, so the baseline is 3. The description adds meaningful semantics: the id must belong to the user, and nonexistent or unauthorized ids produce a silent count of 0 rather than an error.

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 permanently deletes an investment asset belonging to the owner user. It clearly distinguishes itself from sibling tools like update_equity and list_equities by emphasizing permanence and the delete 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 intended use is clear: call this when permanently removing an investment asset. It does not explicitly name alternatives or exclusions, but the ownership condition and the no-error behavior for missing ids provide sufficient context for when this tool applies.

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

delete_goalExcluir metaA
DestructiveIdempotent
Inspect

Exclui permanentemente uma meta do usuário. Não afeta transações já vinculadas a ela (Transaction.goalId fica órfão).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId da meta (Goal) a excluir

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo

TDQS

A4.1/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, and the description builds on them by disclosing irreversibility ('permanentemente') and the side-effect that Transaction.goalId becomes orphaned. This adds genuine behavioral context beyond what annotations convey.

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

Conciseness5/5

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

Two short sentences with the primary action front-loaded and the critical side-effect second. There is no filler or repetition of the input schema.

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 one-parameter delete operation, the definition supplies the irreversible behavior, the scope ('do usuário'), and the important consequence for linked transactions. Combined with the annotations and full schema coverage, nothing essential is missing to invoke this tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%: the schema already documents 'id' as 'Id da meta (Goal) a excluir'. The description adds no parameter-level detail, so it neither improves nor harms the schema's baseline.

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

Purpose4/5

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

The description uses a specific verb and resource ('Exclui permanentemente uma meta') and adds a meaningful behavioral qualifier ('Não afeta transações já vinculadas'), so an agent can tell this is a goal-deletion operation distinct from deleting transactions. It does not explicitly reference sibling tools, so it stops short of the strongest differentiation.

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 sentence 'Não afeta transações já vinculadas a ela' gives clear decision-relevant context: use this when the goal should be removed but its linked transactions must be preserved. It does not spell out when-not-to-use or name an alternative like delete_transaction, so it lacks explicit exclusions.

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

delete_recurring_transactionExcluir transação recorrenteA
DestructiveIdempotent
Inspect

Remove a regra recorrente e TODAS as transações que ela já gerou (inclusive futuras/pendentes e vínculos de fatura de cartão) — reverte o limite usado do cartão das ocorrências já pagas antes de apagar. Ação irreversível; para só parar de gerar novas ocorrências sem apagar o histórico, use update_recurring_transaction com isActive: false.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID da regra recorrente a excluir

Output Schema

ParametersJSON Schema
NameRequiredDescription
successNo

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the destructiveHint and readOnlyHint annotations, the description discloses the full cascade: it removes generated transactions including pending/future ones, unlinks card invoice associations, and reverses used card limits on already paid occurrences. It also explicitly states the action is irreversible. This goes well beyond what annotations already 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 opens with the core destructive action and its scope, then adds the irreversibility warning and the safer alternative. Each clause contributes necessary information without redundancy or filler.

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 destructive cascade operation with a single parameter, the description covers the full deletion scope, side effects on card limits, irreversibility, and the alternative. An output schema exists, so return-value details need not be explained in the description.

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

Parameters3/5

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

The single parameter id is already fully described in the input schema as the ID of the recurring rule to delete. The description does not add new parameter-specific semantics, but with 100% schema description coverage, the schema carries the burden adequately.

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 identifies the specific action: removing a recurring rule and ALL transactions it generated, including future/pending ones and card invoice links. It also clearly distinguishes this from the sibling update_recurring_transaction by naming it and explaining what it does differently. An agent can confidently select this tool for full deletion.

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 explicitly states when to use this tool: when the recurring rule and its generated transactions should be removed entirely. It also provides the alternative: use update_recurring_transaction with isActive: false if only future generation should stop without deleting history. This is direct, actionable routing guidance.

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

delete_tagExcluir tagA
DestructiveIdempotent
Inspect

Exclui uma tag permanentemente (id = id da tag). Não afeta as transações que a usavam além de removê-la delas (relação N:N com cascade). count retorna 0 se o id não existir ou não pertencer ao usuário (sem erro).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId da tag a excluir

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo

TDQS

A4.5/5.0
Behavior5/5

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

The description adds meaningful behavior beyond the annotations: deletion is permanent, transactions are only affected by removing the tag reference via N:N cascade, and a non-existent or unauthorized id returns count 0 without error. This directly explains what gets destroyed and how failures behave.

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 tight sentences, each adding distinct value: the core action, the cascade effect, and the edge-case behavior. No filler or redundant explanation is present.

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 deletion tool with annotations and an output schema, the description covers the essential operating details: permanent deletion, cascading effects, and response behavior for invalid or unauthorized ids. Nothing critical is missing.

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

Parameters3/5

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

Schema coverage is 100% and the sole parameter id is already documented in the schema. The description repeats that id identifies the tag, which adds little beyond what the schema provides, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states a specific action — permanently deleting a tag by its id — and distinguishes this tool from other delete_* siblings by naming the resource and the permanent nature of the operation. It also explains the cascading relationship with transactions, which adds precision beyond 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 Guidelines4/5

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

The intended use is clear: call this when a tag should be permanently removed. While it does not explicitly name alternatives like update_tag for editing or list_tags for viewing, the context makes the appropriate usage obvious and there are no ambiguous exclusions.

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

delete_transactionExcluir transaçãoA
DestructiveIdempotent
Inspect

Exclui uma transação permanentemente e, se ela estava paga (isPaid: true), reverte seu efeito: devolve/desconta o saldo da conta (e da conta de destino, se TRANSFER), decrementa a meta vinculada (se TRANSFER com goalId) e reverte o efeito no cartão/fatura (se cardId). Ação irreversível.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID da transação a excluir

Output Schema

ParametersJSON Schema
NameRequiredDescription
successNo

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the annotations. destructiveHint=true only flags destructiveness, while the description details exactly what is reverted — account balance (and destination account if TRANSFER), linked goal if TRANSFER with goalId, card/invoice effect if cardId — conditioned on isPaid: true, and closes with 'Ação irreversível.' This is precisely the side-effect context an agent needs to predict the consequences of the call.

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 sentence that front-loads the primary action and then lists structured conditionals. Every clause earns its place — no filler — but the run-on structure with nested qualifiers ('se TRANSFER', 'se TRANSFER com goalId', 'se cardId') is heavier to scan than a short bulleted breakdown would be.

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 single-parameter destructive tool, coverage is strong: the operation, the conditional side-effect cascade, and irreversibility are all present. The remaining gaps — behavior when the id does not exist or was already deleted, and return values — are largely covered by annotations (idempotentHint=true) and the output schema respectively.

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

Parameters3/5

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

Schema coverage is 100%: the single 'id' parameter already has a description ('ID da transação a excluir'), so the baseline of 3 applies. The description adds only indirect meaning by tying the id to transaction properties (isPaid, TRANSFER, goalId, cardId) that modulate behavior, but does not further define the parameter itself.

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

Purpose5/5

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

The description opens with a specific verb and resource — 'Exclui uma transação permanentemente' — making the operation unambiguous. The detailed cascade of reversals (balance, destination account, goal, card/invoice) clearly distinguishes it from siblings like update_transaction, create_transaction, and the confirm_* tools. The irreversibility warning reinforces the scope.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: the name and behavioral detail make clear this is for permanently removing transactions, but the description gives no explicit when/when-not guidance or named alternatives. It does not tell the agent when to prefer update_transaction or confirm_* tools over deletion, nor mention any prerequisites.

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

financial_snapshotResumo financeiro correlacionadoA
Read-only
Inspect

Retrato único do momento atual (não série): saldo total, receita/despesa média mensal, taxa de poupança, reserva de emergência (meses), endividamento sobre a renda anual e patrimônio. Vem de uma tabela materializada (FinancialSnapshot) recalculada de forma best-effort a cada escrita relevante; se ainda não existir para o usuário, é calculada na hora. Diferença de analytics_history: aqui é 1 número por métrica (o estado agora), lá é série mensal com estatística/tendência.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalDebtNo
totalBalanceNo
savingsRatePctNo
totalEquityCostNo
avgMonthlyIncomeNo
lastCalculatedAtNo
totalEquityValueNo
avgMonthlyExpenseNo
debtToIncomeRatioPctNo
emergencyReserveMonthsNo

TDQS

A4.9/5.0
Behavior5/5

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

The annotations declare readOnlyHint=true and destructiveHint=false, and the description builds on that by explaining the data source, best-effort recalculation behavior, and the on-the-fly computation when the snapshot is missing. This adds 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?

The description is well-structured and front-loaded: it opens with 'Retrato único do momento atual (não série)', lists the metrics, explains the materialized source, and closes with the key contrast to analytics_history. Every sentence adds distinct value.

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?

With no parameters, a read-only annotation, and an output schema available, the description provides all necessary operational context: it explains what is returned, how freshness works, what happens when the snapshot is missing, and how it differs from the main sibling 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 there is no parameter semantics to document. Per the baseline for a 0-parameter tool, the description appropriately focuses on what the snapshot contains rather than parameter details.

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

Purpose5/5

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

The description clearly identifies a specific verb+resource: it provides a single current snapshot of financial status with a concrete list of metrics. It explicitly distinguishes itself from analytics_history by contrasting '1 number per metric (the state now)' with a monthly series, so an agent can tell them 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 states exactly when to use the tool: when the current financial state is needed, not a historical series. It names the alternative analytics_history and explains the key distinction, providing both a positive and negative usage condition.

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

get_invoiceDetalhe de faturaA
Read-only
Inspect

Detalhe completo de uma fatura de cartão específica: dados do cartão, os vínculos de transação (transactions) e as transações completas (fullTransactions, com categoria/parcela/etc). id é o id da fatura (CreditCardInvoice), não do cartão — para buscar pela fatura ativa de um cartão sem saber o id da fatura use invoice_for_period.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId da fatura (CreditCardInvoice)

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
cardNo
yearNo
monthNo
cardIdNo
isPaidNo
statusNo
userIdNo
dueDateNo
paidDateNo
createdAtNo
updatedAtNo
paidAmountNo
closingDateNo
totalAmountNo
transactionsNo
fullTransactionsNo

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds valuable context: id is the CreditCardInvoice id, not the card id, and fullTransactions carry category/installment details. This goes beyond the structured hints 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?

Two concise sentences that front-load the returned content and then add the critical id disambiguation and sibling routing. No filler, no repetition of the schema.

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-required-parameter read operation with an output schema available, the description covers everything needed: what the tool returns, how to interpret id, and which sibling to use when the id is unknown. Nothing critical is missing.

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

Parameters4/5

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

The schema already describes id as 'Id da fatura (CreditCardInvoice)' with 100% coverage, so the baseline is solid. The description adds extra meaning by warning that id is not the card id and giving a fallback tool when only the card is known.

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: getting the full detail of a specific credit card invoice, enumerating the returned content (card data, transaction links, full transactions with category/installment fields). It also distinguishes itself from invoice_for_period by clarifying the id semantics, so an agent can tell them 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?

Explicitly states when not to use this tool: when trying to fetch the active invoice of a card without knowing the invoice id, use invoice_for_period instead. This gives the agent a clear routing decision and names the alternative directly.

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

get_profilePerfil do usuárioA
Read-only
Inspect

Retorna o perfil completo do usuário autenticado: dados cadastrais, negócio (CNPJ/website, se hasBusiness), plano e status de assinatura (Stripe), e vínculo com planejador (plannerId). Único campo omitido é phone, redigido antes de sair do servidor MCP — mesmo que fosse pedido explicitamente, não é devolvido.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
cepNo
nameNo
planNo
slugNo
typeNo
emailNo
auth0IdNo
pictureNo
currencyNo
locationNo
createdAtNo
plannerIdNo
updatedAtNo
coverImageNo
occupationNo
hasBusinessNo
businessCnpjNo
businessNameNo
menuPreferenceNo
businessWebsiteNo
stripeCustomerIdNo
subscriptionStatusNo
onboardingCompletedNo
stripeSubscriptionIdNo
subscriptionCurrentPeriodEndNo

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already signal read-only and non-destructive behavior, and the description adds a valuable behavioral detail: the phone field is redacted server-side and will never be returned even if requested. This goes beyond the structured metadata and prevents the agent from expecting data that will never exist.

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

Conciseness5/5

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

A single dense sentence delivers the resource, the full field list, and the key redaction caveat with no filler. Information is front-loaded and the caveat is logically appended without bloating the description.

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 no-parameter read-only tool with an output schema available, the description is complete: it identifies the target user, lists the returned data, and states the one notable omission. Nothing else is needed for an agent to call it correctly.

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

Parameters4/5

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

The tool has zero parameters and the input schema coverage is 100%, so there is no parameter documentation burden on the description. The description appropriately focuses on the return payload instead of inventing parameter guidance.

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

Purpose5/5

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

The description states a specific verb ('Retorna') and a well-defined resource: the complete profile of the authenticated user, enumerating the exact data groups returned (registro, negócio, plano/assinatura, plannerId). This makes it unmistakably distinct from the sibling update_profile and other read-only 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 description makes clear this is the tool for fetching the authenticated user's full profile, and the read-only naming reinforces when it applies. It does not explicitly name alternatives or exclusion cases, but for a zero-parameter getter the intended context is clear.

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

goal_projectionsProjeção de metasA
Read-only
Inspect

Progresso, prazo, meses restantes e aporte mensal necessário para cada meta financeira ativa do usuário. Usado também por can_afford para calcular quanto uma compra atrasaria cada meta — se só precisa desse impacto, prefira can_afford diretamente.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
metasYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds useful behavioral context by specifying that it covers only active goals and that can_afford consumes this tool's data. 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 sentences with no filler. The first sentence front-loads the core output fields, and the second sentence adds essential routing context about can_afford. Every clause 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 read-only, zero-parameter tool with an output schema, the description covers scope, output content, and relationship to a sibling tool. The agent has everything needed to decide when to call it and what to expect.

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

Parameters4/5

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

The tool has zero parameters and 100% schema description coverage, so there is no parameter documentation burden. The baseline for a zero-parameter tool applies, and the description does not need to compensate for missing parameter details.

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

Purpose5/5

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

The description clearly states the tool provides progress, deadline, remaining months, and required monthly contribution for each active financial goal. It also explicitly differentiates itself from can_afford by noting it is used internally by that tool, which removes ambiguity.

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 gives direct usage guidance: if the agent only needs the impact of a purchase on goal delays, it should prefer can_afford instead. This explicit routing to an alternative is strong guidance for tool selection.

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

insights_highlightDestaque financeiro do mêsA
Read-only
Inspect

Devolve NO MÁXIMO um destaque textual (highlight pode vir null), escolhido por prioridade fixa: (1) contas atrasadas não pagas, senão (2) orçamento mensal mais estourado (>100% do limite), senão (3) categoria com maior alta de gasto vs mês anterior (gasto atual ≥ R$50 e variação > 15%). Pensado pra UI de 'destaque do dia', não para análise completa — para todos os alertas de comportamento use behavior_insights, e para anomalias específicas (contas, assinaturas, transporte, concentração de vencimentos, cartão) use as tools bill_anomalies/subscriptions_overview/transport_routine/bill_concentration/best_card_day.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
highlightNo
generatedAtNo

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnlyHint=true annotation, the description discloses significant behavioral detail: the return can be null, at most one item is ever returned, selection follows a fixed priority order with exact numeric thresholds (100% budget limit, R$50 and 15% variation), and the tool is intentionally scoped to a single highlight rather than exhaustive analysis. This goes well past what annotations convey and fully sets agent expectations.

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, both dense and purposeful. The first front-loads the core behavior and enumerates the priority rules with clear numbering and thresholds; the second adds the intended use case and sibling routing. The sibling list is long but earns its place as the exclusion guidance, and no redundant or filler content appears.

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 on inputs (0 params) and has an output schema to cover the return shape, so the description's job is to explain selection logic, null behavior, and scope — all of which are fully specified. The only conceivable gap, exact output formatting, is covered by the existing output schema. An agent has everything needed to decide when to call it and what to expect.

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

Parameters4/5

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

The tool has zero parameters and an empty input schema, so per the baseline rule for 0-param tools this scores 4. There is nothing for the description to add about parameters; instead it productively uses that space to explain output behavior. No parameter documentation gap exists.

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 — 'Devolve NO MÁXIMO um destaque textual' (returns at most one textual highlight) — and precisely defines the selection behavior via an enumerated priority list: overdue unpaid bills, then most over-budget monthly budget (>100%), then top spending-growth category (≥R$50, >15% variation). It also distinguishes itself from the sibling family by naming behavior_insights and the anomaly-specific tools it is not.

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?

Usage context is explicit: 'Pensado pra UI de destaque do dia, não para análise completa' — it is designed for a daily-highlight UI, not full analysis. It then gives both the positive route (use this for a single daily highlight) and the negative routes with named alternatives: behavior_insights for all behavioral alerts, and bill_anomalies/subscriptions_overview/transport_routine/bill_concentration/best_card_day for specific anomaly categories. Nothing is left to inference.

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

investments_workspaceVisão geral de investimentosA
Read-only
Inspect

Visão consolidada de investimentos: lista de equities, holdings com ganho/perda (valor atual vs custo, usando a avaliação mais recente de cada ativo), totais agregados, alocação por tipo (agrupada em categorias como Imóveis/Veículos/Investimentos/Liquidez/Bens Pessoais/Outros), fluxo mensal dos últimos 6 meses (contributions = despesas ligadas a investimento, withdrawals = receitas ligadas a investimento) e as 6 movimentações mais recentes. Um só request para o que list_equities + list_equity_valuations exigiriam montar manualmente — use este para dashboard/resumo, e list_equities/list_equity_valuations quando precisar só dos dados crus de um ativo.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
flowsNo
totalsNo
equitiesNo
holdingsNo
allocationNo
recentMovementsNo

TDQS

A4.7/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true and destructiveHint=false. The description adds meaningful behavioral context: it uses the latest valuation per asset, defines contributions and withdrawals, groups allocation into specific categories, and limits movements to the six most recent ones. It is transparent about aggregation semantics, though it does not mention potential staleness or refresh 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 packs a substantial amount of information into two sentences with clear structure: the main purpose, then the content breakdown, then explicit usage guidance. Every clause adds value and there is no filler.

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 description covers what the tool returns, how values are calculated, how categories are grouped, and when to choose an alternative. Since an output schema exists, the description does not need to explain return value details further.

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

Parameters4/5

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

The tool has zero parameters, so the description has no parameter details to add. The schema fully covers the empty parameter set, and the baseline for a zero-parameter tool is appropriately high.

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 action and resource: a consolidated investment overview with equities, holdings, gains/losses, totals, allocation, monthly flow, and recent movements. It clearly differentiates from siblings by explicitly comparing itself with list_equities and list_equity_valuations.

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 explicitly says to use this tool for dashboards/summaries and to use list_equities/list_equity_valuations when only raw asset data is needed. This gives an agent a clear decision rule and names the alternatives.

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

invoice_allocation_previewPrévia de alocação de faturasA
Read-only
Inspect

Lista transações de cartão cujo período (mês/ano) de fatura calculado hoje diverge do período em que estão realmente alocadas (currentInvoiceMonth/Year vs correctedInvoiceMonth/Year) — útil para detectar faturas desalinhadas antes de corrigir. Não altera nada; é sempre resultado de leitura mesmo não sendo readOnly no schema (nenhuma escrita ocorre nesta rota).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
totalNo

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the description's 'Não altera nada; é sempre resultado de leitura... nenhuma escrita ocorre' largely restates that hint rather than adding new behavioral context. The 'mesmo não sendo readOnly no schema' phrasing refers to schema metadata and does not contradict the annotation, but it adds little beyond what the read-only hint already provides.

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 compact and front-loaded with the core purpose in the first clause. The safety clause is somewhat redundant given the annotations, but it does not bloat the description significantly.

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?

With zero parameters, an output schema present, and annotations covering safety, this description is complete for an agent to select and invoke the tool correctly. It explains the detection purpose, the exact comparison being made, and the read-only behavior.

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

Parameters4/5

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

There are zero parameters, so the baseline is 4. The description adds conceptual meaning by naming the relevant fields (currentInvoiceMonth/Year vs correctedInvoiceMonth/Year), which helps the agent understand the output even though no input parameters need documentation.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Lista transações de cartão' and identifies a precise filtering condition: invoices whose calculated period diverges from the allocated period (currentInvoiceMonth/Year vs correctedInvoiceMonth/Year). This clearly distinguishes the tool from sibling invoice/list tools by its mismatch-detection purpose.

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 states when this is useful: 'útil para detectar faturas desalinhadas antes de corrigir', giving a clear use case. It does not explicitly name alternative tools or state when not to use it, so it misses the top bar, but the context is unambiguous.

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

invoice_for_periodFatura do cartão (atual ou próxima)AInspect

Fatura de um cartão pro período pedido em period (default 'current'). 'current': a mais antiga ainda não paga (isPaid = false), qualquer que seja seu status; se não houver nenhuma pendente, cai pra fatura do período vigente calculada pelo dia de fechamento/vencimento do cartão. 'next': fatura prevista pro ciclo seguinte ao atual (mês seguinte, mesma lógica de fechamento/vencimento) — use pra saber quanto já está comprometido no próximo fechamento antes dele fechar. Sem transações completas (só os vínculos de valor). Efeito colateral em ambos os casos: se a fatura do período pedido ainda não existir, ela é criada (linha OPEN com total 0) — não é uma leitura pura. cardId é o id do cartão, não da fatura.

ParametersJSON Schema
NameRequiredDescriptionDefault
cardIdYesId do cartão (Card)
periodNoDefault: 'current'

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
yearNo
monthNo
cardIdNo
isPaidNo
statusNo
userIdNo
dueDateNo
paidDateNo
createdAtNo
updatedAtNo
paidAmountNo
closingDateNo
totalAmountNo
transactionsNo

TDQS

A4.6/5.0
Behavior5/5

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

A descrição revela de forma direta o efeito colateral: se a fatura não existir, ela é criada como linha OPEN com total 0, e afirma explicitamente 'não é uma leitura pura'. Isso complementa a anotação readOnlyHint=false com contexto importato de mutação que o agente precisa saber antes de invocar.

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 descrição é densa mas bem organizada, com cada frase agregando informação necessária: definição dos períodos, uso de `next`, ausência de transações completas, efeito colateral e disambiguação do parametro. Não há texto ocioso e a informação central vem primeiro.

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?

Para um ferramenta com essa complexidade semântica, a descrição cobre os principais riscos: efeito de criação, siginificado de cada período, fallback e escopo do retorno. Como há output schema, não é necessário detahar o retorno; a descrição é suficiente para invocar corretamente.

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?

Embora o schema cubra 100% dos parâmetros, a descrição agregra muito significado: explica detalhadamente o comportamento de `current`, a lógica de `next`, o fallback para o período vigente, e desambígua `cardId` como id do cartão e não da fatura. Isso vai muito além do enum e do default já presentes no 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?

Descreve com clareza que a ferramenta retorna a fatura de um cartão para um período específico (`current` ou `next`), com verb/resource específico. No entando, não nomeia alternativas entre os irmãos, embora a disambiguação de `cardId` contra a fatura ajude indiretamente a separá-la de ferramentas como `get_invoice`.

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?

Fornece contexto claro de uso: `current` é definido como a fatura pendente mais antiga com fallback, e `next` é explicitamente recomendado 'pra saber quanto já está comprometido no próximo fechamento'. Não menciona explicitamente exclusions ou alternativas, mas o quando-usar é compreensível.

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

invoice_orphan_countContar transações órfãs de cartãoA
Read-only
Inspect

Conta despesas de cartão (Transaction.type = EXPENSE com cardId preenchido) que não têm nenhum vínculo em CreditCardInvoiceTransaction — normalmente transações antigas lançadas antes do sistema de faturas existir, ou importadas sem gerar o vínculo.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
orphanCountNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true and destructiveHint=false, and the description adds value beyond them by defining exactly what qualifies as an orphan and what the count represents. It also provides business context for why such records exist, which helps the agent interpret the result. 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?

A single information-dense sentence that front-loads the action and uses the remainder to specify the exact predicate and a brief rationale. Every clause earns its place; the explanation of why orphan records exist is useful context, not padding.

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 zero-parameter, read-only aggregation with an output schema available, the description is complete: it defines precisely what is counted and why such records occur. An agent can select and invoke this tool correctly from the description alone.

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

Parameters4/5

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

The tool takes zero parameters, which sets the baseline at 4. The description compensates fully by defining the exact scope of the count — the predicate on Transaction.type, cardId, and the absence of an invoice link — so nothing about the aggregate's meaning is left 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 names a specific verb ('Conta' — counts) and a precisely scoped resource: card expenses with Transaction.type = EXPENSE and cardId filled that lack any CreditCardInvoiceTransaction link. This unambiguous predicate distinguishes it from every sibling, particularly list_transactions and validate_current_invoices, without needing to open anything else.

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 conveys when the tool is relevant by explaining that orphans are normally legacy transactions from before the invoice system existed, or imports that never generated the link. However, it never explicitly names an alternative or states when not to use it, leaving routing decisions to inference.

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

list_accountsListar contasA
Read-only
Inspect

Lista as contas bancárias/carteiras do usuário: as que ele é dono (userId) e as contas conjuntas onde ele é membro (via AccountMember). Cada item traz myRole (OWNER/MEMBER na conta), isShared e a lista completa de members com dados básicos de cada usuário. Ordenado por criação, mais recente primeiro.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare the operation as read-only and non-destructive. The description adds valuable behavioral context beyond that: each item contains myRole, isShared, and the complete members list, and results are ordered by creation date descending. This gives the agent a clear expectation of the response shape and ordering.

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 concise sentences front-load the tool's purpose and then add only high-value details: ownership vs membership, per-item fields, and ordering. There is no redundant or filler content.

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?

With an output schema present and read-only annotations, the description fully covers what an agent needs to understand the tool's behavior: the resource scope, shared-account handling, returned fields, and sort order. Nothing critical 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?

The tool has zero parameters and schema coverage is 100%, so parameter documentation is not a burden. The description still adds relevant context about the implicit user scope and the role/membership model, which is useful even though no parameters exist.

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 ('Lista') and resource ('contas bancárias/carteiras'), and precisely distinguishes the scope: owned accounts and shared accounts where the user is a member. This makes it clearly distinct from sibling tools like list_cards or list_budgets.

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 establishes what the tool returns and the exact scope of accounts included, so an agent can infer when to call it. It does not explicitly name alternatives or exclusion conditions, but for a simple list tool the 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.

list_budgetsListar orçamentosA
Read-only
Inspect

Lista orçamentos (Budget) do usuário, mais recentes primeiro. Sem filtro retorna todos os períodos já criados (não só o mês atual). Cada item é o valor orçado; para orçado x gasto real de um orçamento específico use budget_comparison — para ver isso por categoria em todas as categorias de uma vez sem precisar de um Budget cadastrado, use categories_insights (insights.ts).

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoFiltra por ano (ex: '2026'). Se omitido junto com month, lista todos os anos
monthNoFiltra por mês (1-12). Só faz sentido combinado com year; orçamentos com period YEARLY não têm month

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.5/5.0
Behavior4/5

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

Beyond the readOnlyHint annotation, the description discloses key behaviors: results are ordered most-recent-first, omitting filters returns all created periods (not just the current month), and each item is a budgeted amount. These details are not visible in the schema and add real operational 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?

Two compact sentences carry the action, ordering, default scope, item semantics, and two alternative-tool routes. No filler or repetition; each clause earns its place and the core behavior is front-loaded.

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 read-only listing tool with two optional parameters and an output schema, the description covers purpose, default behavior, nuance about monthly/yearly periods, and when to use alternative tools. Nothing needed to call it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents year and month well. The description adds the 'no filter returns all periods' behavior and that YEARLY budgets lack a month, but these mostly restate or lightly extend what the parameter descriptions and the main sentence imply.

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

Purpose5/5

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

The description opens with a specific verb and resource ('Lista orçamentos (Budget) do usuário') and adds ordering and scope details. It explicitly names sibling tools (budget_comparison, categories_insights) and contrasts their purposes, so an agent can distinguish list_budgets from nearby alternatives.

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 clear when-to-use guidance: list_budgets is for listing budgeted values, budget_comparison is for comparing a specific budget against actual spending, and categories_insights handles cross-category comparison without a Budget. This explicit routing removes ambiguity about which tool to select.

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

list_cardsListar cartõesA
Read-only
Inspect

Lista os cartões de crédito do usuário. currentInvoice é o total da fatura mais próxima ainda não paga (ordenada por year/month) — 0 se não houver fatura em aberto. Para o valor completo de uma fatura específica (aberta ou fechada) use as tools de fatura (invoice_for_period/list_pending_invoices), não este campo.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.9/5.0
Behavior5/5

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

The annotations already mark the operation as read-only and non-destructive, and the description adds meaningful behavioral context: `currentInvoice` is the total of the nearest unpaid invoice ordered by year/month, and is 0 when there is no open invoice. This explains computed behavior that annotations cannot 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 well-structured sentences: the first states the core purpose, and the second explains the key field and routes users to the correct alternative tools. No filler or redundant restatement of the title or schema.

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 zero-parameter, read-only listing tool with an output schema, the description is complete. It explains the one potentially confusing field (`currentInvoice`) and points to invoice-specific tools when needed. Nothing essential is missing for an agent to invoke this 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 tool has zero parameters, so there is no parameter semantics burden on the description. The schema coverage is effectively complete with an empty properties object. The description goes further by explaining the semantics of an output field, which is a bonus beyond 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 states a specific verb and resource: it lists the user's credit cards. It also clarifies the meaning of the `currentInvoice` field, which removes ambiguity about what this tool returns. Although the title already says 'Listar cartões', the description adds enough detail to distinguish it from account-listing or invoice-listing 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?

The description explicitly tells the agent when not to use this tool: for the complete value of a specific invoice, it directs to `invoice_for_period` or `list_pending_invoices` instead of relying on the `currentInvoice` field. This is a clear when/when-not statement with named alternatives.

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

list_categoriesListar categoriasA
Read-only
Inspect

Lista todas as categorias e subcategorias do usuário (achatado — subcategorias vêm no mesmo array que as categorias-pai, diferenciadas por parentId), ordenado por criação (mais recente primeiro). Para gasto acumulado/orçamento por categoria use categories_insights, não esta tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds useful behavioral context beyond annotations: categories and subcategories are returned flattened in the same array, differentiated by parentId, and ordered by creation time most recent first. No annotation contradiction exists.

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 dense sentence that captures the resource, the flattening behavior, the ordering, and the sibling routing with no wasted words. 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.

Completeness5/5

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

Given zero parameters, read-only annotations, an output schema, and a description that explains structure, ordering, and the correct alternative, nothing critical is missing for an agent to select and invoke it correctly.

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

Parameters4/5

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

The tool has zero parameters and schema description coverage is 100%, so there is no parameter documentation burden for the description to carry. The baseline of 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.

Purpose5/5

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

Uses a specific verb and resource: 'Lista todas as categorias e subcategorias do usuário'. It adds distinguishing details like the flattened array structure, parentId differentiation, and creation-order sorting, clearly setting it apart from related tools.

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?

Explicitly tells the agent when not to use this tool: 'Para gasto acumulado/orçamento por categoria use categories_insights, não esta tool.' This directly routes the agent to the correct sibling for the overlapping use case.

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

list_cost_centersListar centros de custoA
Read-only
Inspect

Lista os centros de custo do usuário (ex: 'Pessoal', 'Empresa X'), ordenados por criação (mais antigo primeiro). Todo usuário tem ao menos um centro de custo padrão (isDefault: true), que não pode ser excluído.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare the operation as read-only and non-destructive. The description adds useful behavioral context beyond annotations: results are ordered by creation date, every user has at least one default cost center, and that default cannot be deleted. This helps the agent reason about invariants when managing cost centers.

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 long, front-loads the core purpose, and every clause adds value: the scope, the ordering, and the default-center invariant. There is no redundancy or filler.

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 parameterless read-only list tool with an output schema, the description is complete. It tells the agent what the list contains, how it is ordered, and an important domain rule about default cost centers. There are no missing inputs or prerequisites that would prevent 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?

The tool has zero parameters, so there is no parameter meaning for the description to clarify. The description appropriately avoids inventing parameters and focuses on the output behavior. This matches the baseline for parameterless tools.

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

Purpose5/5

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

The description clearly states the action ('Lista'), the resource ('centros de custo do usuário'), and adds specific context such as examples, ordering by creation, and the existence of a default cost center. This distinguishes it from related cost-center tools like create_cost_center, update_cost_center, and delete_cost_center.

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 usage is implied by the name and description: call this when you need the user's cost centers. However, there is no explicit guidance about when to prefer this over sibling list tools, nor any mention of when not to use it or how results might be used alongside create/update operations.

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

list_debtsListar dívidasA
Read-only
Inspect

Lista as dívidas (Debt) do usuário, mais recentes primeiro — financiamentos, empréstimos, cartão de crédito parcelado fora do sistema de faturas, etc. equityId, quando presente, vincula a dívida a um ativo (Equity) financiado por ela, usado no cálculo de patrimônio líquido (valor do ativo - dívida).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds useful behavioral context beyond those: result ordering, inclusion criteria for debt types, and the semantic role of equityId in net-worth calculation. It does not mention pagination or response shape, but those are less critical given the output schema.

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 compact and front-loaded: the first clause states the main purpose, followed by ordering, relevant debt categories, and one key field explanation. Every sentence earns its place with no filler or redundant restatement of the title.

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 zero-parameter, read-only list tool with an output schema, the description covers the essential aspects: what is listed, the ordering, the scope of debt types, and the meaning of the notable equityId field. Nothing needed to invoke it correctly is missing.

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

Parameters4/5

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

The tool has zero parameters and schema description coverage is 100%, so there is no parameter information the description must compensate for. The mention of equityId is an output-field clarification rather than parameter semantics, so the baseline of 4 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 opens with a specific verb and resource ('Lista as dívidas (Debt) do usuário') and adds ordering and scope details: most recent first, with explicit examples of which debt types are included. This clearly distinguishes it from sibling list_* tools such as list_invoices or list_transactions.

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

Usage Guidelines4/5

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

The description provides clear context: this is the tool for retrieving a user's debts, and the equityId explanation clarifies when debts are tied to assets. It does not explicitly name alternatives or state when not to use it, but for a zero-parameter list operation the resource scope is reasonably self-evident.

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

list_equitiesListar investimentosA
Read-only
Inspect

Lista os ativos de investimento (equities) do usuário, ordenados do mais recente para o mais antigo (createdAt desc). Cada item traz o valor/custo atuais (o mais recente registrado, seja por update_equity ou add_equity_valuation), não o histórico — para histórico de um ativo específico use list_equity_valuations, e para visão consolidada (totais, alocação, ganhos) use investments_workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds useful behavioral context: results are sorted by createdAt descending, and each item reflects the most recent value/cost recorded via update_equity or add_equity_valuation, not the full historical series. This is meaningful behavior beyond the annotations, though pagination or rate-limit details are not mentioned.

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 no filler. The first sentence delivers the core function and ordering; the second explains data freshness and routes to sibling tools. Every clause 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?

The output schema is present, so return structure is covered elsewhere. The description adds the semantic distinctions that matter for selection: ordering, latest-value behavior, and explicit sibling routing. For a zero-parameter read-only list tool, nothing critical is missing.

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

Parameters4/5

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

The tool has zero parameters and the schema coverage is 100% vacuously, so there is no parameter-level burden for the description to carry. The baseline for no-parameter tools is 4, and the description uses the available space productively to explain output semantics rather than parameter meanings that don't exist.

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 lists the user's investment assets (equities), including the ordering (createdAt desc) and what each item contains. It also clearly differentiates this tool from list_equity_valuations and investments_workspace, so an agent can select it correctly without opening sibling definitions.

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 explicitly tells the agent when to use alternatives: for history of a specific asset use list_equity_valuations, and for consolidated totals/allocation/gains use investments_workspace. It also clarifies that this tool returns the latest registered value, not history, which establishes the appropriate use case.

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

list_equity_valuationsHistórico de avaliaçõesA
Read-only
Inspect

Histórico completo de avaliações (EquityValuation: value/cost ao longo do tempo) de um investimento (id = id do investimento, não da avaliação), ordenado do mais recente para o mais antigo (asOf desc). Não filtra por período nem pagina.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId do investimento (Equity), não da avaliação

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark the operation as read-only and non-destructive. The description adds useful behavioral detail beyond annotations: full history, ordering by `asOf desc`, no period filtering, and no pagination. This is meaningful context for an agent deciding whether the call will return everything at once.

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, then adds ordering and limitation details. Every clause carries meaningful information and there is no redundant or filler content.

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 read-only list operation with an output schema available, the description covers the essential aspects: what is returned, for which entity, in what order, and with what limitations. No critical behavioral or usage information is missing.

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

Parameters3/5

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

Schema coverage is 100% and the only parameter `id` already has a clear description in the schema. The tool description repeats the same clarification that `id` is the investment id, not the valuation id, so it adds little beyond the structured 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 names a specific verb and resource: it lists the complete valuation history (EquityValuation) for an investment, sorted newest first. It also clarifies that the `id` refers to the investment, not the valuation, and the sibling context (add_equity_valuation, list_equities) makes the distinction clear.

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

Usage Guidelines4/5

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

The description makes the use case clear: retrieve the full historical valuation series for a specific investment. It also states boundaries by saying there is no period filtering and no pagination, which helps set expectations, though it does not explicitly name alternative tools or list when-not-to-use conditions.

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

list_goalsListar metasA
Read-only
Inspect

Lista as metas financeiras (Goal) do usuário, mais recentes primeiro. Para progresso/prazo/aporte mensal necessário de cada meta use goal_projections (insights.ts), que já cruza essas metas com a projeção de fluxo de caixa.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the ordering behavior and scope to the user's own goals, which is useful but not extensive. 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?

Two concise sentences with front-loaded purpose and ordering, followed by a clear pointer to the alternative tool. Every sentence adds value.

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 zero-parameter, read-only list tool with an output schema and clear sibling routing, the description is fully sufficient. No missing information could prevent 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 and 100% schema description coverage, so there is nothing to explain. The description still clarifies that the results are scoped to the user, which is the only relevant semantic 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 clearly states the tool lists the user's financial goals (Goal), most recent first, using a specific verb and resource. It also distinguishes itself from goal_projections, which serves a different analytical purpose.

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?

Explicitly guides the agent to use goal_projections when progress, deadline, or required monthly contribution is needed, making the choice between this tool and its sibling unambiguous.

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

list_invoicesListar faturas de cartãoA
Read-only
Inspect

Lista faturas de cartão de crédito (CreditCardInvoice) do usuário, mais recentes primeiro (ano/mês desc), cada uma com o cartão e as transações vinculadas. Sem filtros retorna faturas em qualquer status (aberta, fechada, paga, parcial, vencida) — para só as pendentes de pagamento use list_pending_invoices, que já aplica esse filtro e ordena por vencimento.

ParametersJSON Schema
NameRequiredDescriptionDefault
cardIdNoFiltra por um cartão específico
statusNoFiltra por status exato da fatura

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds useful behavioral detail beyond them: default unfiltered behavior, status coverage, descending year/month ordering, and inclusion of card and transactions. No contradictions found, though it does not mention pagination or result limits.

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 dense sentence that front-loads the core purpose, then delivers scoping, sorting, return contents, and the alternative tool reference. Every clause earns its place and there is no fluff.

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 list-with-filters tool, the description covers user scope, default behavior, sorting, included associations, and the relevant sibling. Combined with an output schema and read-only annotations, nothing an agent needs to invoke it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, with both cardId and status already documented in the schema. The description reinforces that filters are optional and lists the status set, but it adds little meaning beyond what the schema already provides.

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 ('Lista'), the resource ('faturas de cartão de crédito (CreditCardInvoice)'), and scope ('do usuário'), and differentiates from list_pending_invoices by naming it. Sorting and linked data are also specified, so an agent can identify the tool's exact purpose.

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 explicitly tells when to use this tool ('Sem filtros retorna faturas em qualquer status') and when to prefer the sibling ('para só as pendentes de pagamento use list_pending_invoices'), including the alternative's behavior and ordering. This is a clear when/when-not directive.

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

list_pending_invoicesFaturas pendentesA
Read-only
Inspect

Lista as faturas de cartão já fechadas e ainda não totalmente pagas (status CLOSED, OVERDUE ou PARTIAL), ordenadas por data de vencimento crescente. Não inclui faturas OPEN (ciclo ainda em curso, acumulando compras) nem PAID. Use invoice_for_period para o valor da fatura de UM cartão específico (inclusive a que ainda está aberta); use esta tool para o panorama de faturas de cartão pendentes em geral.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds significant behavioral nuance: it includes only CLOSED/OVERDUE/PA RTIAL statuses, excludes OPEN/PA ID, and sorts by due date ascending. This goes well beyond the structured metadata and fully describes the tool's observable 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 dense but efficient: it front-loads the core action and object, then clarifies exclusions and closes with a routing hint to a sibling. Every sentence earns its place and there is no fluf.

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 parameterless, read-only list tool with an output schema, the description is complete: it gives statuses, ordering, exclusions, and direct guidance on when to prefer a sibling. Nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

The tool has zero parameters, so the schema carries no semantic burden. The description meaningfully explains the tool's scope even though no parameter documentation is needed. This meets the baseline for a parameter-less tool.

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

Purpose5/5

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

The description uses a specific verb ('Lista') with a precise resource: closed credit-card invoices not fully paid, explicitly enumerating statuses (CLOSED, OVERDUE, PARTIAL) and the sort order. It also clearly distinguishes itself from related tools by naming excluded statuses (OPEN, PAID) and the nearby sibling invoice_for_period.

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 explicitly states when to use this tool (general overview of pending card invoices) and when to use an alternative (invoice_for_period for a single specific card invoice, including an open one). It also states what is excluded, so an agent can select correctly without guessing.

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

list_recurring_transactionsListar transações recorrentesA
Read-only
Inspect

Lista as regras de transações recorrentes do usuário (assinaturas, salário, aluguel etc.), ativas e inativas, mais recentes primeiro. Cada regra já gerou transações reais na criação (veja create_recurring_transaction) — esta tool retorna só a regra, não as transações geradas; use list_transactions/upcoming_transactions para essas.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already mark this as read-only and non-destructive. The description adds useful behavioral context: each rule already generated real transactions at creation, and this tool returns only the rule, not those transactions. 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?

Two tight sentences: the first defines scope and sorting, the second adds the critical distinction from sibling tools and names alternatives. No filler or repetition of schema or annotations.

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 zero-parameter read-only tool with an output schema, the description fully covers what the tool returns, its scope, its ordering, and its relationship to generated transactions and sibling tools. Nothing an agent needs to call or interpret it correctly is missing.

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

Parameters4/5

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

The tool has zero parameters, so the schema leaves nothing ambiguous. The description provides no parameter details, but none are needed; baseline 4 applies for a zero-parameter tool.

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

Purpose5/5

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

The description states a specific verb and resource: 'Lista as regras de transações recorrentes do usuário' with concrete examples. It also explicitly distinguishes itself from list_transactions/upcoming_transactions by clarifying that this tool returns rules, not generated transactions.

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 gives clear usage context: it lists active and inactive recurring rules, and explicitly directs the agent to use list_transactions/upcoming_transactions when generated transactions are needed. This is a concrete when-to-use vs. alternative condition.

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

list_tagsListar tagsA
Read-only
Inspect

Lista as tags usadas para marcar transações do usuário.

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdNoId do cliente a consultar (uso de planejador financeiro); omitido usa o próprio usuário autenticado

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safe-read nature is covered. The description adds useful scope context by saying tags are those used to mark the user's transactions, but it does not disclose additional behavioral details such as whether unused tags are included, sorting, or pagination.

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 efficient, front-loaded sentence states the action and scope immediately. There is no filler, redundancy, or unnecessary detail.

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 read-only list operation, the description is complete enough. The input schema fully documents the only parameter, annotations cover the safety profile, and an output schema exists, so return-value details are not required in the description.

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

Parameters3/5

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

Schema description coverage is 100% and the only parameter, userId, already has a clear explanation in the schema indicating it is for financial planner use and defaults to the authenticated user if omitted. The description adds no parameter-level information beyond the schema, so it stays at the baseline.

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

Purpose4/5

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

The description states a specific verb and resource: 'Lista as tags' (lists the tags) and clarifies those tags are the ones used to mark the user's transactions. It is clear, though it does not explicitly differentiate itself from sibling tools such as create_tag or tags_insights.

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

Usage Guidelines2/5

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

The description provides no guidance about when to use this tool versus alternatives like tags_insights or create_tag. The optional userId parameter is documented in the schema, but the description itself offers no usage context, exclusions, or selection criteria.

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

list_transactionsListar transaçõesA
Read-only
Inspect

Lista as transações do usuário (inclusive de contas conjuntas onde ele é membro), com categoria/conta/cartão/centro de custo/agente/tags já incluídos, mais recentes primeiro (por date, não por criação). Sem from/to/limit, traz o histórico inteiro — para não estourar o contexto, use limit (e pagine com offset se precisar de mais) ou restrinja com from/to. Para só o que está por vencer/pendente use upcoming_transactions; para totais agregados por mês use analytics_history ou o endpoint de summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoData ISO — só transações com date <= to. Default: sem limite superior
fromNoData ISO — só transações com date >= from. Default: sem limite inferior
limitNoLimita a quantidade de transações retornadas (mais recentes primeiro). Default: sem limite
offsetNoPula os N primeiros resultados — use com limit para paginar
userIdNoSó para planejadores (mobilePlanners): id de um cliente vinculado, para ver as transações dele em vez das próprias. Omitido = transações do próprio usuário autenticado. Retorna 403 se o usuário autenticado não for planejador desse cliente

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds valuable behavior beyond those: it lists transactions from joint accounts, includes pre-joined related entities, sorts by date rather than creation, and warns that omitting limit/from/to returns the entire history, which could overflow context. This is substantial behavioral disclosure that goes beyond what annotations 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?

The description is three sentences, front-loaded with core purpose and scope, then default behavior and warnings, then alternative routing. Every sentence earns its place and there is no filler or redundancy.

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 description is complete for a list tool with 5 optional parameters. It covers sorting, included relations, default full-history behavior, pagination guidance, context-overflow warning, and explicitly routes to sibling tools for pending/aggregate use cases. The output schema exists, so return-value details are not necessary. Annotations already cover the safety profile.

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 100%, so the schema already documents each parameter. The description adds value by explaining the combined pagination behavior (limit with offset) and the context-overflow rationale. It does not describe userId, but the schema covers that fully, so no gap exists. The extra warning and usage synthesis lift it above the baseline 3.

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 ('Lista as transações do usuário') and specifies scope (joint accounts where the user is a member), included related entities (category/account/card/cost center/agent/tags), and sorting order (most recent first by date). It also distinguishes itself from sibling tools by naming upcoming_transactions and analytics_history as alternatives, so an agent can tell it apart without opening other schemas.

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 explicitly states when to use alternatives: 'Para só o que está por vencer/pendente use upcoming_transactions; para totais agregados por mês use analytics_history'. It also gives concrete usage guidance for avoiding context overflow by using limit/offset and from/to. This is clear, actionable guidance with no ambiguity.

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

networth_projectionProjeção de patrimônio líquidoA
Read-only
Inspect

Projeção mensal (até 12 meses) do patrimônio líquido (caixa projetado + total de equities), sem detalhar categorias de gasto/receita. Recorte de cashflow_forecast focado só em patrimônio — use este quando o interesse é só a curva de patrimônio, e wealth_evolution quando precisar separar quanto do crescimento veio de aporte vs valorização dos ativos (esse é histórico, não projeção).

ParametersJSON Schema
NameRequiredDescriptionDefault
monthsNoQuantidade de meses a projetar, 1-12 (default 12)
userIdNoId do cliente a consultar (uso de planejador financeiro); omitido usa o próprio usuário autenticado
includePendingNoSe true (default), considera transações pendentes; false usa só o realizado e força recálculo ao vivo

Output Schema

ParametersJSON Schema
NameRequiredDescription
monthsNo
generatedAtNo
startingNetWorthNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds meaningful behavioral context beyond annotations: it is a projection focused only on net worth, intentionally omits category detail, and explains how it relates to cashflow_forecast and wealth_evolution. This exceeds the annotation baseline 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?

Two dense sentences carry the full purpose, scope, limitation, and sibling differentiation with no filler. The most important information is front-loaded, and every clause 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?

The output schema exists and the params are fully documented, so the description does not need to repeat return formats or parameter details. It provides the missing selection context, projection horizon, composition of net worth, and the key distinction from wealth_evolution, making the tool complete for an agent to invoke correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter (months, userId, includePending) is already documented in the input schema. The description reinforces the 1-12 month scope and the net worth focus but does not add significant parameter-level semantics beyond what the schema provides, matching the baseline of 3.

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: monthly projection (up to 12 months) of net worth composed of projected cash plus equities. It also explicitly states what it does not do (does not detail spending/revenue categories) and distinguishes itself from wealth_evolution and cashflow_forecast, so an agent can tell it apart from 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?

Usage guidance is explicit: use this tool when only the net worth curve is needed, and use wealth_evolution when the user needs to separate contribution vs. asset appreciation. It also clarifies that wealth_evolution is historical while this is a projection, giving the agent a clear selection criterion.

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

pay_invoicePagar faturaAInspect

Registra pagamento (total ou parcial) de uma fatura de cartão: soma amount a paidAmount, atualiza status (PAID se cobrir o total, PARTIAL se parcial) e, só quando accountId é informado, debita da conta — cria uma transação de despesa 'Fatura de Cartão', reduz o saldo da conta, libera o limite do cartão usado (limitUsed) e recalcula Card.currentInvoice. Sem accountId, marca a fatura como paga/parcial sem mexer em nenhuma conta (útil quando o pagamento já foi lançado manualmente em outro lugar).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId da fatura (CreditCardInvoice)
amountNoValor a abater do saldo da fatura. Default: valor total da fatura (paga integralmente). Envie um valor menor para pagamento parcial
accountIdNoConta de onde debitar o pagamento. Se omitido, só marca a fatura como paga, sem criar transação nem mexer em saldo/limite

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
cardNo
yearNo
monthNo
cardIdNo
isPaidNo
statusNo
userIdNo
dueDateNo
paidDateNo
createdAtNo
updatedAtNo
paidAmountNo
closingDateNo
totalAmountNo

TDQS

A4.5/5.0
Behavior5/5

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

The annotations provide almost no information (all four hints are false), so the description carries the full burden — and it excels. It enumerates every side effect precisely: adding amount to paidAmount, status transitions (PAID if covering total, PARTIAL otherwise), creation of the 'Fatura de Cartão' expense transaction, account balance reduction, limitUsed release, and Card.currentInvoice recalculation. The conditional no-accountId path is also fully disclosed, and nothing contradicts the annotations (readOnlyHint=false aligns with the mutation 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 sentences with zero filler: the core purpose is front-loaded, and every subsequent clause adds a concrete behavioral fact (status rules, side effects, accountId conditionality, the manual-posting use case). The density is high but every 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 conditional mutation with a branching side-effect profile, the description covers every observable effect on both paths — invoice status, paidAmount, transactions, balances, credit limit, and currentInvoice — while the existing output schema covers return-value expectations. Given the all-false annotations provide no safety signals, the description compensates fully; nothing an agent needs to invoke it correctly is missing.

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 baseline is 3; the schema already documents id, amount (including default full-payment behavior and partial-payment guidance), and accountId (including the omitted-accountId side-effect note). The description reinforces these semantics by tying amount to the PAID/PARTIAL status rules, a small addition, but it does not introduce meaningfully new parameter-level information beyond the schema.

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

Purpose5/5

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

The description opens with a specific verb-resource pair ('Registra pagamento ... de uma fatura de cartão') and immediately disambiguates the two operation modes (total or partial). It clearly distinguishes this write-operation from read-only siblings like get_invoice, list_invoices, and current_invoice, and from other mutations like update_transaction.

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

Usage Guidelines4/5

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

The description gives explicit guidance on when each variant is appropriate: inform accountId to debit the account, create the expense transaction, and release credit limit; omit it when the payment was already manually posted elsewhere. This is clear contextual guidance, though it never names sibling alternatives or states when not to use the tool, so it stops short of a 5.

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

spending_projectionProjeção de gastosA
Read-only
Inspect

Projeção mensal (até 12 meses) da despesa efetiva total e das categorias de maior peso, sem detalhar receita/saldo/patrimônio. É um recorte de cashflow_forecast focado só em despesa — use cashflow_forecast quando precisar também de saldo/entradas, e use este quando o interesse é só 'quanto vou gastar e em quê'.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthsNoQuantidade de meses a projetar, 1-12 (default 12)
userIdNoId do cliente a consultar (uso de planejador financeiro); omitido usa o próprio usuário autenticado
topCategoriesNoQuantas categorias trazer por mês em topCategories, 1-20 (default 5)
includePendingNoSe true (default), considera transações pendentes; false usa só o realizado e força recálculo ao vivo

Output Schema

ParametersJSON Schema
NameRequiredDescription
monthsNo
generatedAtNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context by stating it does not detail revenue/balance/wealth and that it is a spending-focused subset of cashflow_forecast, which helps set output expectations.

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, dense with relevant information, and front-loaded with the core purpose before the routing note. Every clause earns its place with no filler or repetition.

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 read-only annotations, 100% parameter documentation, an output schema, and a sibling list, the description covers the essential context: purpose, scope, exclusions, and alternative tool selection. Nothing critical is missing 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 100%, so the schema fully documents all four parameters. The description reinforces the 12-month limit and top-category focus, but does not add substantial parameter-level meaning beyond the schema, so the baseline of 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 projects monthly total effective spending and top categories over up to 12 months, and explicitly distinguishes it from cashflow_forecast. An agent can immediately understand what this tool produces and how it differs from its closest sibling.

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

Usage Guidelines5/5

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

The description provides explicit routing guidance: use cashflow_forecast when balances/inflows are also needed, and use spending_projection when only spending and its composition matter. This gives unambiguous selection criteria between closely related tools.

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

subscriptions_overviewAssinaturas e recorrênciasA
Read-only
Inspect

Todas as recorrências de despesa ativas (RecurringTransaction), com o valor normalizado para mensal (DAILY/WEEKLY/BIWEEKLY/MONTHLY/QUARTERLY/YEARLY convertidos), total mensal comprometido, e duplicidades: categorias com 2+ recorrências ativas (ex.: dois streamings). Não indica uso do serviço nem se a assinatura está 'esquecida' — o app só tem o dado financeiro, não de uso.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
textNo
duplicatesYes
totalMonthlyNo
subscriptionsYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already mark the tool as read-only and non-destructive, and the description adds meaningful behavioral context: frequencies are converted to monthly equivalents, duplicates are flagged per category with 2+ active recurrences, and the data is limited to financial information only. This goes well beyond what annotations provide and is especially valuable for setting expectations about what the tool cannot tell the user.

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 compact and front-loaded, starting with the main scope immediately. The parenthetical frequency list is dense but useful, and the second sentence adds a clear limitation without unnecessary elaboration. Every sentence contributes value.

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 no-input tool with an output schema present, the description fully covers what the tool returns, how values are normalized, what aggregates are computed, and what information is deliberately absent. Nothing essential for calling the tool correctly is missing.

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

Parameters4/5

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

The tool accepts zero parameters and the schema coverage is effectively 100%, so there are no parameter semantics for the description to clarify. The baseline of 4 applies because no parameters exist and the description does not need to compensate for undocumented inputs.

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

Purpose4/5

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

The description clearly identifies the resource: active expense recurrences (RecurringTransaction), and specifies the computed outputs: monthly-normalized values, total monthly committed amount, and duplicate categories. It is specific enough to be distinguished from generic listing tools, though it lacks an explicit verb such as 'returns' or 'lists'.

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 for when to use the tool: to see all active recurring expense commitments with normalized monthly values and duplicates. It also explicitly states a when-not: it does not indicate service usage or whether a subscription is 'forgotten'. However, it does not name alternative sibling tools, leaving routing to inference.

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

tags_insightsInsights por tagA
Read-only
Inspect

Total gasto, contagem de transações e data da última movimentação, agregados por tag no mês alvo. Sem month/year usa o mês atual e serve a versão materializada; com month/year calcula ao vivo. Equivalente a categories_insights mas por tag em vez de categoria — não traz comparação com mês anterior nem orçamento (tags não têm budget).

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoAno alvo (default ano atual)
monthNoMês alvo, 1-12 (default mês atual)

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearNo
monthNo
insightsNo

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations: omitting month/year serves a materialized version while providing them triggers live calculation — a performance/freshness trade-off an agent should know. 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?

Three sentences, each carrying distinct information: output metrics, parameter-dependent execution path, and sibling relationship with exclusions. The core result is front-loaded and there is no filler or repetition of what the schema already states.

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?

Complete for a read-only aggregation tool: output schema covers the return shape, annotations cover the safety profile, and the description covers defaults, execution path, and exclusions relative to the sibling. Nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100% for both year and month, so the baseline is 3. The description adds genuine param semantics beyond the schema: the presence or absence of month/year selects a different execution path (materialized vs live), which is a meaningful behavioral consequence of how the agent fills the parameters.

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

Purpose5/5

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

States the exact outputs — total spent, transaction count, and last-movement date aggregated by tag for the target month — so the agent knows precisely what it returns. It explicitly distinguishes itself from categories_insights ('mas por tag em vez de categoria'), making selection unambiguous 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?

Names the direct alternative (categories_insights) and states the relationship explicitly. It also tells the agent what it will NOT find here — previous-month comparison or budget ('não traz comparação com mês anterior nem orçamento') — preventing a wrong tool choice, and gives a concrete when-to-use rule via the materialized-versus-live behavior.

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

transport_routineRotina de transporteA
Read-only
Inspect

Detecta quando a sequência atual de dias seguidos com gasto de transporte (categoria TRANSPORT ou nome contendo 'transport') está bem acima do normal do usuário: olha os últimos 90 dias, só sinaliza se o último gasto foi hoje/ontem, a sequência atual tem ≥3 dias e é ≥1.5x a média das sequências anteriores. Retorna lista vazia (não erro) se não houver sinal ou histórico insuficiente (<3 dias de gasto no período).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.7/5.0
Behavior5/5

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

A descrição vai muito além das annotations: detalha a janela de 90 dias, a condição de atualidade, o limiar de 1.5x, o mínimo de 3 dias e o comportamento de retornar lista vazia em vez de erro. Isso permite ao agente prever o comportamento sem executar a chamada.

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 descrição é compacta, sem palavras supérfluas, e começa pela ação principal antes de detalhar as condições. As múltiplas cláusulas são organizadas de forma legível e cada trecho carrega informação relevante para a decisão do agente.

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?

Considerando que não há parâmetros, que existe output schema e que a complexidade é moderada, a descrição cobre todos os pontos essenciais: gatilho, janela temporal, condições de sinalização e comportamento em caso de dados insuficientes. Nada crítico está faltando.

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?

A ferramenta não possui parâmetros e a cobertura do schema é 100%, então não há semântica paramétrica adicional a fornecer. A descrição ainda define implicitamente a fonte de dados (categoria TRANSPORT ou nome contendo 'transport'), justificando o baseline 4 para ferramentas sem parâmetros.

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?

A descrição abre com verbo específico 'Detecta' e recurso bem definido: 'sequência atual de dias seguidos com gasto de transporte'. Os critérios numéricos (≥3 dias, ≥1.5x a média) tornam a finalidade inequívoca e distinguem a ferramenta de siblings genéricos de anomalia.

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?

A descrição estabelece claramente quando a ferramenta deve ser usada: quando há uma sequência atual de transporte acima do normal, com última ocorrência hoje/ontem e histórico suficiente. No entanto, não há exclusões explícitas nem menção a alternativas entre os siblings, como bill_anomalies ou behavior_insights.

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

upcoming_transactionsPróximas transaçõesA
Read-only
Inspect

Lista transações INCOME/EXPENSE (não TRANSFER) dos próximos dias com resumo agregado de upcoming (dentro do range) e overdue (vencidas e ainda não pagas, sempre incluídas independente do range). status filtra por isPaid: default 'pending' (só não pagas) — use 'all' pra ver pagas e pendentes juntas no período.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoData ISO fim, default +30 dias
fromNoData ISO início, default hoje
statusNoDefault: pending (só transações não pagas)

Output Schema

ParametersJSON Schema
NameRequiredDescription
rangeNo
summaryNo
generatedAtNo
transactionsNo

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses meaningful behavior: only INCOME/EXPENSE are included, overdue transactions are always included regardless of the date range, and status maps to isPaid with a meaningful default. This is valuable behavioral context that annotations alone do not 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?

The description is compact and front-loaded, starting with the core purpose before adding filter and summary nuance. Every clause carries distinct information without redundancy or filler.

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 existence of an output schema, optional parameters, and a read-only annotation, the description covers the operational key points: scope, filters, defaults, and the special overdue behavior. An agent has enough context to invoke this tool appropriately.

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 semantics for the status parameter by explaining the default, what 'all' does, and how paid vs pending relates to isPaid. It also clarifies that from/to controls only future range while overdue extends beyond it.

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

Purpose5/5

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

The description opens with a specific action and resource: lists INCOME/EXPENSE transactions for upcoming days, explicitly excluding TRANSFER. It also defines the two summary buckets (upcoming and overdue), which clearly distinguishes this tool from generic listing siblings like list_transactions.

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

Usage Guidelines3/5

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

The description explains the default status filter and mentions using 'all' to include paid and pending transactions, which gives practical usage context. However, it does not explicitly state when to choose this tool over list_transactions or any other alternative, leaving sibling differentiation mostly implicit.

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

update_accountAtualizar contaA
Idempotent
Inspect

Atualiza campos de uma conta existente (parcial — campo omitido/vazio mantém o valor atual). Tanto o dono (OWNER) quanto membros (MEMBER) de uma conta conjunta podem chamar esta tool; para excluir a conta, porém, só o dono pode (veja delete_account). Editar balance aqui sobrescreve o saldo diretamente, sem relação com o histórico de transações — não é o mesmo que registrar uma transação de ajuste.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID da conta a atualizar
nameNoNovo nome da conta
typeNoCHECKING, SAVINGS, WALLET ou INVESTMENT
colorNoCor hex para exibição, ex: #3B82F6
balanceNoSobrescreve o saldo diretamente (não é uma transação — não afeta fatura de cartão nem histórico)
bankCodeNoCódigo do banco
currencyNoMoeda ISO 4217
balanceDateNoData ISO de referência do saldo informado em `balance`

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
typeNo
colorNo
userIdNo
balanceNo
bankCodeNo
currencyNo
createdAtNo
updatedAtNo
balanceDateNo

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only carry generic hints (readOnlyHint=false, idempotentHint=true, destructiveHint=false). The description discloses what those hints cannot: the partial-update behavior (omitted/empty fields retain their values), the joint-account permission model, and the side-effect profile of writing balance (direct overwrite with no effect on invoice or transaction history). No contradiction with 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?

Three dense sentences, each carrying distinct information: the core update contract, the permission/deletion caveat, and the balance warning. The core purpose is front-loaded, and there is zero filler or restatement of schema content.

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?

With an output schema present (return values covered) and annotations covering the safety/idempotency profile, the description supplies the remaining invocation-critical facts: who has permission, what partial updates do, and how balance behaves. Nothing an agent needs to call update_account correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by establishing the cross-cutting partial-update rule that applies to all 7 optional parameters (omitted means unchanged), and by flagging balance as the semantically dangerous parameter. The schema describes each field individually, but the tool-level description clarifies the omission contract and the balance pitfall at the right abstraction level.

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

Purpose5/5

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

The description states a specific verb+resource — 'Atualiza campos de uma conta existente' (updates fields of an existing account) — with the crucial partial-update contract added. Combined with the sibling set containing create_account/delete_account and many update_* tools, the phrase 'conta existente' and the explicit pointer to delete_account clearly distinguish this tool from its 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?

The description explicitly states who may call it ('Tanto o dono (OWNER) quanto membros (MEMBER) de uma conta conjunta podem chamar'), carves out an exclusion with the alternative named ('para excluir a conta, porém, só o dono pode (veja delete_account)'), and warns that editing balance 'não é o mesmo que registrar uma transação de ajuste', routing the agent away from this tool when a transaction adjustment is intended. Full when/when-not guidance.

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

update_budgetAtualizar orçamentoA
Idempotent
Inspect

Atualiza um orçamento (parcial — campos omitidos ou string vazia mantêm o valor atual). Efeito colateral: recalcula analytics e insights do usuário, igual create_budget. Devolve apenas { count }, não o orçamento atualizado.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId do orçamento (Budget) a atualizar
nameNo
typeNo
yearNo
monthNo
amountNo
periodNo
categoryNo'ALL' para remover o filtro de categoria
currencyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo

TDQS

A4.6/5.0
Behavior5/5

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

The description discloses meaningful behavioral details beyond the annotations: partial updates preserve omitted fields, analytics and insights are recalculated, and the response only contains `{ count }`. This goes well beyond what readOnlyHint, idempotentHint, and destructiveHint already 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?

Two concise sentences carry substantial information: purpose, partial-update behavior, side effect, and return shape. Everything earns its place, and the most important behavioral detail 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 9-parameter mutation tool with annotations and an output schema, the description covers the essential decisions: what is updated, how omission behaves, what side effects occur, and what is returned. Remaining gaps such as authentication or validation are not critical here.

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 low at 22%, but the description compensates with a key global parameter rule: omitted fields or empty strings keep the current value. This is critical for correctly using the optional parameters, even though individual field semantics are not elaborated.

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 'Atualiza um orçamento', identifying the specific action and resource. It also adds important scope with 'parcial' and explicitly references create_budget, helping disambiguate update from create operations.

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 usage context by explaining partial update behavior and the side effect compared to create_budget. It does not explicitly list when not to use the tool, but the context is strong enough for an agent to select it appropriately.

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

update_cardAtualizar cartãoA
Idempotent
Inspect

Atualiza campos de um cartão (parcial — campo omitido mantém o valor atual). Para tornar o cartão 'Sem Limite' envie limit: "none" (o literal, não omitir e não 0 — omitir mantém o limite atual, 0 vira um limite de fato zero). Não permite alterar currentInvoice/limitUsed diretamente: esses campos são recalculados automaticamente pelo backend a partir das faturas e transações reais, então não fazem parte do input desta tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID do cartão a atualizar
nameNoNovo nome/apelido do cartão
brandNoEx: VISA, MASTERCARD
colorNoCor hex para exibição
limitNoNovo limite total, ou o literal 'none' para remover o teto de crédito (cartão 'Sem Limite')
dueDayNoDia do vencimento da fatura (1-31)
currencyNoMoeda ISO 4217
accountIdNoID da conta usada para pagar a fatura deste cartão
closingDayNoDia do fechamento da fatura (1-31)
lastFourDigitsNoÚltimos 4 dígitos do cartão

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already mark readOnly=false, destructive=false, and idempotent=true, and the description adds substantial behavior beyond that: partial updates preserve omitted fields, the literal 'none' removes the limit while 0 creates a real zero limit, and currentInvoice/limitUsed are backend-recalculated and therefore not part of the input. 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?

Two sentences, front-loaded with the core partial-update semantics, then the special limit behavior, then the non-editable fields. Every sentence carries distinct, necessary information with no filler.

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?

With an output schema present and annotations covering safety/idempotency, the description covers the remaining ambiguous behavior: partial updates, the special 'none' literal, and backend-managed fields. An agent has enough information to invoke update_card correctly. Explicit sibling routing is the only minor gap, and it is not essential for calling the tool successfully.

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. The description adds real meaning beyond the schema by explaining the limit edge cases ('none' literal vs omitted vs 0) and by clarifying that currentInvoice/limitUsed are intentionally excluded because the backend recalculates them. This goes beyond what the property descriptions alone provide.

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: 'Atualiza campos de um cartão' (updates fields of a card), and immediately adds the key partial-update qualifier. This clearly distinguishes it from create_card, delete_card, and list_cards in the sibling set, even without naming 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?

The partial-update behavior and the warning about currentInvoice/limitUsed imply this is the tool for modifying existing cards, but there is no explicit when-to-use statement or guidance about when to prefer create_card or avoid this tool. Usage is clear by implication, not by explicit routing.

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

update_categoryAtualizar categoriaA
Idempotent
Inspect

Atualiza campos de uma categoria (parcial — campo omitido/vazio mantém o valor atual). Mesmas validações de create_category: parentId precisa ser de uma categoria própria do usuário com o mesmo type (e não pode ser a própria categoria), e vínculo com catálogo global exige type compatível.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID da categoria a atualizar
iconNoNome do ícone, ex: 'shopping-cart'
nameNoNovo nome da categoria/subcategoria
typeNoEXPENSE ou INCOME
colorNoCor hex, ex: #3B82F6
parentIdNoID de outra categoria do usuário para tornar esta uma subcategoria dela
globalCategoryIdNoID de uma categoria do catálogo global para vincular
globalSubcategoryIdNoID de uma subcategoria do catálogo global para vincular

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true. The description adds value beyond these by disclosing partial-update semantics (omitted/empty fields retain current values) and validation constraints on parentId and global-catalog links, which are meaningful behavioral details not inferable from 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 compact sentences, with the most important behavioral trait (partial update) front-loaded in the first sentence and validation constraints in the second. There is no filler, redundancy, or unnecessary repetition of schema 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?

The output schema exists and annotations cover the safety profile, so the description does not need to explain return values. It covers partial-update behavior and validation rules well. Minor gaps remain around how to clear nullable fields like parentId or globalCategoryId and around error behavior, but these are secondary given the richness of the schema and annotations.

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?

Input schema coverage is 100%, so the baseline is 3. The description adds cross-parameter semantics not present in the schema, such as the partial-update rule, parentId ownership/type/self-reference validation, and global-catalog type compatibility requirements. This meaningfully helps the agent use the parameters correctly.

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 ('Atualiza') and resource ('campos de uma categoria'), and immediately adds the partial-update trait, distinguishing it from create_category and delete_category. There is no ambiguity about what operation the tool performs.

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

Usage Guidelines3/5

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

The description implies use for an existing category by saying it updates fields, and it points to create_category for validation rules. However, it never explicitly states when to prefer this over create/delete or lists conditions or exclusions, so usage timing is left mostly to inference.

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

update_cost_centerAtualizar centro de custoA
Idempotent
Inspect

Atualiza nome/descrição de um centro de custo (parcial — campo omitido/vazio mantém o valor atual).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID do centro de custo a atualizar
nameNoNovo nome do centro de custo
descriptionNoNova descrição livre

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
userIdNo
createdAtNo
isDefaultNo
updatedAtNo
descriptionNo

TDQS

A4.1/5.0
Behavior4/5

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

The description discloses a non-obvious behavior beyond the annotations: omitted or empty fields preserve the current value, which is critical for a partial update call. It is consistent with readOnlyHint=false and idempotentHint=true; it does not go into side effects or permissions, but the annotations lower that 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?

One compact sentence with a parenthetical qualifier; every phrase adds value and no schema information is repeated unnecessarily. The key update scope is front-loaded.

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 three-parameter update tool, the description, complete input schema, idempotentHint annotation, and output schema together supply enough to invoke it correctly without further documentation. The partial-update nuance is explicitly included.

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 100%, so the baseline is satisfied. The description adds parameter-level meaning by clarifying that name/description can be partially supplied and that omitting or sending an empty string keeps existing values, which the schema itself does not state.

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 identifies a specific action ('Atualiza'), a precise resource ('centro de custo'), and the affected fields ('nome/descrição'). This distinguishes it from create_cost_center, delete_cost_center, list_cost_centers, and the other update_* siblings 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 Guidelines2/5

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

There is no explicit guidance about when to use this tool versus alternatives such as create_cost_center for a new center or delete_cost_center for removal. The reader must infer the update use case from the verb; the partial-update note is operational behavior, not usage-selection guidance.

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

update_debtAtualizar dívidaA
Idempotent
Inspect

Atualiza uma dívida (parcial — campo omitido ou string vazia mantém o atual; status/category/creditor/description/currency seguem essa mesma regra, não há como limpar um valor já preenchido por esta tool). equityId, se enviado, é revalidado contra o dono. Efeito colateral: recalcula analytics e insights do usuário.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId da dívida (Debt) a atualizar
nameNo
statusNo
dueDateNo
categoryNo
creditorNo
currencyNo
equityIdNoNovo Equity vinculado; precisa pertencer ao usuário
descriptionNo
totalAmountNo
interestRateNoTaxa de juros mensal em %
remainingAmountNoNovo saldo devedor — use para registrar um pagamento parcial

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo

TDQS

A4.4/5.0
Behavior5/5

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

It discloses that the update is partial, that omitted fields and empty strings keep the current value, that certain string fields cannot be cleared, and that equityId is revalidated against the owner. It also warns that analytics and insights are recalculated, which is clearly beyond the hints provided 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?

The description is dense but efficient: three sentences front-load the action, then cover partial-update behavior and side effects. No filler; every sentence carries essential 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 12-parameter mutation tool, the description provides the essential call semantics: partial merge, no clearing, owner validation, and side effects. With the output schema present and annotations covering mutation/idempotence, this is nearly complete; it only lacks explicit alternative routing and a few parameter-format details.

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 33%, but the description compensates with a general partial-update rule that applies semantics to omitted/empty parameters, names several affected fields, and adds owner validation for equityId. Specific formats such as dueDate and the relationship between totalAmount and remainingAmount remain undocumented, so it is strong but not complete.

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 'Atualiza uma dívida' — a specific verb plus resource — and then refines it as a partial update. This clearly distinguishes it from sibling tools such as create_debt, delete_debt, and list_debts.

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 no explicit when-to-use or alternative routing; the operative guidance is only the implied meaning 'use this to modify an existing debt'. No exclusions or conditions are given to steer an agent away from create/delete/list siblings.

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

update_equityAtualizar investimentoA
Idempotent
Inspect

Atualiza campos de um investimento existente (id = id do investimento). Campos omitidos mantêm o valor atual — exceto description/ticker/exchange/shares, que quando enviados como string vazia são limpos (setados para null). Se value e/ou cost forem enviados, registra automaticamente uma nova avaliação (EquityValuation) datada de agora com os valores resultantes — equivalente a um add_equity_valuation implícito sem data retroativa. Para registrar um valor histórico numa data específica sem alterar os outros campos do investimento, use add_equity_valuation em vez desta.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId do investimento (Equity) a atualizar
costNoNovo custo/valor investido — se informado, registra nova avaliação
nameNoNovo nome
typeNoNovo tipo do ativo — ex: stocks, crypto, real-estate-house
colorNoNova cor associada na UI
valueNoNovo valor de mercado — se informado, registra nova avaliação
sharesNoNova quantidade de cotas/ações
tickerNoNovo código do ativo na bolsa; string vazia remove o ticker
exchangeNoNova bolsa/exchange; string vazia remove
descriptionNoNova descrição; string vazia limpa o campo
acquisitionDateNoNova data de aquisição (ISO)

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
costNo
nameNo
typeNoTipo do ativo — ex: stocks, crypto, real-estate-house
colorNo
valueNo
sharesNo
tickerNo
userIdNo
exchangeNo
createdAtNo
updatedAtNo
descriptionNo
acquisitionDateNo

TDQS

A4/5.0
Behavior1/5

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

Although the description discloses useful behavioral details like empty-string clearing and automatic EquityValuation creation, it directly contradicts the `idempotentHint: true` annotation. The description says that sending `value` and/or `cost` registers a new EquityValuation dated now, so repeated identical calls would create multiple valuations. This is a non-idempotent side effect, making the description contradict the 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?

The description is compact and well structured. It leads with the core action, then explains edge-case behavior, then closes with the alternative tool usage. Every sentence earns its place, and there is no redundant or filler 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?

For a complex mutation tool with 11 parameters and side effects, the description covers the key operational details: field update semantics, empty-string clearing, automatic valuation behavior, and when to choose the sibling tool. An output schema exists, so return-value details are not required. The unresolved contradiction with `idempotentHint` prevents a perfect completeness score, but that issue is already counted under behavioral transparency.

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. The description adds meaningful semantics beyond the schema: omitted fields retain their current value, empty strings clear certain fields, and the implicitly created valuation is dated now with no retroactive date. There is a minor inconsistency where `shares` is listed among string-cleared fields even though its schema type is number, so a perfect score is not warranted.

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

Purpose5/5

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

The description clearly states the action: updating fields of an existing investment identified by `id`. It also distinguishes itself from `add_equity_valuation` by explicitly noting the difference between implicit current-date valuation and historical valuation. This is specific, unambiguous, and differentiates the tool from its 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?

The description explicitly tells the agent when to use `add_equity_valuation` instead: when recording a historical value on a specific date without changing other investment fields. It also implicitly conveys that `update_equity` is the right choice for updating existing investment fields and optionally recording a current valuation. This is strong routing guidance.

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

update_goalAtualizar metaA
Idempotent
Inspect

Atualiza uma meta (parcial — campos omitidos ou string vazia mantêm o valor atual). Diferente de create_goal, devolve apenas { count } (1 se atualizou, 0 se o id não existe ou não pertence ao usuário), não a meta atualizada — use list_goals para conferir o resultado.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId da meta (Goal) a atualizar
nameNo
colorNo
categoryNo
currencyNo
deadlineNoNovo prazo (data ISO). Envie string vazia não remove o prazo — não há como limpar deadline por esta tool
targetAmountNo
currentAmountNoNovo valor acumulado — útil para registrar um aporte manual na meta

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo

TDQS

A4.9/5.0
Behavior5/5

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

Discloses behaviors far beyond the annotations: partial semantics (omitted or empty-string fields keep the current value), the `{ count }` return shape instead of the updated goal, and the edge case where count=0 (id not found or not owned by the user). These are precisely the behavioral traits an agent needs beyond readOnly/idempotent/destructive hints.

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 dense sentences with zero filler, front-loaded with the primary semantics ('Atualiza uma meta (parcial...)'). Every clause earns its place: scope, sibling contrast, return shape, edge cases, and verification pointer.

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?

Even with an output schema present, the description adds the count semantics and ownership edge case, covers partial behavior, and provides the verification path and sibling distinction. Nothing an agent needs to invoke the tool correctly is missing.

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

Parameters4/5

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

Schema coverage is only 38%, but the description compensates with a universal partial-update rule that applies to all 8 parameters. It doesn't add per-field detail, yet the remaining parameter names (name, color, category, currency, targetAmount) are self-explanatory, and the deadline empty-string caveat in the schema is consistent with the description's general rule.

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 ('Atualiza') and resource ('meta') and immediately defines its partial-update scope. The explicit contrast with create_goal distinguishes it from its closest sibling, and the return-shape note removes ambiguity about what the tool does not do.

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 explicitly names create_goal as the alternative it differs from ('Diferente de create_goal') and points the agent to list_goals as the verification tool for confirming results. This cleanly routes the agent across the create/update/read decision space for goals.

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

update_profileAtualizar perfilA
Idempotent
Inspect

Atualiza o perfil do usuário autenticado (parcial — campo omitido ou string vazia mantém o valor atual; não há como limpar um campo já preenchido por esta tool, exceto hasBusiness que aceita true/false explícito). Não atualiza email, plano ou dados de assinatura (não expostos aqui).

ParametersJSON Schema
NameRequiredDescriptionDefault
cepNoCEP do usuário
nameNo
phoneNo
pictureNoURL ou data URI da foto de perfil
currencyNoMoeda padrão do usuário (ISO 4217, ex: 'BRL')
locationNoCidade/localização do usuário
coverImageNoURL ou data URI da imagem de capa
occupationNoProfissão/ocupação
hasBusinessNoSe o usuário tem um negócio/CNPJ associado ao perfil
businessCnpjNoCNPJ do negócio
businessNameNoNome do negócio, quando hasBusiness = true
menuPreferenceNoPreferência de layout/menu do app
businessWebsiteNoSite do negócio

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
cepNo
nameNo
planNo
slugNo
typeNo
emailNo
phoneNo
auth0IdNo
pictureNo
currencyNo
locationNo
createdAtNo
updatedAtNo
occupationNo
hasBusinessNo
businessCnpjNo
businessNameNo
menuPreferenceNo
businessWebsiteNo
onboardingCompletedNo

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already cover write and idempotency hints, but the description adds crucial behavioral nuance: the partial-update rule, the no-clear limitation, and the special exception for hasBusiness. This prevents misuse, such as attempting to null out fields via empty strings, and goes well beyond what structured annotations convey.

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

Conciseness5/5

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

The description is two sentences, with the most critical caveat (partial update, no clearing) front-loaded and the exclusions following. There is no filler; every clause adds actionable information.

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 13 optional parameters, the partial-update behavior, and the presence of an output schema, the description covers the essential behavioral contract. It explains how updates behave, what cannot be updated, and the clearing limitation, making it complete enough for an agent to invoke 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?

Schema coverage is 85%, so most parameter meanings are in the schema. The description adds a global semantic that applies to all parameters: omission or empty string leaves the current value unchanged, and only hasBusiness can be explicitly toggled. This is significant context not present in the schema, elevating it above the baseline 3.

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 'Atualiza o perfil do usuário autenticado' (updates the authenticated user's profile) with a specific verb and resource. It also differentiates itself from siblings by explicitly excluding email, plan, and subscription data, making the tool's scope 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 the partial-update semantics (omitted or empty string keeps the current value) and the inability to clear fields, which directly guides correct invocation. It also states what the tool does NOT update (email, plan, subscription), giving clear when-not-to-use guidance, though it does not name alternative tools explicitly.

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

update_recurring_transactionAtualizar transação recorrenteA
Idempotent
Inspect

Atualiza a regra recorrente (parcial — campo omitido/vazio mantém o valor atual). Só altera a regra em si: não retroage nem edita as transações já geradas por ela (use update_transaction/delete_transaction para essas), e não gera novas ocorrências — dispara apenas recálculo de projeções/insights (analytics.recalculate + insights).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID da regra recorrente a atualizar
typeNoTipo das ocorrências futuras
amountNoNovo valor — vale só para ocorrências futuras ainda não geradas, não retroage
cardIdNoNovo cartão usado para ocorrências EXPENSE
endDateNoData ISO
categoryNoRótulo livre da categoria (texto)
isActiveNofalse pausa a regra (sem gerar novas ocorrências), sem excluir as já geradas
accountIdNoNova conta usada para débito/crédito
frequencyNoEx: MONTHLY, WEEKLY, YEARLY
startDateNoData ISO
descriptionNoNova descrição das ocorrências futuras
costCenterIdNoNovo centro de custo
destinationAccountIdNoNova conta de destino, se as ocorrências forem transferências

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo

TDQS

A4.9/5.0
Behavior5/5

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

Even though annotations already cover readOnly/destructive/idempotent hints, the description adds substantial behavioral context: omitted/empty fields preserve current values, changes do not retroactively affect existing transactions, no new occurrences are generated, and only projections/insights are recalculated. This goes well beyond the annotation metadata.

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 compact yet information-dense, with the core behavior and partial-update caveat front-loaded. The parentheticals and em-dash efficiently convey boundary conditions without padding or repetition. Every clause 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 13 parameters and 100% schema coverage, the description only needs to add the behavioral envelope, and it does so thoroughly: side effects, non-effects, and alternatives. The presence of an output schema also reduces the need to explain return values. Nothing critical is missing for an agent to call this 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?

Schema description coverage is 100%, and each parameter already has a meaningful description. The tool description adds important cross-cutting semantic value by stating that the update is partial: omitted/empty fields keep their current value. This clarifies how all parameters behave together rather than repeating per-parameter schema details.

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

Purpose5/5

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

The description states a specific verb ('Atualiza'), the resource ('a regra recorrente'), and precise scope: partial update, no retroactive effect, no new occurrences, and analytics recalculation. It clearly distinguishes this from related transaction-editing tools by naming update_transaction/delete_transaction as the alternative for already-generated transactions.

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 explicitly tells the agent when NOT to use this tool: not for already-generated transactions, directing to update_transaction/delete_transaction instead. It also clarifies that it does not generate new occurrences, which prevents misuse when the goal is to create future instances.

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

update_tagAtualizar tagA
Idempotent
Inspect

Atualiza nome e/ou cor de uma tag existente do usuário autenticado (id = id da tag). Campos omitidos mantêm o valor atual. count retorna 0 se o id não existir ou não pertencer ao usuário (sem erro).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId da tag a atualizar
nameNoNovo nome
colorNoNova cor (ex: hex '#RRGGBB')

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations indicate mutation (readOnlyHint=false) and non-destructive behavior (destructiveHint=false). The description adds useful behavioral details beyond annotations: omitted fields are preserved, a missing or non-owned id returns count=0 without an error, and the operation is confined to the authenticated user's tags.

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 front-load the core purpose and then state the two behavioral facts an agent needs: partial update semantics and non-error on missing/non-owned id. No filler or repetition.

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 three-parameter update tool, the description, input schema, and output schema together cover the required invocation facts: required id, optional fields, partial-update behavior, authentication scope, and edge-case behavior. Nothing essential is missing.

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

Parameters4/5

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

Schema coverage is 100%, so each parameter is already documented. The description adds semantic value by explaining that id refers to an existing tag owned by the authenticated user, name and color are optional partial-update fields, and an unknown id does not cause an error.

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 ('Atualiza' / updates) and clearly identifies the resource: an existing tag belonging to the authenticated user. It names exactly which fields can change (name and/or color) and ties the id parameter to the tag id, distinguishing it from create_tag, delete_tag, and list_tags.

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 gives clear operational context: the update is scoped to the authenticated user's tag, and omitted fields keep their current value, implying partial updates. It does not explicitly name alternatives or when-not conditions, but the update-vs-create/delete distinction is unambiguous.

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

update_transactionAtualizar transaçãoA
Idempotent
Inspect

Atualiza uma transação existente (parcial — campo omitido/vazio mantém o valor atual). Se amount, type ou accountId mudarem, reverte o efeito de saldo da versão antiga e reaplica com os novos valores (retorna 400 se a nova conta não tiver saldo suficiente para EXPENSE/TRANSFER). Não reajusta parcelas irmãs (currentInstallment/totalInstallments) nem faturas de cartão — para mudanças que afetam cartão, prefira excluir e recriar. Dispara recálculo de projeções e insights (best-effort).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID da transação a atualizar
dateNoData ISO ou dd/mm/yyyy
typeNoEXPENSE, INCOME, TRANSFER ou INVOICE_PAYMENT
amountNoNovo valor da transação
cardIdNoNovo cartão vinculado
isPaidNoMarca/desmarca como paga (sem reverter/aplicar efeito de saldo automaticamente — use confirm_pending_transaction pra isso)
natureNoPERSONAL, PROFESSIONAL, MIXED ou BUSINESS
agentIdNoNovo contato/agente vinculado
categoryNoRótulo texto livre da categoria (independente de categoryId)
paidDateNoData ISO em que foi efetivamente paga
accountIdNoNova conta debitada/creditada
categoryIdNoId da Category do usuário
descriptionNoNova descrição/título
costCenterIdNoNovo centro de custo
scheduledDateNoData ISO — reagenda a transação
destinationAccountIdNoConta de destino, se type for TRANSFER

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo

TDQS

A4.9/5.0
Behavior5/5

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

The description discloses substantial behavior beyond the annotations: balance-effect reversal/reapplication when amount, type, or accountId change, a 400 error for insufficient balance, no adjustment of sibling installments or card invoices, and best-effort recalculation of projections/insights. This adds real operational context that annotations alone do not 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?

The description is four dense sentences with no filler. It front-loads the main action and partial-update behavior, then covers side effects, exclusions, and post-update recalculations. Every 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 16-parameter mutation tool, the description covers scope, partial semantics, balance side effects, error conditions, exclusions, and alternative strategies. The output schema and per-parameter descriptions carry the remaining details, so nothing critical is missing for an agent to call this 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?

Schema description coverage is 100%, so the baseline is 3. The description adds important cross-parameter semantics, such as how changing amount/type/accountId triggers balance reversal and reapplication, and the insufficient-balance 400 condition. This goes beyond what individual parameter descriptions state.

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

Purpose5/5

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

The description opens with a specific verb and resource, 'Atualiza uma transação existente', and immediately explains partial update semantics. It also distinguishes itself from related operations by stating what it does not do (adjust sibling installments or credit card invoices), which separates it clearly from create/delete/confirm tools.

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 gives concrete when-to-use and when-not-to-use guidance: partial updates are supported, but for card-affecting changes it directs the agent to 'prefira excluir e recriar'. The isPaid parameter description also explicitly routes to confirm_pending_transaction, clarifying the correct alternative.

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

validate_current_invoicesValidar faturas atuaisA
Destructive
Inspect

Recalcula e sobrescreve currentInvoice (soma das faturas não pagas) de TODOS os cartões do usuário, incondicionalmente — não só os desalinhados. Retorna, por cartão, o valor anterior e o novo, com needsCorrection = true quando a diferença era maior que 0.01. Rode depois de operações em lote (ex: reimportação de transações) que possam ter deixado Card.currentInvoice dessincronizado.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.7/5.0
Behavior5/5

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

The annotations already flag destructiveHint=true and readOnlyHint=false, and the description adds meaningful behavioral detail: it overwrites currentInvoice on all cards unconditionally, returns previous and new values per card, and defines the needsCorrection threshold. This goes well beyond what the structured annotations 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?

The description is three dense sentences with no filler: the first states the main side effect and scope, the second describes the return payload, and the third gives the operational trigger. Every sentence earns its place and 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.

Completeness5/5

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

With no parameters, a destructive annotation, and an output schema, the description supplies the remaining essential context: when to run it, what it mutates, and what it returns. There is no critical missing information for an agent to call it correctly.

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

Parameters4/5

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

The tool has zero parameters, so parameter documentation is not needed; the baseline for no-parameter tools is 4. The description correctly focuses on behavior rather than inputs, leaving nothing ambiguous about how to invoke it.

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

Purpose5/5

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

The description states a specific action ('Recalcula e sobrescreve currentInvoice') and a precise scope ('de TODOS os cartões do usuário, incondicionalmente'), which clearly distinguishes it from invoice-reading siblings like current_invoice or get_invoice. The clarification that it acts on all cards, not just misaligned ones, removes ambiguity about its intent.

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 says when to run: after batch operations such as transaction reimport that may have desynchronized Card.currentInvoice. It does not name specific alternatives or state when not to use the tool, but the trigger condition is concrete enough for an agent to select it correctly.

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

wealth_evolutionEvolução patrimonial (aporte vs valorização)A
Read-only
Inspect

Série histórica mensal (não projeção) que separa quanto do crescimento de patrimônio veio de aporte/resgate (transações ligadas a um Equity) vs valorização de mercado (EquityValuation.value - cost). Retorna série mensal e resumo com total de aportes, estatística e tendência da valorização. Diferença de networth_projection: aqui é passado/histórico e decompõe a causa do crescimento; lá é projeção futura sem decompor.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoFim (YYYY-MM ou YYYY-MM-DD)
fromNoInício (YYYY-MM ou YYYY-MM-DD)

Output Schema

ParametersJSON Schema
NameRequiredDescription
toNo
fromNo
monthsNo
summaryNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context: it clarifies this is historical actual data, not a projection, and explains the decomposition formula. This goes beyond what annotations alone 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?

The description is tight and front-loaded with the most important qualifier ('não projeção'). Every sentence earns its place: what it returns, how it decomposes growth, and how it differs from the main alternative. No filler or redundancy.

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 analytics tool with two optional date parameters and an output schema, the description is complete. It covers the core behavior, the differentiating alternative, and the return summary. The output schema handles return-value details, so nothing critical is missing.

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

Parameters3/5

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

Schema description coverage is 100%, with both 'from' and 'to' parameters documented as optional date strings with format hints. The description adds the monthly series context but does not need to add much parameter-level detail since the schema already covers them adequately.

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 returns a monthly historical series separating wealth growth into aporte/resgate versus market appreciation. It names the specific data sources and explicitly distinguishes itself from networth_projection, so an agent can identify it among dozens of 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?

The description explicitly says this is historical, not projection, and contrasts it with networth_projection: this tool decomposes past growth causes, while networth_projection is future projection without decomposition. This gives clear when-to-use versus when-not-to-use guidance.

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. Dates show when Glama detected each change.

  1. 5 tool updates
    • Removedcurrent_invoice
    • Addeddelete_tag
    • Addedinvoice_for_period
    • Removednext_invoice
    • Addedupdate_tag
  2. 9 tool updates
    • Changedconfirm_new_transaction7 fields changed
      • addedInput schema / properties / agentId / description
        Added value: +"Contato/agente (Agent) vinculado"
      • addedInput schema / properties / amount / description
        Added value: +"Valor total da transação"
      • addedInput schema / properties / categoryId / description
        Added value: +"Id da Category do usuário"
      • addedInput schema / properties / costCenterId / description
        Added value: +"Centro de custo vinculado"
      • addedInput schema / properties / description / description
        Added value: +"Descrição/título da transação"
      • addedInput schema / properties / equityId / description
        Added value: +"Investimento (Equity) vinculado"
      • addedInput schema / properties / goalId / description
        Added value: +"Meta financeira vinculada — só tem efeito quando type é TRANSFER"
    • Changedcreate_cost_center1 field changed
      • addedInput schema / properties / name / description
        Added value: +"Nome do centro de custo"
    • Changedcreate_recurring_transaction3 fields changed
      • addedInput schema / properties / costCenterId / description
        Added value: +"Centro de custo aplicado a cada ocorrência gerada"
      • addedInput schema / properties / description / description
        Added value: +"Descrição de cada ocorrência gerada"
      • addedInput schema / properties / type / description
        Added value: +"Tipo de cada ocorrência gerada"
    • Changedcreate_transaction2 fields changed
      • addedInput schema / properties / costCenterId / description
        Added value: +"Centro de custo vinculado"
      • addedInput schema / properties / description / description
        Added value: +"Descrição/título da transação"
    • Changedupdate_account2 fields changed
      • addedInput schema / properties / bankCode / description
        Added value: +"Código do banco"
      • addedInput schema / properties / name / description
        Added value: +"Novo nome da conta"
    • Changedupdate_card2 fields changed
      • addedInput schema / properties / lastFourDigits / description
        Added value: +"Últimos 4 dígitos do cartão"
      • addedInput schema / properties / name / description
        Added value: +"Novo nome/apelido do cartão"
    • Changedupdate_cost_center2 fields changed
      • addedInput schema / properties / description / description
        Added value: +"Nova descrição livre"
      • addedInput schema / properties / name / description
        Added value: +"Novo nome do centro de custo"
    • Changedupdate_recurring_transaction6 fields changed
      • addedInput schema / properties / accountId / description
        Added value: +"Nova conta usada para débito/crédito"
      • addedInput schema / properties / cardId / description
        Added value: +"Novo cartão usado para ocorrências EXPENSE"
      • addedInput schema / properties / costCenterId / description
        Added value: +"Novo centro de custo"
      • addedInput schema / properties / description / description
        Added value: +"Nova descrição das ocorrências futuras"
      • addedInput schema / properties / destinationAccountId / description
        Added value: +"Nova conta de destino, se as ocorrências forem transferências"
      • addedInput schema / properties / type / description
        Added value: +"Tipo das ocorrências futuras"
    • Changedupdate_transaction8 fields changed
      • addedInput schema / properties / accountId / description
        Added value: +"Nova conta debitada/creditada"
      • addedInput schema / properties / agentId / description
        Added value: +"Novo contato/agente vinculado"
      • addedInput schema / properties / amount / description
        Added value: +"Novo valor da transação"
      • addedInput schema / properties / cardId / description
        Added value: +"Novo cartão vinculado"
      • addedInput schema / properties / costCenterId / description
        Added value: +"Novo centro de custo"
      • addedInput schema / properties / description / description
        Added value: +"Nova descrição/título"
      • addedInput schema / properties / isPaid / description
        Added value: +"Marca/desmarca como paga (sem reverter/aplicar efeito de saldo automaticamente — use confirm_pending_transaction pra isso)"
      • addedInput schema / properties / paidDate / description
        Added value: +"Data ISO em que foi efetivamente paga"
  3. 53 tool updates
    • Changedadd_equity_valuation4 fields changed
      • addedInput schema / properties / cost
        Added value: +{
        +  "description": "Custo/valor investido nesta data. Default: igual a value (sem ganho/perda registrado se omitido)",
        +  "type": "number"
        +}
      • addedInput schema / properties / date / description
        Added value: +"Data da avaliação (ISO). Default: agora. Use pra backfill retroativo"
      • addedInput schema / properties / id / description
        Added value: +"Id do investimento (Equity), não da avaliação"
      • addedInput schema / properties / value / description
        Added value: +"Novo valor de mercado do investimento"
    • Changedbudget_comparison1 field changed
      • addedInput schema / properties / id / description
        Added value: +"Id do orçamento (Budget)"
    • Changedcan_afford1 field changed
      • changedInput schema / properties / amount / description
        Previous value: -"Valor da compra em reais"New value: +"Valor da compra simulada, em reais. Deve ser > 0"
    • Changedcashflow_forecast7 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / includePending
        Added value: +{
        +  "description": "Se true (default), considera transações pendentes na projeção; false usa só o histórico realizado e força recálculo ao vivo (não usa cache)",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / liquidationParams
        Added value: +{
        +  "description": "JSON stringificado simulando a liquidação de um ativo: {\"assetId\": \"<id do Equity>\", \"amount\": number, \"liquidationLevel\"?: \"LL1\"|..., \"months\"?: number}. Só tem efeito se assetId e amount forem válidos.",
        +  "type": "string"
        +}
      • addedInput schema / properties / months
        Added value: +{
        +  "description": "Quantidade de meses a projetar, 1-12 (default 12)",
        +  "type": "number"
        +}
      • addedInput schema / properties / simulationParams
        Added value: +{
        +  "description": "JSON stringificado simulando amortização extra de uma dívida: {\"debtId\": \"<id>\", \"amount\": number, \"frequency\"?: \"MONTHLY\"|..., \"installments\"?: number}. Só tem efeito se debtId e amount forem válidos.",
        +  "type": "string"
        +}
      • addedInput schema / properties / topCategories
        Added value: +{
        +  "description": "Quantas categorias de topo trazer por mês em topExpenses, 1-20 (default 5)",
        +  "type": "number"
        +}
      • addedInput schema / properties / userId
        Added value: +{
        +  "description": "Id do cliente a consultar (uso de planejador financeiro); omitido usa o próprio usuário autenticado",
        +  "type": "string"
        +}
    • Changedcategories_insights4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / month
        Added value: +{
        +  "description": "Mês alvo, 1-12 (default mês atual). Informar sem year usa o ano atual",
        +  "type": "number"
        +}
      • addedInput schema / properties / userId
        Added value: +{
        +  "description": "Id do cliente a consultar (uso de planejador financeiro); omitido usa o próprio usuário autenticado",
        +  "type": "string"
        +}
      • addedInput schema / properties / year
        Added value: +{
        +  "description": "Ano alvo (default ano atual)",
        +  "type": "number"
        +}
    • Changedconfirm_new_transaction6 fields changed
      • addedInput schema / properties / accountId / description
        Added value: +"Obrigatório se cardId não for informado"
      • addedInput schema / properties / agentId
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / cardId / description
        Added value: +"Obrigatório se accountId não for informado"
      • addedInput schema / properties / confirmNegativeBalance / description
        Added value: +"true confirma explicitamente que o saldo pode ficar negativo (mesmo efeito de isPaid: true nesta tool — a checagem de saldo já é pulada por padrão)"
      • addedInput schema / properties / date / description
        Added value: +"Data ISO ou dd/mm/yyyy"
      • addedInput schema / properties / destinationAccountId / description
        Added value: +"Obrigatório para TRANSFER"
    • Changedconfirm_pending_transaction1 field changed
      • addedInput schema / properties / id / description
        Added value: +"ID da transação pendente a confirmar"
    • Changedcreate_account4 fields changed
      • changedInput schema / properties / balance / description
        Previous value: -"Saldo inicial"New value: +"Saldo inicial (default 0) — não recalculado a partir de transações, é o ponto de partida"
      • addedInput schema / properties / balanceDate
        Added value: +{
        +  "description": "Data ISO de referência do saldo inicial informado. Default: null (sem data associada)",
        +  "type": "string"
        +}
      • addedInput schema / properties / bankCode / description
        Added value: +"Código do banco (ex: FEBRABAN), opcional, sem validação de formato"
      • addedInput schema / properties / color
        Added value: +{
        +  "description": "Cor hex para exibição, ex: #3B82F6",
        +  "type": "string"
        +}
    • Changedcreate_budget10 fields changed
      • addedInput schema / properties / amount / description
        Added value: +"Valor orçado/limite do período"
      • addedInput schema / properties / category
        Added value: +{
        +  "description": "Nome da categoria a limitar (deve bater com Transaction.category). Omitido ou 'ALL' = todas as categorias desse type",
        +  "type": "string"
        +}
      • removedInput schema / properties / categoryId
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "Moeda (ISO 4217). Default: BRL",
        +  "type": "string"
        +}
      • addedInput schema / properties / month / description
        Added value: +"Mês (1-12), obrigatório apenas quando period = MONTHLY"
      • addedInput schema / properties / name
        Added value: +{
        +  "description": "Nome do orçamento (ex: 'Mercado de Janeiro')",
        +  "type": "string"
        +}
      • addedInput schema / properties / period
        Added value: +{
        +  "description": "Periodicidade. Sem default no banco: se omitido, o orçamento não casa com a regra MONTHLY em budget_comparison/budget_daily e acaba tratado como anual — prefira sempre informar",
        +  "enum": [
        +    "MONTHLY",
        +    "YEARLY"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / type
        Added value: +{
        +  "description": "Tipo — precisa bater com o Transaction.type das transações que devem contar para este orçamento",
        +  "enum": [
        +    "INCOME",
        +    "EXPENSE",
        +    "INVESTMENT"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / year / description
        Added value: +"Ano do período (ex: 2026)"
      • changedInput schema / required
        Previous value: -[
        -  "categoryId",
        -  "amount",
        -  "year",
        -  "month"
        -]New value: +[
        +  "name",
        +  "type",
        +  "amount",
        +  "year"
        +]
    • Changedcreate_card7 fields changed
      • changedInput schema / properties / accountId / description
        Previous value: -"Conta associada ao pagamento da fatura"New value: +"ID da conta usada para pagar a fatura deste cartão"
      • addedInput schema / properties / color
        Added value: +{
        +  "description": "Cor hex para exibição, ex: #3B82F6",
        +  "type": "string"
        +}
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "Moeda ISO 4217, default BRL",
        +  "type": "string"
        +}
      • addedInput schema / properties / lastFourDigits / description
        Added value: +"Últimos 4 dígitos do cartão, só para exibição"
      • changedInput schema / properties / limit / description
        Previous value: -"Limite total do cartão"New value: +"Limite total do cartão. Omita para criar um cartão 'Sem Limite' (sem teto de crédito)"
      • addedInput schema / properties / name / description
        Added value: +"Nome/apelido do cartão, ex: 'Nubank Roxinho'"
      • changedInput schema / required
        Previous value: -[
        -  "name",
        -  "limit",
        -  "closingDay",
        -  "dueDay"
        -]New value: +[
        +  "name",
        +  "closingDay",
        +  "dueDay"
        +]
    • Changedcreate_category6 fields changed
      • addedInput schema / properties / globalCategoryId / description
        Added value: +"ID de uma categoria do catálogo global (GlobalCategory) para vincular"
      • addedInput schema / properties / globalSubcategoryId / description
        Added value: +"ID de uma subcategoria do catálogo global (GlobalSubcategory) para vincular — se informado, também resolve/preenche globalCategoryId a partir do pai dela"
      • addedInput schema / properties / icon / description
        Added value: +"Nome do ícone, ex: 'shopping-cart'"
      • addedInput schema / properties / name / description
        Added value: +"Nome da categoria/subcategoria"
      • addedInput schema / properties / parentId / description
        Added value: +"ID de outra categoria do usuário para criar esta como subcategoria dela (precisa ter o mesmo type)"
      • changedInput schema / properties / type / description
        Previous value: -"EXPENSE ou INCOME"New value: +"EXPENSE ou INCOME. Se globalCategoryId/globalSubcategoryId for informado, o type é herdado dali e precisa bater com o valor enviado aqui"
    • Changedcreate_cost_center3 fields changed
      • removedInput schema / properties / color
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / description
        Added value: +{
        +  "description": "Descrição livre do centro de custo",
        +  "type": "string"
        +}
      • removedInput schema / properties / icon
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcreate_debt11 fields changed
      • addedInput schema / properties / category
        Added value: +{
        +  "description": "Categoria livre da dívida (ex: 'Financiamento', 'Empréstimo pessoal')",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditor / description
        Added value: +"Nome do credor/instituição"
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "Moeda (ISO 4217). Default: BRL",
        +  "type": "string"
        +}
      • addedInput schema / properties / description
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / dueDate / description
        Added value: +"Data de vencimento (ISO)"
      • addedInput schema / properties / equityId / description
        Added value: +"Id de um Equity (investimento/ativo) do usuário financiado por esta dívida"
      • addedInput schema / properties / interestRate / description
        Added value: +"Taxa de juros mensal em % (ex: 1.5 = 1.5% a.m.), usada para projetar o saldo devedor futuro"
      • addedInput schema / properties / name / description
        Added value: +"Nome/descrição da dívida (ex: 'Financiamento do carro')"
      • addedInput schema / properties / remainingAmount / description
        Added value: +"Saldo devedor atual. Default: 0 se omitido — informe para não zerar a dívida por engano"
      • addedInput schema / properties / status
        Added value: +{
        +  "description": "Default: ACTIVE",
        +  "enum": [
        +    "ACTIVE",
        +    "PAID",
        +    "OVERDUE"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / totalAmount / description
        Added value: +"Valor total original da dívida"
    • Changedcreate_equity10 fields changed
      • addedInput schema / properties / acquisitionDate
        Added value: +{
        +  "description": "Data de aquisição (ISO). Default: agora",
        +  "type": "string"
        +}
      • addedInput schema / properties / color
        Added value: +{
        +  "description": "Cor associada ao investimento na UI (ex: hex '#RRGGBB')",
        +  "type": "string"
        +}
      • addedInput schema / properties / cost / description
        Added value: +"Custo/valor investido. Default: igual a value (sem ganho/perda registrado se omitido)"
      • addedInput schema / properties / description
        Added value: +{
        +  "description": "Descrição livre do investimento",
        +  "type": "string"
        +}
      • addedInput schema / properties / exchange / description
        Added value: +"Bolsa/exchange onde o ativo é negociado"
      • addedInput schema / properties / name / description
        Added value: +"Nome do investimento"
      • addedInput schema / properties / shares
        Added value: +{
        +  "description": "Quantidade de cotas/ações compradas, se aplicável",
        +  "type": "number"
        +}
      • addedInput schema / properties / ticker / description
        Added value: +"Código do ativo na bolsa/exchange (ex: PETR4). Convertido para maiúsculas"
      • changedInput schema / properties / type / description
        Previous value: -"Ex: STOCK, FUND, CRYPTO, REAL_ESTATE"New value: +"Tipo do ativo — ex: stocks, crypto, real-estate-house, real-estate-apt, vehicle-car, business, cash, jewelry, art. Usado para agrupar a alocação em investments_workspace"
      • addedInput schema / properties / value / description
        Added value: +"Valor de mercado atual do investimento"
    • Changedcreate_goal9 fields changed
      • addedInput schema / properties / category
        Added value: +{
        +  "description": "Categoria/tipo da meta (texto livre, ex: 'Viagem', 'Casa'). Campo obrigatório no banco — omitir grava string vazia",
        +  "type": "string"
        +}
      • addedInput schema / properties / color / description
        Added value: +"Cor de exibição (hex, ex: '#22C55E'). Campo obrigatório no banco — omitir grava string vazia"
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "Moeda (ISO 4217, ex: 'BRL'). Default: BRL",
        +  "type": "string"
        +}
      • addedInput schema / properties / currentAmount / description
        Added value: +"Valor já acumulado hoje. Default: 0"
      • addedInput schema / properties / deadline
        Added value: +{
        +  "description": "Prazo da meta (data ISO, ex: YYYY-MM-DD). Default: sem prazo (null)",
        +  "type": "string"
        +}
      • removedInput schema / properties / icon
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / name / description
        Added value: +"Nome/título da meta"
      • addedInput schema / properties / targetAmount / description
        Added value: +"Valor alvo a ser atingido"
      • removedInput schema / properties / targetDate
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcreate_recurring_transaction10 fields changed
      • addedInput schema / properties / accountId / description
        Added value: +"Conta usada para débito/crédito de cada ocorrência"
      • addedInput schema / properties / amount / description
        Added value: +"Valor de cada ocorrência gerada"
      • addedInput schema / properties / cardId / description
        Added value: +"Cartão usado para ocorrências EXPENSE — gera fatura correspondente para cada uma"
      • addedInput schema / properties / category
        Added value: +{
        +  "description": "Rótulo livre da categoria (texto, não é um categoryId/FK — RecurringTransaction não referencia a tabela Category)",
        +  "type": "string"
        +}
      • removedInput schema / properties / categoryId
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / costCenterId
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / destinationAccountId
        Added value: +{
        +  "description": "Conta de destino, se as ocorrências forem transferências",
        +  "type": "string"
        +}
      • addedInput schema / properties / endDate / description
        Added value: +"Data ISO da última ocorrência a gerar. Default: 1 ano após startDate"
      • addedInput schema / properties / nature
        Added value: +{
        +  "description": "Default: PERSONAL",
        +  "enum": [
        +    "PERSONAL",
        +    "PROFESSIONAL",
        +    "MIXED",
        +    "BUSINESS"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / startDate / description
        Added value: +"Data ISO da primeira ocorrência"
    • Changedcreate_tag2 fields changed
      • addedInput schema / properties / color / description
        Added value: +"Cor da tag (ex: hex '#RRGGBB')"
      • addedInput schema / properties / name / description
        Added value: +"Nome da tag"
    • Changedcreate_transaction17 fields changed
      • addedInput schema / properties / accountId / description
        Added value: +"Conta debitada/creditada. Obrigatório se cardId não for informado"
      • addedInput schema / properties / agentId / description
        Added value: +"Contato/agente (Agent) vinculado à transação"
      • addedInput schema / properties / amount / description
        Added value: +"Valor total da transação — se installments > 1, é o valor total, dividido igualmente entre as parcelas"
      • addedInput schema / properties / cardId / description
        Added value: +"Cartão usado (só para EXPENSE). Obrigatório se accountId não for informado"
      • addedInput schema / properties / categoryId / description
        Added value: +"Id da Category do usuário"
      • changedInput schema / properties / date / description
        Previous value: -"Data ISO ou dd/mm/yyyy"New value: +"Data ISO ou dd/mm/yyyy (normalizada automaticamente)"
      • changedInput schema / properties / destinationAccountId / description
        Previous value: -"Obrigatório para TRANSFER"New value: +"Obrigatório para TRANSFER — conta de destino"
      • addedInput schema / properties / equityId / description
        Added value: +"Investimento (Equity) a atualizar diretamente, alternativa a ticker/exchange"
      • addedInput schema / properties / exchange / description
        Added value: +"Bolsa do ativo, usado junto com ticker ao criar um novo Equity"
      • addedInput schema / properties / goalId / description
        Added value: +"Meta financeira vinculada — só tem efeito (incrementa progresso) quando type é TRANSFER"
      • changedInput schema / properties / installments / description
        Previous value: -"Número de parcelas (cartão)"New value: +"Número de parcelas (>1 gera parcelas futuras adicionais, tipicamente usado com cardId)"
      • addedInput schema / properties / isPaid / description
        Added value: +"Default: calculado a partir de date/scheduledDate (passado/hoje = true). Force false para lançar como pendente mesmo com data passada"
      • addedInput schema / properties / nature / description
        Added value: +"PERSONAL, PROFESSIONAL, MIXED ou BUSINESS. Default: PERSONAL"
      • addedInput schema / properties / paidDate / description
        Added value: +"Data ISO em que foi efetivamente paga, se diferente de date"
      • changedInput schema / properties / scheduledDate / description
        Previous value: -"Se futura, agenda sem tocar saldo"New value: +"Data ISO futura — agenda a transação como pendente sem afetar saldo/limite até ser confirmada"
      • addedInput schema / properties / shares / description
        Added value: +"Quantidade de cotas/ações da operação de investimento, se aplicável"
      • changedInput schema / properties / ticker / description
        Previous value: -"Ticker do ativo, para transação de investimento"New value: +"Ticker do ativo (ex: PETR4) — usado só quando categoryId aponta pra categoria 'INVESTMENT', pra achar/criar o Equity correspondente"
    • Changedcurrent_invoice1 field changed
      • addedInput schema / properties / cardId / description
        Added value: +"Id do cartão (Card)"
    • Changedcurrent_month_spending3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / topCategories
        Added value: +{
        +  "description": "Quantas categorias trazer em topCategories, 1-20 (default 5)",
        +  "type": "number"
        +}
      • addedInput schema / properties / userId
        Added value: +{
        +  "description": "Id do cliente a consultar (uso de planejador financeiro); omitido usa o próprio usuário autenticado",
        +  "type": "string"
        +}
    • Changeddelete_account1 field changed
      • addedInput schema / properties / id / description
        Added value: +"ID da conta a excluir"
    • Changeddelete_budget1 field changed
      • addedInput schema / properties / id / description
        Added value: +"Id do orçamento (Budget) a excluir"
    • Changeddelete_card1 field changed
      • addedInput schema / properties / id / description
        Added value: +"ID do cartão a excluir"
    • Changeddelete_category1 field changed
      • addedInput schema / properties / id / description
        Added value: +"ID da categoria a excluir"
    • Changeddelete_cost_center1 field changed
      • addedInput schema / properties / id / description
        Added value: +"ID do centro de custo a excluir"
    • Changeddelete_debt1 field changed
      • addedInput schema / properties / id / description
        Added value: +"Id da dívida (Debt) a excluir"
    • Changeddelete_equity1 field changed
      • addedInput schema / properties / id / description
        Added value: +"Id do investimento a excluir"
    • Changeddelete_goal1 field changed
      • addedInput schema / properties / id / description
        Added value: +"Id da meta (Goal) a excluir"
    • Changeddelete_recurring_transaction1 field changed
      • addedInput schema / properties / id / description
        Added value: +"ID da regra recorrente a excluir"
    • Changeddelete_transaction1 field changed
      • addedInput schema / properties / id / description
        Added value: +"ID da transação a excluir"
    • Changedget_invoice1 field changed
      • addedInput schema / properties / id / description
        Added value: +"Id da fatura (CreditCardInvoice)"
    • Changedlist_budgets2 fields changed
      • addedInput schema / properties / month / description
        Added value: +"Filtra por mês (1-12). Só faz sentido combinado com year; orçamentos com period YEARLY não têm month"
      • addedInput schema / properties / year / description
        Added value: +"Filtra por ano (ex: '2026'). Se omitido junto com month, lista todos os anos"
    • Changedlist_equity_valuations1 field changed
      • addedInput schema / properties / id / description
        Added value: +"Id do investimento (Equity), não da avaliação"
    • Changedlist_invoices3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / cardId
        Added value: +{
        +  "description": "Filtra por um cartão específico",
        +  "type": "string"
        +}
      • addedInput schema / properties / status
        Added value: +{
        +  "description": "Filtra por status exato da fatura",
        +  "enum": [
        +    "OPEN",
        +    "CLOSED",
        +    "PAID",
        +    "PARTIAL",
        +    "OVERDUE"
        +  ],
        +  "type": "string"
        +}
    • Changedlist_tags2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / userId
        Added value: +{
        +  "description": "Id do cliente a consultar (uso de planejador financeiro); omitido usa o próprio usuário autenticado",
        +  "type": "string"
        +}
    • Changedlist_transactions5 fields changed
      • addedInput schema / properties / from
        Added value: +{
        +  "description": "Data ISO — só transações com date >= from. Default: sem limite inferior",
        +  "type": "string"
        +}
      • changedInput schema / properties / limit / description
        Previous value: -"Limita a quantidade de transações retornadas (mais recentes primeiro)"New value: +"Limita a quantidade de transações retornadas (mais recentes primeiro). Default: sem limite"
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Pula os N primeiros resultados — use com limit para paginar",
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / to
        Added value: +{
        +  "description": "Data ISO — só transações com date <= to. Default: sem limite superior",
        +  "type": "string"
        +}
      • addedInput schema / properties / userId
        Added value: +{
        +  "description": "Só para planejadores (mobilePlanners): id de um cliente vinculado, para ver as transações dele em vez das próprias. Omitido = transações do próprio usuário autenticado. Retorna 403 se o usuário autenticado não for planejador desse cliente",
        +  "type": "string"
        +}
    • Changednetworth_projection4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / includePending
        Added value: +{
        +  "description": "Se true (default), considera transações pendentes; false usa só o realizado e força recálculo ao vivo",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / months
        Added value: +{
        +  "description": "Quantidade de meses a projetar, 1-12 (default 12)",
        +  "type": "number"
        +}
      • addedInput schema / properties / userId
        Added value: +{
        +  "description": "Id do cliente a consultar (uso de planejador financeiro); omitido usa o próprio usuário autenticado",
        +  "type": "string"
        +}
    • Changednext_invoice1 field changed
      • changedInput schema / properties / cardId / description
        Previous value: -"ID do cartão"New value: +"Id do cartão (Card)"
    • Changedpay_invoice3 fields changed
      • addedInput schema / properties / accountId / description
        Added value: +"Conta de onde debitar o pagamento. Se omitido, só marca a fatura como paga, sem criar transação nem mexer em saldo/limite"
      • addedInput schema / properties / amount
        Added value: +{
        +  "description": "Valor a abater do saldo da fatura. Default: valor total da fatura (paga integralmente). Envie um valor menor para pagamento parcial",
        +  "type": "number"
        +}
      • addedInput schema / properties / id / description
        Added value: +"Id da fatura (CreditCardInvoice)"
    • Changedspending_projection5 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / includePending
        Added value: +{
        +  "description": "Se true (default), considera transações pendentes; false usa só o realizado e força recálculo ao vivo",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / months
        Added value: +{
        +  "description": "Quantidade de meses a projetar, 1-12 (default 12)",
        +  "type": "number"
        +}
      • addedInput schema / properties / topCategories
        Added value: +{
        +  "description": "Quantas categorias trazer por mês em topCategories, 1-20 (default 5)",
        +  "type": "number"
        +}
      • addedInput schema / properties / userId
        Added value: +{
        +  "description": "Id do cliente a consultar (uso de planejador financeiro); omitido usa o próprio usuário autenticado",
        +  "type": "string"
        +}
    • Changedtags_insights3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / month
        Added value: +{
        +  "description": "Mês alvo, 1-12 (default mês atual)",
        +  "type": "number"
        +}
      • addedInput schema / properties / year
        Added value: +{
        +  "description": "Ano alvo (default ano atual)",
        +  "type": "number"
        +}
    • Changedupcoming_transactions1 field changed
      • addedInput schema / properties / status / description
        Added value: +"Default: pending (só transações não pagas)"
    • Changedupdate_account6 fields changed
      • addedInput schema / properties / balance / description
        Added value: +"Sobrescreve o saldo diretamente (não é uma transação — não afeta fatura de cartão nem histórico)"
      • addedInput schema / properties / balanceDate
        Added value: +{
        +  "description": "Data ISO de referência do saldo informado em `balance`",
        +  "type": "string"
        +}
      • addedInput schema / properties / color
        Added value: +{
        +  "description": "Cor hex para exibição, ex: #3B82F6",
        +  "type": "string"
        +}
      • addedInput schema / properties / currency / description
        Added value: +"Moeda ISO 4217"
      • changedInput schema / properties / id / description
        Previous value: -"ID da conta"New value: +"ID da conta a atualizar"
      • addedInput schema / properties / type / description
        Added value: +"CHECKING, SAVINGS, WALLET ou INVESTMENT"
    • Changedupdate_budget8 fields changed
      • addedInput schema / properties / category
        Added value: +{
        +  "description": "'ALL' para remover o filtro de categoria",
        +  "type": "string"
        +}
      • addedInput schema / properties / currency
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / id / description
        Added value: +"Id do orçamento (Budget) a atualizar"
      • addedInput schema / properties / month
        Added value: +{
        +  "type": "integer"
        +}
      • addedInput schema / properties / name
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / period
        Added value: +{
        +  "enum": [
        +    "MONTHLY",
        +    "YEARLY"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / type
        Added value: +{
        +  "enum": [
        +    "INCOME",
        +    "EXPENSE",
        +    "INVESTMENT"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / year
        Added value: +{
        +  "type": "integer"
        +}
    • Changedupdate_card10 fields changed
      • addedInput schema / properties / accountId / description
        Added value: +"ID da conta usada para pagar a fatura deste cartão"
      • addedInput schema / properties / brand / description
        Added value: +"Ex: VISA, MASTERCARD"
      • addedInput schema / properties / closingDay / description
        Added value: +"Dia do fechamento da fatura (1-31)"
      • addedInput schema / properties / color
        Added value: +{
        +  "description": "Cor hex para exibição",
        +  "type": "string"
        +}
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "Moeda ISO 4217",
        +  "type": "string"
        +}
      • addedInput schema / properties / dueDay / description
        Added value: +"Dia do vencimento da fatura (1-31)"
      • addedInput schema / properties / id / description
        Added value: +"ID do cartão a atualizar"
      • addedInput schema / properties / limit / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "const": "none",
        +    "type": "string"
        +  }
        +]
      • addedInput schema / properties / limit / description
        Added value: +"Novo limite total, ou o literal 'none' para remover o teto de crédito (cartão 'Sem Limite')"
      • removedInput schema / properties / limit / type
        Removed value: -"number"
    • Changedupdate_category8 fields changed
      • addedInput schema / properties / color / description
        Added value: +"Cor hex, ex: #3B82F6"
      • addedInput schema / properties / globalCategoryId
        Added value: +{
        +  "description": "ID de uma categoria do catálogo global para vincular",
        +  "type": "string"
        +}
      • addedInput schema / properties / globalSubcategoryId
        Added value: +{
        +  "description": "ID de uma subcategoria do catálogo global para vincular",
        +  "type": "string"
        +}
      • addedInput schema / properties / icon / description
        Added value: +"Nome do ícone, ex: 'shopping-cart'"
      • addedInput schema / properties / id / description
        Added value: +"ID da categoria a atualizar"
      • addedInput schema / properties / name / description
        Added value: +"Novo nome da categoria/subcategoria"
      • addedInput schema / properties / parentId / description
        Added value: +"ID de outra categoria do usuário para tornar esta uma subcategoria dela"
      • addedInput schema / properties / type / description
        Added value: +"EXPENSE ou INCOME"
    • Changedupdate_cost_center4 fields changed
      • removedInput schema / properties / color
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / description
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / icon
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / id / description
        Added value: +"ID do centro de custo a atualizar"
    • Changedupdate_debt11 fields changed
      • addedInput schema / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / creditor
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / currency
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / description
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / equityId
        Added value: +{
        +  "description": "Novo Equity vinculado; precisa pertencer ao usuário",
        +  "type": "string"
        +}
      • addedInput schema / properties / id / description
        Added value: +"Id da dívida (Debt) a atualizar"
      • addedInput schema / properties / interestRate / description
        Added value: +"Taxa de juros mensal em %"
      • addedInput schema / properties / name
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / remainingAmount / description
        Added value: +"Novo saldo devedor — use para registrar um pagamento parcial"
      • addedInput schema / properties / status
        Added value: +{
        +  "enum": [
        +    "ACTIVE",
        +    "PAID",
        +    "OVERDUE"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / totalAmount
        Added value: +{
        +  "type": "number"
        +}
    • Changedupdate_equity11 fields changed
      • addedInput schema / properties / acquisitionDate
        Added value: +{
        +  "description": "Nova data de aquisição (ISO)",
        +  "type": "string"
        +}
      • addedInput schema / properties / color
        Added value: +{
        +  "description": "Nova cor associada na UI",
        +  "type": "string"
        +}
      • addedInput schema / properties / cost / description
        Added value: +"Novo custo/valor investido — se informado, registra nova avaliação"
      • addedInput schema / properties / description
        Added value: +{
        +  "description": "Nova descrição; string vazia limpa o campo",
        +  "type": "string"
        +}
      • addedInput schema / properties / exchange
        Added value: +{
        +  "description": "Nova bolsa/exchange; string vazia remove",
        +  "type": "string"
        +}
      • addedInput schema / properties / id / description
        Added value: +"Id do investimento (Equity) a atualizar"
      • addedInput schema / properties / name / description
        Added value: +"Novo nome"
      • addedInput schema / properties / shares
        Added value: +{
        +  "description": "Nova quantidade de cotas/ações",
        +  "type": "number"
        +}
      • addedInput schema / properties / ticker / description
        Added value: +"Novo código do ativo na bolsa; string vazia remove o ticker"
      • addedInput schema / properties / type
        Added value: +{
        +  "description": "Novo tipo do ativo — ex: stocks, crypto, real-estate-house",
        +  "type": "string"
        +}
      • addedInput schema / properties / value / description
        Added value: +"Novo valor de mercado — se informado, registra nova avaliação"
    • Changedupdate_goal7 fields changed
      • addedInput schema / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / color
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / currency
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / currentAmount / description
        Added value: +"Novo valor acumulado — útil para registrar um aporte manual na meta"
      • addedInput schema / properties / deadline
        Added value: +{
        +  "description": "Novo prazo (data ISO). Envie string vazia não remove o prazo — não há como limpar deadline por esta tool",
        +  "type": "string"
        +}
      • addedInput schema / properties / id / description
        Added value: +"Id da meta (Goal) a atualizar"
      • removedInput schema / properties / targetDate
        Removed value: -{
        -  "type": "string"
        -}
    • Changedupdate_profile11 fields changed
      • addedInput schema / properties / businessCnpj
        Added value: +{
        +  "description": "CNPJ do negócio",
        +  "type": "string"
        +}
      • addedInput schema / properties / businessName
        Added value: +{
        +  "description": "Nome do negócio, quando hasBusiness = true",
        +  "type": "string"
        +}
      • addedInput schema / properties / businessWebsite
        Added value: +{
        +  "description": "Site do negócio",
        +  "type": "string"
        +}
      • addedInput schema / properties / cep
        Added value: +{
        +  "description": "CEP do usuário",
        +  "type": "string"
        +}
      • addedInput schema / properties / coverImage
        Added value: +{
        +  "description": "URL ou data URI da imagem de capa",
        +  "type": "string"
        +}
      • addedInput schema / properties / currency / description
        Added value: +"Moeda padrão do usuário (ISO 4217, ex: 'BRL')"
      • addedInput schema / properties / hasBusiness
        Added value: +{
        +  "description": "Se o usuário tem um negócio/CNPJ associado ao perfil",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / location
        Added value: +{
        +  "description": "Cidade/localização do usuário",
        +  "type": "string"
        +}
      • addedInput schema / properties / menuPreference
        Added value: +{
        +  "description": "Preferência de layout/menu do app",
        +  "type": "string"
        +}
      • addedInput schema / properties / occupation
        Added value: +{
        +  "description": "Profissão/ocupação",
        +  "type": "string"
        +}
      • addedInput schema / properties / picture
        Added value: +{
        +  "description": "URL ou data URI da foto de perfil",
        +  "type": "string"
        +}
    • Changedupdate_recurring_transaction12 fields changed
      • addedInput schema / properties / accountId
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / amount / description
        Added value: +"Novo valor — vale só para ocorrências futuras ainda não geradas, não retroage"
      • addedInput schema / properties / cardId
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / category
        Added value: +{
        +  "description": "Rótulo livre da categoria (texto)",
        +  "type": "string"
        +}
      • addedInput schema / properties / costCenterId
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / destinationAccountId
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / endDate / description
        Added value: +"Data ISO"
      • addedInput schema / properties / frequency
        Added value: +{
        +  "description": "Ex: MONTHLY, WEEKLY, YEARLY",
        +  "type": "string"
        +}
      • addedInput schema / properties / id / description
        Added value: +"ID da regra recorrente a atualizar"
      • addedInput schema / properties / isActive / description
        Added value: +"false pausa a regra (sem gerar novas ocorrências), sem excluir as já geradas"
      • addedInput schema / properties / startDate
        Added value: +{
        +  "description": "Data ISO",
        +  "type": "string"
        +}
      • addedInput schema / properties / type
        Added value: +{
        +  "enum": [
        +    "EXPENSE",
        +    "INCOME"
        +  ],
        +  "type": "string"
        +}
    • Changedupdate_transaction10 fields changed
      • addedInput schema / properties / agentId
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / category
        Added value: +{
        +  "description": "Rótulo texto livre da categoria (independente de categoryId)",
        +  "type": "string"
        +}
      • addedInput schema / properties / categoryId / description
        Added value: +"Id da Category do usuário"
      • addedInput schema / properties / costCenterId
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / date / description
        Added value: +"Data ISO ou dd/mm/yyyy"
      • addedInput schema / properties / destinationAccountId
        Added value: +{
        +  "description": "Conta de destino, se type for TRANSFER",
        +  "type": "string"
        +}
      • addedInput schema / properties / id / description
        Added value: +"ID da transação a atualizar"
      • addedInput schema / properties / nature
        Added value: +{
        +  "description": "PERSONAL, PROFESSIONAL, MIXED ou BUSINESS",
        +  "type": "string"
        +}
      • addedInput schema / properties / scheduledDate
        Added value: +{
        +  "description": "Data ISO — reagenda a transação",
        +  "type": "string"
        +}
      • addedInput schema / properties / type / description
        Added value: +"EXPENSE, INCOME, TRANSFER ou INVOICE_PAYMENT"
  4. 81 tool updates
    • First observedactive_installments
    • First observedadd_equity_valuation
    • First observedanalytics_history
    • First observedbehavior_insights
    • First observedbest_card_day
    • First observedbill_anomalies
    • First observedbill_concentration
    • First observedbudget_comparison
    • First observedcan_afford
    • First observedcashflow_forecast
    • First observedcategories_insights
    • First observedcategory_history
    • First observedconfirm_new_transaction
    • First observedconfirm_pending_transaction
    • First observedcreate_account
    • First observedcreate_budget
    • First observedcreate_card
    • First observedcreate_category
    • First observedcreate_cost_center
    • First observedcreate_debt
    • First observedcreate_equity
    • First observedcreate_goal
    • First observedcreate_recurring_transaction
    • First observedcreate_tag
    • First observedcreate_transaction
    • First observedcurrent_invoice
    • First observedcurrent_month_spending
    • First observeddebt_payoff_plan
    • First observeddelete_account
    • First observeddelete_budget
    • First observeddelete_card
    • First observeddelete_category
    • First observeddelete_cost_center
    • First observeddelete_debt
    • First observeddelete_equity
    • First observeddelete_goal
    • First observeddelete_recurring_transaction
    • First observeddelete_transaction
    • First observedfinancial_snapshot
    • First observedget_invoice
    • First observedget_profile
    • First observedgoal_projections
    • First observedinsights_highlight
    • First observedinvestments_workspace
    • First observedinvoice_allocation_preview
    • First observedinvoice_orphan_count
    • First observedlist_accounts
    • First observedlist_budgets
    • First observedlist_cards
    • First observedlist_categories
    • First observedlist_cost_centers
    • First observedlist_debts
    • First observedlist_equities
    • First observedlist_equity_valuations
    • First observedlist_goals
    • First observedlist_invoices
    • First observedlist_pending_invoices
    • First observedlist_recurring_transactions
    • First observedlist_tags
    • First observedlist_transactions
    • First observednetworth_projection
    • First observednext_invoice
    • First observedpay_invoice
    • First observedspending_projection
    • First observedsubscriptions_overview
    • First observedtags_insights
    • First observedtransport_routine
    • First observedupcoming_transactions
    • First observedupdate_account
    • First observedupdate_budget
    • First observedupdate_card
    • First observedupdate_category
    • First observedupdate_cost_center
    • First observedupdate_debt
    • First observedupdate_equity
    • First observedupdate_goal
    • First observedupdate_profile
    • First observedupdate_recurring_transaction
    • First observedupdate_transaction
    • First observedvalidate_current_invoices
    • First observedwealth_evolution

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Conecta sua conta Dock a agentes de IA via Open Finance Brasil para consultar saldos, extratos, faturas de cartão e investimentos em linguagem natural, com segurança e apenas leitura.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables natural language queries to read balances, statements, credit card bills, investments, and loans from Next bank accounts via Open Finance Brasil. All read-only, no money movement.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Conecta sua conta do Sicoob ao Claude, ChatGPT e agentes de IA via Open Finance Brasil, permitindo consultar saldos, extratos, faturas de cartão e investimentos em linguagem natural.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to interact with Actual Budget for personal finance management through natural language, supporting transactions, account balances, budget tracking, spending analysis, and payment searches.
    444
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A3.7/5.0
Disambiguation3/5

The tools are individually well-described and many cross-reference their closest neighbors, but the set contains several easily confused clusters: create_transaction/confirm_new_transaction, update_equity/add_equity_valuation, the invoice tools (current_invoice, next_invoice, list_pending_invoices, get_invoice), and the many analytics/projection tools. The descriptions help a careful reader, but with 81 tools an agent is likely to misselect among these overlapping surfaces.

Naming Consistency3/5

CRUD operations consistently use create_/list_/update_/delete_ plus a resource noun, and all names are snake_case. However, there is a large second group of noun-phrase analytics tools (cashflow_forecast, spending_projection, categories_insights, transport_routine) plus one-off verbs such as can_afford, pay_invoice, and validate_current_invoices, so the naming convention is mixed even though it remains readable.

Tool Count1/5

81 tools is far beyond the practical MCP tool surface and exceeds the rubric's 50+ extreme-mismatch threshold. Even if each tool maps to a real finance endpoint, the volume overwhelms an agent's context window and makes selection much harder.

Completeness4/5

The server covers the finance lifecycle extensively: accounts, cards, invoices, transactions, recurring rules, budgets, goals, debts, equities, categories, tags, cost centers, profile, projections, and insights all have working read/write paths. Minor gaps remain, such as no update/delete for tags and no direct update/delete for system-generated invoices, but agents can usually work around these.