Skip to main content
Glama

tercet

The book of record for machine payments. Every agent purchase is recorded as it happens (request → quote → signed authorization), matched against on-chain settlement, and every difference gets a name — delivered-but-uncollected, paid-without-delivery, replay, chain-orphan. tercet never touches keys, balances or the payment path: it observes and produces evidence.

A tercet is a stanza of three lines that belong together — here, every purchase is one: the request, the authorization, the settlement. Dante chained his tercets so none could be pulled out without breaking the poem; this ledger chains its entries the same way.

The Python package is still named mesa (working name); it renames to tercet with the first PyPI release. Project docs under docs/ are written in Portuguese — they are the build diary and per-phase design docs; code, schemas and this README are English.

The app — the ledger, live, in six screens

uv run mesa-app        # -> http://127.0.0.1:8400

01 blotter (what your agents bought, with derived state and the event chain of each purchase) · 02 tca (waste, dedup across agents, cost per delivered result) · 03 risk (budget per task tree, human approvals, the payer passport) · 04 lab (point-in-time spend-policy backtest with honest confidence intervals) · 05 books (three-way reconciliation, sealed periods with two third-party timestamps, per-counterparty statement, BR tax view) · 06 operations (run the audited engines from the screen — demo, collectors, exports — testnet only).

The app is read-only by construction: its Postgres session opens with default_transaction_read_only=on, so it cannot write to the ledger even if it wanted to — and tests/test_app.py proves it. Real data always; testnet and synthetic rows are labeled on the screen itself. Press any pill for its legend.

Related MCP server: swarm-at

The MCP server — the ledger as tools for agents

claude mcp add tercet -- uv run mesa-mcp    # then ask: "how much did my agents spend?"

Seven READ tools (closed list, proven by test): status_do_livro, gasto, compras (filterable), compra (one purchase + its event chain), vereditos, passaportes, fiscal. Same guarantee as the app: the session is structurally read-only — the MCP server has no write path; tests/test_mcp_livro.py proves it. Transport: stdio, local.

The exports — universal accounting + OECD CARF view

uv run python scripts/fase13/contabil_build.py   # -> contabil/<yyyy-mm>/  (universal CSV, QuickBooks, Xero + per-tx audit detail)
uv run python scripts/fase13/carf_build.py       # -> fiscal/carf/<year>/  (OECD CARF view, born as OECD11 test data)

A double-entry journal per period (debits == credits proven; micro-payments aggregated honestly, with a 6-decimal audit bridge tying every cent to a tx hash), and the CARF view — what a reporting crypto-asset service provider would report about these transactions under the OECD framework (official July 2025 guide) — labeled as a demo, synthetic identities, real numbers. Details and caveats: docs/fase13-export.md.

From zero, with only this README

Prerequisites: uv, Docker, Python 3.11+.

# 1. dependencies + database (Postgres 17 on 127.0.0.1:5433 — your machine only)
uv sync
docker run -d --name mesa-pg -e POSTGRES_USER=mesa -e POSTGRES_PASSWORD=mesa `
  -e POSTGRES_DB=mesa -p 127.0.0.1:5433:5432 `
  -v mesa-pgdata:/var/lib/postgresql/data postgres:17
uv run python scripts/check_db.py            # migrations + hash-chain genesis, idempotent

# 2. TEST wallets (written to a local .env; never committed) + faucet USDC
uv run python scripts/setup_wallets.py
#    -> paste the buyer address into https://faucet.circle.com (USDC / Base Sepolia)
uv run python scripts/check_balance.py       # balance read on-chain

# 3. a toy seller + 10 REAL x402 payments on testnet
uv run uvicorn mesa.http.seller:app --port 8402     # terminal 1
uv run python scripts/fase1/buyer.py 10             # terminal 2 (writes the ledger)

# 4. the chain is the source of truth: collect and reconcile
uv run python -m mesa.collector              # matches (authorizer, nonce) with the ledger
uv run python -m mesa.cli                    # the verdict table, orphans in red

# 5. the product
uv run mesa-app                              # -> http://127.0.0.1:8400

Costs zero real money: faucet USDC, and under the exact scheme the facilitator pays gas.

  • What happened, what it proved, what comes next: docs/DIARIO.md (Portuguese) — the per-task build diary; per-phase design docs live in docs/faseN.md.

  • Secrets (the private keys setup_wallets.py generates) go to a local .env (gitignored, never committed). To keep them elsewhere, point MESA_ENV_FILE at the file — and keep it out of synced folders (OneDrive/Dropbox): a key in a synced folder is a key in the cloud.

Repo map

Path

What it is

src/mesa/config.py

Constants (USDC, network, chain id) + Settings read from .env

src/mesa/db.py

Ledger access — insert-only by construction

src/mesa/reconcile.py

The heart: three-way reconciliation, pure function

src/mesa/collector.py

On-chain collector: Transfer + AuthorizationUsed per txHash; idempotent, persisted cursor

src/mesa/cli.py

uv run python -m mesa.cli — the verdict table, orphans in red

src/mesa/http/

HTTP rail: toy seller (with chaos modes) + instrumented buyer

src/mesa/mcp/

MCP: paid-tool rail (seller/buyer) + livro.py, the read-only product MCP server

src/mesa/app/

The web app (FastAPI + Jinja2, server-rendered, read-only session)

src/mesa/passaporte.py

The payer passport: portable, self-signed settlement history

src/mesa/contabil.py / carf.py / decripto.py

The export renderers (accounting / OECD CARF / Brazil)

migrations/

Numbered plain SQL — schema agnostic to rail and transport

scripts/

Environment utilities + faseN/ — the executable proofs of each phase

tests/

The gates as pytest: dirty data in → expected classification out

docs/

Build diary + per-phase design docs (Portuguese)

verificador/

Standalone verifiers — check the ledger and passports without trusting this repo

Environment

uv sync
docker run -d --name mesa-pg -e POSTGRES_USER=mesa -e POSTGRES_PASSWORD=mesa `
  -e POSTGRES_DB=mesa -p 127.0.0.1:5433:5432 `
  -v mesa-pgdata:/var/lib/postgresql/data postgres:17
# 127.0.0.1 is mandatory: without it the ledger is open to any machine on the same
# Wi-Fi (docs/seguranca.md, hole #1). scripts/saude.py checks this, always.
uv run python scripts/setup_wallets.py   # generates the EOAs -> .env (NEVER committed)
uv run python scripts/check_db.py        # Postgres up + migrations + genesis
uv run python scripts/check_balance.py   # USDC balance read on-chain
uv run python scripts/saude.py           # ONE command: ruff+mypy+pytest+verifier+ports+secret scan
uv run python scripts/backup_db.py       # ledger dump -> backups/ (routine, ~5s)

Faucet: https://faucet.circle.com → USDC → Base Sepolia (20 USDC / 2h per address). Anthropic key (only for the invoice-rail agent demo): ANTHROPIC_API_KEY=... in your secrets env file.

Run the proofs of each phase

# Phase 1 — the ledger closes on dirty data
uv run uvicorn mesa.http.seller:app --port 8402     # terminal 1: HTTP seller
uv run python scripts/fase1/chaos_run.py            # terminal 2: chaos + reconciliation + asserts

# Phase 2 — x402 over MCP
uv run python -m mesa.mcp.seller                    # terminal 1: MCP seller (port 8403)
uv run python scripts/fase2/mcp_once.py             # terminal 2: 1 paid tool call + ledger

# Phase 10 — the payer passport (emits, verifies, gates a seller)
uv run python scripts/fase10/gate10_demo.py

# Any time: sweep the chain and reconcile
uv run python -m mesa.collector                      # testnet (seller payTo)
uv run python -m mesa.collector --pagador            # mainnet (payer-side)
uv run python -m mesa.cli

Quality ("done" has a definition)

uv run python scripts/saude.py    # ONE command: ruff+mypy+pytest+verifier+ports+secret scan

Threat model, and what is out of scope — by name: docs/seguranca.md.

Available Tools

7 tools
compraB

Uma compra específica (por rid, vindo de 'compras') com a cadeia de eventos dela — a gaveta do blotter.

ParametersJSON Schema
NameRequiredDescriptionDefault
ridYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavior. It mentions the event chain, which indicates what the tool returns, but it does not explicitly state that the operation is read-only or disclose any side effects, permissions, or limitations. The lack of explicit safety or mutation info leaves the agent uncertain.

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

Conciseness4/5

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

The description is a single, efficient sentence that front-loads the core purpose. The phrase 'gaveta do blotter' is jargon that may confuse some agents, but it does not detract from overall brevity and structure.

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

Completeness3/5

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

The tool has an output schema, so return value details are not required. The description mentions the event chain, which is a key part of the output. However, given the absence of annotations, it should more clearly indicate that this is a read-only operation or mention any prerequisites. It is adequate but leaves room for improvement.

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

Parameters3/5

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

The schema provides no description for the 'rid' parameter (0% coverage). The description adds context by specifying that the rid comes from 'compras', which helps the agent understand its origin and format expectation. This provides minimal but useful semantic guidance 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 clearly identifies the tool as retrieving a specific purchase by rid and includes its event chain. It distinguishes itself from sibling 'compras' (which likely lists purchases) by focusing on a single purchase with detailed context. The verb is implied but the resource and scope are explicit.

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 mentions 'vindo de compras' implying that the rid comes from the compras tool, giving context on when to use this tool. However, it does not explicitly state when not to use it or name alternatives beyond the implicit source. The guidance is implied rather than directly comparative.

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

comprasC

As compras do livro, mais recentes primeiro, com filtros: estado (um de liquidado, pago-sem-entrega, entregue-sem-cobrar, cobranca-pendente, expirou-sem-uso, autorizado-pendente, sem-pagamento, fatura-conciliada, fatura-pendente, ingerido), rede (CAIP-2), trilho (x402/invoice/mpp/ap2), agente, contem (texto no domínio) e limite (1-100, padrão 20).

ParametersJSON Schema
NameRequiredDescriptionDefault
redeNo
agenteNo
contemNo
estadoNo
limiteNo
trilhoNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of disclosure. It mentions ordering (most recent first) and the default limit, but does not state whether the operation is read-only, if there are side effects, or any authentication/rate-limit requirements. The tool appears to be a query operation, but that is not explicitly stated.

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

Conciseness4/5

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

The description is a single sentence that packs the core action, ordering, and all filter options, front-loading the main purpose. It is dense but not verbose, though the long list of estado values could be clearer with delimiters or bullet formatting.

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

Completeness3/5

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

Given 6 parameters, no schema descriptions, and no annotations, the description covers the essential filter names and some allowed values, plus ordering and default. It does not explain the meaning of 'agente' and 'contem' in detail, nor explicitly confirm read-only behavior, but the existing output schema mitigates return-format gaps. Overall adequate but with notable omissions.

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

Parameters3/5

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

The schema has 0% description coverage, so the description must compensate. It provides explicit allowed values for 'estado', examples for 'rede' (CAIP-2) and 'trilho' (x402/invoice/mpp/ap2), and a range/default for 'limite'. However, 'agente' and 'contem' are only named, with no added semantics beyond their titles, leaving gaps.

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

Purpose4/5

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

The description clearly states it retrieves book purchases, most recent first, and enumerates the available filters. It is specific about the resource (book purchases) and the operation (listing), but it does not explicitly contrast with sibling tools like 'compra' (singular) or 'gasto', leaving some ambiguity about when this tool is the right choice.

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 usage guidance is provided. The description lists filters but does not state when to use this tool versus alternatives, nor any exclusions or conditions. An agent would have to infer usage from the filter names alone.

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

fiscalB

A competência fiscal BR (DeCripto, F11): nº de saídas mainnet, total em R$ pela PTAX persistida e o veredito do limiar de obrigação PF. Sem ano/mes usa a competência atual (data de SP).

ParametersJSON Schema
NameRequiredDescriptionDefault
anoNo
mesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries full behavioral burden. It discloses the default period logic and lists outputs, which is useful. However, it does not state whether the operation is read-only, whether it requires special permissions, or any errors/limits.

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

Conciseness4/5

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

A single dense sentence packs the purpose, outputs, and default behavior. It is front-loaded and efficient, wasting no words.

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

Completeness3/5

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

For a tool with two optional parameters, the description covers the essential behavior. It does not reference the output schema or mention edge cases, but given the simple interface it is adequate. Slightly more context on what 'veredito' means or typical use cases would help.

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 provides only names and nullability, with zero description. The description compensates by explaining the meaning of ano/mes and the default handling when omitted. This adds valuable meaning beyond the schema.

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

Purpose4/5

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

The description clearly identifies the resource (fiscal competence data) and specifies the outputs (mainnet exits, R$ total via PTAX, and PF obligation threshold verdict). It is distinct from siblings like 'gasto' or 'compras', though it lacks an explicit verb like 'get'.

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 only usage guidance is that omitting year/month defaults to the current period. No mention of when to use this tool versus siblings, no scenarios, no exclusions. The agent is left to infer when this is the appropriate choice.

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

gastoB

Resumo do gasto no livro inteiro: real (mainnet) vs testnet vs invoice, por trilho, por agente, por dia, e o desperdício (mesmo recurso, mesmo byte, comprado de novo).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. It implies a read-only summary operation and enumerates the aggregation dimensions, but it doesn't disclose pagination, whether the data is real-time or cached, or any limitations. The presence of an output schema covers return shape, so the gap is moderate.

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

Conciseness4/5

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

A single sentence that front-loads the core purpose (summary of spend in the whole book) and then lists the breakdown dimensions. It is compact and efficient, though the grouped list of dimensions is slightly dense and could benefit from clearer separation.

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?

An output schema is present, covering return values, so the description doesn't need to explain them. The dimensions of the summary are enumerated, making it adequate for a read-only aggregation tool. The main omission is behavioral context (caching, freshness) but that's minor given the 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 zero parameters, the schema trivially covers 100%, so there is nothing for the description to add about parameter semantics. The baseline of 4 for a zero-parameter tool applies, and the description's focus on what the summary contains is appropriate for a no-input query.

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 purpose: summarizing spend across the whole book, broken down by mainnet/testnet/invoice, rail, agent, and day. This clear resource (the whole book) and scope distinguish it from siblings like compras (purchases) and fiscal (taxes), though it doesn't explicitly contrast itself with them.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as compras, compra, or fiscal. There is neither an explicit when-to-use nor a mention of when not to use it, leaving an agent to infer the appropriate context from the tool name and description alone.

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

passaportesB

Os passaportes de pagador (F10) emitidos neste checkout, RE-VERIFICADOS offline nesta chamada: íntegro?, aceito pela política?, motivos nomeados, métricas assinadas.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It does reveal that the operation is a re-verification performed offline and lists what is checked, implying a read-only action. However, it does not explicitly state that it has no side effects, nor does it mention permissions, error conditions, or what happens if verification fails.

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

Conciseness4/5

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

The description is a single sentence, efficiently conveying the action and the checks. It is not overly verbose or redundant. The structure is acceptable, though the colon-separated list could be slightly clearer, but it remains appropriately sized.

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

Completeness4/5

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

Given the tool has no parameters and an output schema exists, the description covers the essential 'what' and 'how' reasonably well. It explains the purpose and the dimensions checked. However, it lacks any indication of when to invoke it relative to other tools and does not mention any prerequisites, so it is not fully complete.

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

Parameters4/5

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

The tool has zero parameters, and the schema is empty with 100% coverage. Baseline for 0 params is 4. The description adds relevant contextual detail about what the call verifies and outputs, which complements the absence of parameters without needing to explain any.

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

Purpose4/5

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

The description states a specific action ('RE-VERIFICADOS offline') on a specific resource ('passaportes de pagador (F10)') and lists the checks performed (integrity, policy acceptance, reasons, metrics). It is clear enough to understand the tool's core function, but it does not explicitly distinguish it from sibling tools like 'fiscal' or 'vereditos' that might also perform verification.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description does not mention any prerequisites, conditions, or exclusions. An agent would have no basis to choose this over a sibling beyond the name and vague purpose.

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

status_do_livroA

Até onde o livro está atualizado: cursores do coletor (bloco por rede) e a corrente de hash (seq/elos). Chame antes de confiar em qualquer número — o livro nunca finge tempo real.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

The description discloses a key behavioral trait: 'o livro nunca finge tempo real', informing the agent data may not be live. It also implies read-only by instructing to call before trusting numbers, but does not explicitly state it is side-effect-free. With annotations absent, this added context raises transparency, though it could be more explicit about non-mutation.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core 'what it reports', then a usage directive. No wasted words, efficient and structured. The dash provides a natural pause, and every clause carries necessary information.

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

Completeness4/5

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

Given the tool has no parameters and an output schema (which likely details the return structure), the description covers the essentials: what it does, when to call it, and a important limitation. It could mention that it is read-only, but that is implied by the status-check nature. Overall, it is nearly complete for a simple status 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?

There are zero parameters, so the schema fully covers them. The baseline of 4 applies. The description adds value by explaining what the tool returns (cursors, hash chain), which indirectly clarifies the tool's purpose, though it says nothing about parameters since none 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 clearly states the tool reports data freshness: 'cursores do coletor (bloco por rede) e a corrente de hash (seq/elos)'. This is distinct from sibling tools (gasto, compras, etc.) which likely return business data, not status. The verb 'status' and resource 'livro' are specific, and the purpose is unambiguous.

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

Usage Guidelines4/5

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

It explicitly says 'Chame antes de confiar em qualquer número', giving a clear when-to-use. However, it does not mention when not to use it or compare it to alternatives. Since siblings are data-focused, the context implies this is a prefix check, but no explicit exclusions or alternatives are stated.

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

vereditosC

A reconciliação de três pontas (pedido × autorização × chain) feita AGORA: contagem por veredito nomeado, com a explicação de cada um. Uma diferença nunca é um gap silencioso.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose that differences are never silent ('Uma diferença nunca é um gap silencioso') and that each verdict is explained, which is useful. However, it does not state whether this is a read-only operation, what data it reads, or any side effects. The behavioral transparency is partial, so a 2 is appropriate.

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

Conciseness4/5

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

The description is a single, front-loaded sentence that leads with the core purpose. It is concise and contains no redundant filler. The poetic phrasing 'Uma diferença nunca é um gap silencioso' adds a unique behavioral note without lengthening much. It's well-structured for a one-sentence definition.

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

Completeness3/5

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

Given that the tool has no parameters and an output schema exists, the description reasonably explains what the tool does and the nature of its output (counts and explanations). However, it lacks explicit context about when to invoke it in a workflow and how it relates to the sibling tools. For a zero-param tool, it's adequate but not complete – an agent might not know if this is the right tool for a given task.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4 per the rubric. There is no parameter information to add, and the description doesn't need to compensate for schema gaps. The input schema is empty, so the description naturally covers all parameter aspects. No deductions are necessary.

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

Purpose4/5

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

The description clearly states a specific action – three-way reconciliation (pedido × autorização × chain) with a count by named verdict and explanation of each. This is more specific than a generic 'verdicts' name. However, it does not explicitly differentiate from sibling tools like status_do_livro or fiscal, so it's clear but not fully distinguished.

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

Usage Guidelines1/5

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

There is no guidance on when to use this tool versus alternatives. No mention of exclusions, prerequisites, or context in which this reconciliation should be performed. The phrase 'feita AGORA' suggests immediacy but not a specific usage condition. The description completely lacks usage direction.

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. 7 tool updatesv0.0.1
    • First observedcompra
    • First observedcompras
    • First observedfiscal
    • First observedgasto
    • First observedpassaportes
    • First observedstatus_do_livro
    • First observedvereditos

TDQS

A3.7/5.0
Disambiguation5/5

Each tool targets a distinct aspect of the financial domain: status check, spending summary, purchase listing, purchase detail, reconciliation verdicts, payer verification, and tax calculation. No two tools have overlapping purposes, and even the singular/plural pair (compra/compras) is clearly differentiated.

Naming Consistency4/5

All tool names are lowercase Portuguese nouns (e.g., gasto, compras, vereditos). The only deviation is status_do_livro, which uses underscores and is more descriptive. While the pattern is consistent in being noun-based, the mixed style (underscore vs. single-word) is a minor inconsistency.

Tool Count5/5

With 7 tools, the server is well-scoped for a financial reporting and reconciliation service. Each tool covers a necessary function without being overly granular or bloaty, fitting comfortably in the optimal 3-15 tool range.

Completeness5/5

The tool set covers the full read-only lifecycle for the domain: status checking, spending summaries, purchase listing and detail retrieval, three-way reconciliation, passport verification, and tax computation. There are no obvious gaps for the server's apparent purpose of audit and analysis.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables agents to search and inspect live service offerings, generate x402 payment snippets, and understand blockchain-only balance policies.
    4
    80
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables agent settlement, trust verification, and ledger operations for multi-agent workflows, with tools for blueprint management, credit tracking, and provenance recording.
    1
    MIT
  • F
    license
    A
    quality
    B
    maintenance
    Exposes a ledger system (invoice queue, duplicate control, VAT register, contractor history, decision journal) as MCP tools for AI agents, enabling accurate invoice processing with deterministic validation.
    7
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/BenyFridY/tercet'

If you have feedback or need assistance with the MCP directory API, please join our Discord server