mesa-mcp
tercet
Книга учёта машинных платежей. Каждая покупка агента фиксируется в момент совершения (запрос → котировка → подписанная авторизация), сверяется с ончейн-расчётом, и каждое расхождение получает имя — «поставлено-без-оплаты», «оплачено-без-поставки», «повтор», «сирота-цепи». tercet никогда не прикасается к ключам, остаткам и платёжному пути: он наблюдает и создаёт доказательства.
Терцет — это строфа из трёх строк, которые принадлежат друг другу; здесь каждая покупка — это один такой терцет: запрос, авторизация, расчёт. Данте связывал свои терцеты так, что ни одной нельзя было вынуть, не разрывая поэму; эта книга учёта связывает свои записи так же.
Python-пакет пока называется mesa (рабочее название); с первым релизом на PyPI он будет
переименован в tercet. Документация проекта в docs/ написана на португальском языке —
это дневник разработки и дизайн-документы по фазам; код, схемы и этот README — на английском.
Приложение — книга учёта в реальном времени, шесть экранов
uv run mesa-app # -> http://127.0.0.1:840001 реестр (что покупали ваши агенты: порождённое состояние и цепочка событий каждой покупки) · 02 tca (потери, дедупликация между агентами, стоимость одного доставленного результата) · 03 риск (бюджет на каждое дерево задач, ручные согласования, паспорт плательщика) · 04 лаборатория (бэктест политик расходов на определённый момент с честными доверительными интервалами) · 05 книги (трёхсторонняя сверка, закрытые периоды с двумя сторонними метками времени, выписка по каждому контрагенту, налоговое представление для Бразилии) · 06 операции (запуск проверяемых движков с экрана — демо, сборщики, экспорты — только testnet).
Приложение read-only по построению: его сессия Postgres открывается с
default_transaction_read_only=on, так что записать в книгу учёта оно не может, даже
если бы захотело, — и tests/test_app.py это доказывает. Данные всегда реальные;
testnet и синтетические строки помечены прямо на экране. Нажмите на любой бейдж,
чтобы увидеть его легенду.
Related MCP server: ACA PoC MCP Tools Server
MCP-сервер — книга учёта как инструменты для агентов
claude mcp add tercet -- uv run mesa-mcp # then ask: "how much did my agents spend?"Семь read-инструментов (закрытый список, подтверждённый тестами): status_do_livro, spese,
compras (фильтруется), compra (одна покупка + её цепочка событий), vereditos,
passaportes, fiscal. Та же гарантия, что и в приложении: сессия структурно
read-only — у MCP-сервера нет пути записи; tests/test_mcp_livro.py это доказывает.
Транспорт: stdio, локальный.
Экспорты — универсальная бухгалтерия + представление OECD CARF
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)Журнал двойной записи за каждый период (доказано: дебет == кредит; честная агрегация
микроплатежей с шестиозрядным аудиторским мостом, привязывающим каждый цент к tx-хешу),
а также представление CARF — то, что учреждение обязано было бы сообщать о этих сделках
по структуре OECD (официальное руководство от июля 2025 года), — размечено как демо,
с синтетическими лицами, реальными числами. Подробности и оговорки: docs/fase13-export.md.
С нуля, только с этим README
Предварительные требования: 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Затраты — ноль реальных денег: USDC с крана, а по схеме exact газ оплачивает
фасилитатор.
Что произошло, что это доказовало и чего ждать дальше: docs/DIARIO.md (поортугальски) — построечный дневник; дизайн-файменты по фазам — в
docs/фазеN.md? Wait, need preservedocs/faseN.mdverbatim. So "дизайн-документы по фазам находятся вdocs/faseN.md".Секреты (приватные ключи, созданные
setup_wallets.py) хранятся в локальном.env(в.gitignore, никогда никаких коммитов). Если нужно хранить их в другом месте, укажитеMESA_ENV_FILEна нужный файл — и держите его вне синхронизируемых папок (OneDrive/Dropbox): ключ в автозагрузке — это ключ в облаке.
Карта репозитория
Путь | Что это |
| Константы (USDC, сеть, id цепи) + |
| Доступ к книге учёта — только вставка по построению |
| Сердце: трёхсторонняя сверка, чистая функция |
| Ончер-сборщик: |
|
|
| HTTP-рельс: игрушечный продавец (с режимами хаоса) + инструментированного покупателя |
| MCP: рельса оплачиваемых инструментов (продавец/покупатель) + |
| Веб-приложение (FastAPI + Jinja2, серверный рендеринг, read-only сессия) |
| Паспорт плательщика: переносимая, самописная история расчётов |
| Рендерери экспорта (бухгалтерия / OECD CARF / Бразилия) |
| Нумерованные простые SQL — схема не зависит от рельс и транспорта |
| Утиплиты окружения + |
| Тесты как ворота: грязные данные на входе → ожидаемая классификация на выходе |
| Дневник разработки + дизайн-документы по фазам (португальский) |
| Автономные проверяющие — сверяют книгу и паспорта, не доверяя этому репозиторио |
Окружение
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)Кран: https://faucet.circle.com → USDC → Base Sepolia (20 USDC / 2 часа на адрес).
Ключ Anthropic (только для демо агента на рёльсе счетом): ANTHROPIC_API_KEY=... в вашем
файле с секретами.
Запустить подтверждение каждой фазы
# 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Качество («готово» имеет определение)
uv run python scripts/saude.py # ONE command: ruff+mypy+pytest+verifier+ports+secret scanМодель угроз и явно исключённые из сферы действия, поименованные отдельно: docs/seguranca.md.
Available Tools
7 toolscompraB
Uma compra específica (por rid, vindo de 'compras') com a cadeia de eventos dela — a gaveta do blotter.
| Name | Required | Description | Default |
|---|---|---|---|
| rid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| rede | No | ||
| agente | No | ||
| contem | No | ||
| estado | No | ||
| limite | No | ||
| trilho | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| ano | No | ||
| mes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
7 tool updates
v0.0.1- First observed
compra - First observed
compras - First observed
fiscal - First observed
gasto - First observed
passaportes - First observed
status_do_livro - First observed
vereditos
TDQS
Scored across 7 tools
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.
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.
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.
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
Related MCP Connectors
Read-only gateway for durable agent identity, consent, recognized work, and signed receipts.
Read-only discovery for exact-commit Agent Skill validation, x402 payment, and signed receipts.
Read-only public financial evidence from LiquiLens, Undertow, Seiche and Palimpsest.
Machine-payable deterministic identifier checks + signed XDR-1 receipts for agents.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables agents to perform financial operations including categorization, reconciliation, and reporting on a tamper-evident, self-hosted ledger.AGPL 3.0
- AlicenseNot gradedqualityCmaintenanceProvides financial audit reporting and ledger query tools for AI agents, enabling generation of compliance, risk, and transaction reports and querying of transaction data, balances, and summaries from an in-memory SQLite database via MCP.MIT
- FlicenseNot gradedqualityCmaintenanceProvides a stateless Agent Chat Protocol bridge that lets agents inspect proposed payments against policy, retrieve public signed receipts, and verify their cryptographic proofs without wallet or payment capabilities.-
- AlicenseNot gradedqualityAmaintenanceEnables read-only, keyless queries of timestamped, definition-backed data about AI agent payments and activity on Base, including rankings, agent records, detections, metric histories, and evidence-pack pricing, from MCP clients or the terminal.6Apache 2.0