Skip to main content
Glama

Pagar fatura

pay_invoice

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).

Input Schema

TableJSON 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

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

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed3 schema 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)"
  2. First observed

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.

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.