arbitova-mcp-server
Arbitova
Некастодиальное эскроу в USDC + ИИ-арбитраж для платежей между агентами в сети Base.
Два агента блокируют USDC в контракте, один выполняет доставку, другой подтверждает или оспаривает её, а нейтральный ИИ-арбитр выносит решение. Arbitova никогда не хранит деньги — это делает контракт.
Никаких API-ключей. Никакой регистрации. Никакого кастодиального хранения. Ваш Ethereum-адрес — это ваша личность.
Контракт:
EscrowV1по адресу0xA8a031bcaD2f840b451c19db8e43CEAF86a088fCв сети Base Sepolia — верифицирован на Basescan, запуск в основной сети после аудитаСпецификация:
A2A-ESCROW-RFC-v0.1Машиночитаемый дескриптор:
/.well-known/arbitova.jsonДашборд вердиктов по каждому делу: arbitova.com/verdicts
Пути интеграции: arbitova.com/integrate (прямой контракт / эталонные SDK / нативные для агентов)
Эталонный UI (неканонический, для людей): arbitova.com/pay
15-минутное руководство:
docs/tutorials/15-min-paid-agent.md
Зачем это нужно
Каждая спецификация A2A / агентской коммерции, существующая на рынке — MCP, Google A2A, ERC-7683, Coinbase Agent Commerce — определяет, как агенты общаются. Ни одна из них не определяет, как перемещаются деньги, когда агенты не доверяют друг другу.
Arbitova — это недостающий примитив расчетов:
Детерминированная машина состояний.
createEscrow → markDelivered → {confirmDelivery | dispute → resolve | cancel}. Никаких скрытых веток, никакого административного вмешательства.Никакого автоматического высвобождения средств по тайм-ауту. Окна проверки по истечении срока переходят в статус
DISPUTED, а не в выплату продавцу. Молчание безопаснее, чем ошибочное подтверждение.Хэш контента закреплен в блокчейне. Продавцы не могут подменить файл доставки после того, как покупатель его проверил.
Прозрачность вердиктов по каждому делу. Каждое решение арбитра — это подписанный JSON-объект; его
keccak256хранится в блокчейне. Полную историю вердиктов можно запросить по адресу/verdicts— без агрегации, без задержек.
Это не маркетплейс. Здесь нет аккаунта Arbitova, нет комиссии за листинг, нет тарифа Pro. Протокол и есть весь продукт.
Related MCP server: cardzero-mcp
Быстрый старт — Node.js SDK
npm install @arbitova/sdk ethersimport { Arbitova } from '@arbitova/sdk';
const buyer = await Arbitova.fromPrivateKey({ privateKey: process.env.BUYER_PK });
const { escrowId, txHash } = await buyer.createEscrow({
seller: process.env.SELLER_ADDRESS,
amount: '5.00',
deliveryHours: 24,
reviewHours: 24,
verificationURI: 'https://example.com/spec.json',
});
console.log(`Escrow #${escrowId} locked — ${buyer.explorerTx(txHash)}`);Интеграция для продавца, арбитра и браузерного кошелька: см. packages/sdk-js/README.md.
Быстрый старт — Python SDK
pip install "arbitova[path_b]"from arbitova import path_b
result = path_b.arbitova_create_escrow(
seller="0x...",
amount=5.00,
verification_uri="https://example.com/spec.json",
)
print(result)Быстрый старт — Claude / любой MCP-клиент
{
"mcpServers": {
"arbitova": {
"command": "npx",
"args": ["-y", "@arbitova/mcp-server"],
"env": {
"ARBITOVA_RPC_URL": "https://sepolia.base.org",
"ARBITOVA_ESCROW_ADDRESS": "0xA8a031bcaD2f840b451c19db8e43CEAF86a088fC",
"ARBITOVA_USDC_ADDRESS": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
"ARBITOVA_AGENT_PRIVATE_KEY": "0x..."
}
}
}
}Шесть инструментов: arbitova_create_escrow, arbitova_mark_delivered, arbitova_confirm_delivery, arbitova_dispute, arbitova_cancel_if_not_delivered, arbitova_get_escrow. Все подписываются локально через ethers v6. Ваш закрытый ключ никогда не покидает процесс.
Опустите ARBITOVA_AGENT_PRIVATE_KEY для режима интроспекции «только чтение» (полезно для наблюдаемости).
Жизненный цикл
┌──────────────────┐
│ CREATED │ buyer locked USDC
└────────┬─────────┘
│
▼ seller.markDelivered()
┌──────────────────┐
│ DELIVERED │ deliveryHash on-chain
└────────┬─────────┘
│
buyer.confirmDelivery()│ │ buyer.dispute()
│ │ or seller.dispute()
▼ ▼
┌─────────────┐ ┌──────────┐
│ RELEASED │ │ DISPUTED │ waiting for arbiter
└─────────────┘ └────┬─────┘
│ arbiter.resolve(bps split + verdictHash)
▼
┌──────────┐
│ RESOLVED │
└──────────┘Два терминальных состояния не показаны: CANCELLED (покупатель вызывает cancelIfNotDelivered после окна доставки) и автоматическая эскалация в DISPUTED, если окно проверки истекло без подтверждения.
Эталонные агентские фреймворки
Три сквозных демо A2A в сети Base Sepolia с живым ИИ-арбитром:
Claude Agent SDK — внутрипроцессные MCP-инструменты
LangGraph — ReAct-агент, покупатель + продавец + арбитр
CrewAI — Агент + Задача + Команда
Каждое демо выполняет полный цикл CREATED → DELIVERED → CONFIRMED (или DISPUTED → RESOLVED) с реальными ончейн-транзакциями.
Пакеты
Пакет | Назначение |
Node.js / браузерный SDK ( | |
Python SDK, установите с дополнением | |
MCP-сервер (6 ончейн-инструментов) для Claude Desktop, Claude Code, любого MCP-клиента |
Каждый из них предоставляет одинаковый интерфейс из шести точек входа, поэтому агент, использующий Python SDK, может совершить расчет с агентом, использующим MCP-сервер — они обращаются к одному и тому же контракту.
Комиссии
Когда | Комиссия | Кем оплачивается |
| 0.5% | вычитается из выплаты продавцу |
Арбитр разрешает спор | 2% | распределяется согласно вердикту арбитра |
Комиссии накапливаются в контракте. Протокол работает за счет них; подписки нет.
Сети
Сеть | Статус | Контракт |
Base Sepolia | работает, реальный Circle USDC |
|
Base mainnet | ожидается аудит + мультисиг-арбитр | TBA |
Следите за Dev Log для запуска в основной сети.
Устаревшая версия (Путь A)
Версии SDK v2.x и MCP-сервера v3.4.0 были кастодиальным HTTP-клиентом, работающим с api.arbitova.com. Эта архитектура имела четыре структурные проблемы (рассинхронизация БД и блокчейна, газ кастодиального кошелька, единый ADMIN_KEY, единая точка отказа WALLET_ENCRYPTION_KEY) и была признана устаревшей в пользу Пути B — некастодиального ончейн-дизайна, описанного выше.
Миграция для пользователей SDK:
sdk/MIGRATION_PATH_A_TO_B.mdМиграция для пользователей MCP:
mcp-server/MIGRATION.md
Старые пакеты остаются на npm/PyPI, но являются устаревшими.
Лицензия
MIT
Available Tools
7 toolsarbitova_cancel_if_not_deliveredA
Buyer cancels an escrow after the delivery deadline has passed and the seller has not marked delivery. Full USDC refund to buyer. Only callable by the buyer, only after deliveryDeadline has elapsed, and only when escrow is still in CREATED state. Call arbitova_get_escrow first to verify the deadline has passed and status is CREATED before calling this.
| Name | Required | Description | Default |
|---|---|---|---|
| escrowId | Yes | The escrow ID to cancel |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description fully discloses the action (cancellation with refund), preconditions (caller, time, state), and a recommendation to check status. It could mention error behavior if conditions not met, but overall transparency is strong.
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 concise with three sentences: action, conditions, and advice. It is front-loaded with the primary action, and every sentence adds necessary context without redundancy.
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 simple cancellation tool with one parameter and no output schema, the description provides all necessary context: behavior, preconditions, and a recommended prior step. No critical information is missing for an agent to use it correctly.
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 input schema already covers the single parameter (escrowId) with a clear description. The tool description adds no additional parameter-level detail, so baseline score of 3 is appropriate given 100% schema coverage.
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 cancels an escrow when delivery is not marked after the deadline, refunding the buyer in USDC. It uses specific verbs and resources, distinguishing it from sibling tools like dispute or escalate.
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 explicitly specifies when to use the tool: only by the buyer, after deliveryDeadline has passed, and when escrow is in CREATED state. It also advises to verify conditions via get_escrow first, providing practical guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arbitova_confirm_deliveryA
Confirm that the seller has delivered and the output meets ALL criteria in the escrow's verificationURI. ONLY call after you have: (1) fetched the delivery payload, (2) fetched and parsed the verificationURI criteria document, (3) compared the payload against EVERY criterion, (4) are fully confident every criterion is satisfied. If anything is missing, wrong, ambiguous, incomplete, or the seller did not deliver the agreed output — DO NOT call this. Call arbitova_dispute instead with a specific reason citing the failed criterion. Silence is safer than a wrong confirmation: if you do not confirm within the review window, funds auto-escalate to AI arbitration, which protects the buyer by independently evaluating delivery.
| Name | Required | Description | Default |
|---|---|---|---|
| escrowId | Yes | The escrow ID to confirm delivery for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses consequence of wrong confirmation (funds auto-escalate to arbitration) and that silence is safer. Lacks explicit mention of idempotency or reversibility, but sufficient for safety-critical action.
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?
Description is longer than average but each sentence adds value: purpose, prerequisites, alternatives, consequences. Front-loaded with main action. Could condense the list of prerequisites slightly, but no wordiness.
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 complexity (high-stakes confirmation with verification criteria), the description thoroughly covers preconditions, alternatives, and consequences of misuse. No output schema, but return value is not critical for decision-making.
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?
Only one parameter (escrowId) with schema description. Description adds context (confirms delivery for that escrow) but does not materially extend beyond schema. Schema coverage is 100%, so baseline 3 is appropriate.
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?
Specific verb ('confirm') and resource ('delivery') with clear condition (output meets verificationURI criteria). Distinguishes from sibling arbitova_dispute by stating when not to call.
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?
Explicitly lists 4 prerequisites before calling, provides clear when-not-to-use (any missing/wrong), and names alternative tool (arbitova_dispute). Also advises on escalation path if uncertain.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arbitova_create_escrowA
Buyer locks USDC into the Arbitova EscrowV1 smart contract. Calls USDC.approve() then createEscrow() on-chain. Requires USDC balance >= amount. deliveryWindowHours = how long the seller has to deliver (default 24). reviewWindowHours = how long the buyer has to verify after delivery is marked (default 24). verificationURI must point to a publicly fetchable JSON document listing every criterion the delivery will be checked against. If the review window expires without confirmation or dispute, funds auto-escalate to arbitration. Silence protects the buyer — you do NOT need to confirm promptly.
| Name | Required | Description | Default |
|---|---|---|---|
| seller | Yes | Seller Ethereum address (0x-prefixed) | |
| amount | Yes | USDC amount to lock (human-readable, e.g. 50 for 50 USDC) | |
| deliveryWindowHours | No | Hours the seller has to deliver (default 24) | |
| reviewWindowHours | No | Hours the buyer has to review after delivery (default 24) | |
| verificationURI | Yes | Publicly fetchable URL of a JSON document listing every delivery criterion (e.g. {"criteria": ["word count >= 1000", "includes executive summary"]}) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It details on-chain steps (approve, createEscrow), prerequisites (USDC balance), and consequences (auto-escalation on review expiry). It also clarifies that silence protects the buyer, which is a non-obvious behavioral trait.
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 one coherent paragraph without wasted words. It front-loads the purpose and flows logically through parameters and consequences. Could be slightly more structured (e.g., bullet points) but remains efficient.
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's complexity (on-chain escrow creation) and lack of output schema, the description completely covers the process, prerequisites, and outcomes. Sibling tools handle subsequent actions, so this tool's context is sufficiently self-contained.
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?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining the practical impact of deliveryWindowHours and reviewWindowHours (auto-escalation), and emphasizes that verificationURI must be publicly fetchable, which is not fully captured in the schema's description.
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's verb ('locks USDC') and resource ('Arbitova EscrowV1 smart contract'), and it distinguishes itself from sibling tools that handle cancellation, confirmation, dispute, etc. It is specific about the buyer's action.
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 explains when to use (buyer initiating escrow) and provides default values for windows. However, it does not explicitly exclude other scenarios or mention alternatives among siblings, though the action is unique enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arbitova_disputeA
Open a dispute when delivery is missing, incorrect, incomplete, or violates the verification criteria. Disputes trigger AI arbitration which independently evaluates the delivery and can split funds fairly. Call this whenever arbitova_confirm_delivery feels uncertain — when in doubt, dispute. The reason field MUST cite specific criteria from verificationURI that were not met, e.g. "Delivery at [URI] is missing criterion 3: word count is 400 but spec requires >= 1000." Either the buyer OR the seller can open a dispute.
| Name | Required | Description | Default |
|---|---|---|---|
| escrowId | Yes | The escrow ID to dispute | |
| reason | Yes | Specific reason citing which verification criteria were not met. Include the criterion text and what was observed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, description adds valuable context: disputes trigger AI arbitration that evaluates delivery and can split funds, and reason must cite criteria. Lacks details on side effects like reversibility.
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?
Concise, front-loaded with purpose, no unnecessary words, efficient communication.
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 simple parameters and no output schema, description covers purpose, usage, parameter behavior, and the AI arbitration mechanism, leaving no major gaps.
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?
Adds meaning beyond schema: reason must cite specific criteria from verificationURI with an example, clarifying format and requirements.
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?
Clearly states the tool opens a dispute for delivery issues, specifies triggers like missing or incorrect delivery, and distinguishes from siblings like confirm_delivery.
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?
Explicitly advises calling when arbitova_confirm_delivery feels uncertain, and mentions both buyer or seller can open, providing clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arbitova_escalate_if_expiredA
Permissionlessly escalate a DELIVERED escrow to DISPUTED after the review window has expired. Any address can call this — buyer, seller, or an independent watcher. Use when the buyer went silent past reviewDeadline: this unblocks the seller and routes the escrow into arbitration instead of leaving funds stuck. Only valid when status is DELIVERED and block.timestamp > reviewDeadline. Call arbitova_get_escrow first to verify status and deadline before calling this.
| Name | Required | Description | Default |
|---|---|---|---|
| escrowId | Yes | The escrow ID to escalate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description fully carries the burden. It discloses permissionless access, required status (DELIVERED), time condition (block.timestamp > reviewDeadline), and effect (status change to DISPUTED). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with action and constraints, every sentence adds value. No redundancy or unnecessary 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?
Given the complexity of the tool (on-chain state change), the description covers preconditions, permissible callers, consequences, and a prerequisite check. No output schema, but the state change is clearly explained.
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?
Input schema has 100% coverage with one parameter described. The description adds context about the parameter's role (escalate escrow) and suggests verifying with another function, but the meaning is already clear from 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 states the action: escalate a DELIVERED escrow to DISPUTED after the review window expires. It distinguishes from siblings by specifying the condition of expiration, separating it from other operations like cancel, confirm, or dispute.
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?
Explicitly states when to use (buyer went silent past reviewDeadline), who can call (any address), and what it achieves (unblocks seller, routes to arbitration). Also advises calling arbitova_get_escrow first to verify status and deadline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arbitova_get_escrowA
Fetch the current on-chain state of an escrow: buyer, seller, amount, deadlines, status, verificationURI, and deliveryHash. Use this to check whether delivery has been marked before fetching the payload, and to verify the reviewDeadline before deciding to confirm or dispute. Status values: CREATED (awaiting delivery), DELIVERED (seller marked done, review window open), RELEASED (funds released to seller), DISPUTED (in arbitration), RESOLVED (arbiter resolved), CANCELLED.
| Name | Required | Description | Default |
|---|---|---|---|
| escrowId | Yes | The escrow ID to query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description fully describes the returned data and its meaning. It implies a read-only operation without side effects. A higher score would require explicit statement of read-only nature.
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?
Two concise sentences plus a list of statuses. Front-loaded with purpose, no redundant information. Every sentence adds value.
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 simple fetch tool with one parameter and no output schema, the description provides all necessary context: what fields are returned, status meanings, and usage guidance. It is 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?
Input schema has 100% coverage with one parameter. The description does not add extra meaning beyond what the schema provides, meeting the baseline for high coverage.
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 specifies the verb 'Fetch' and resource 'on-chain state of an escrow' with a clear list of fields. It distinguishes itself from sibling action tools (cancel, confirm, dispute) by being a read-only query.
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?
Explicitly states when to use: 'check whether delivery has been marked before fetching the payload' and 'verify the reviewDeadline before deciding to confirm or dispute'. Provides decision-making context and references sibling tools implicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arbitova_mark_deliveredA
Called by the SELLER after completing the work and uploading the deliverable to a stable URL. deliveryPayloadURI must point to the completed, publicly fetchable deliverable — the contract hashes this URI on-chain. Do NOT call before work is actually done. Do NOT use a temporary or expiring URL. The arbiter will fetch this URI during dispute resolution — a broken or mismatched URL counts as non-delivery. Before calling: complete all work to spec, upload to a stable URL (IPFS or persistent storage), and verify the content matches every criterion in verificationURI.
| Name | Required | Description | Default |
|---|---|---|---|
| escrowId | Yes | The escrow ID returned by arbitova_create_escrow | |
| deliveryPayloadURI | Yes | Stable public URL pointing to the completed deliverable |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses that contract hashes URI on-chain and arbiter fetches it during disputes. Warns about broken URL counting as non-delivery. Missing details on return value or permissions beyond seller.
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?
Concise but slightly long; every sentence adds value. Well-structured: purpose first, then constraints and prerequisites. No fluff, but could be slightly tighter.
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?
Complete for a simple action tool. Covers preconditions, stability, and dispute resolution. Missing return behavior or confirmation after calling, but no output schema exists to explain. References sibling tool create_escrow.
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?
Adds significant meaning beyond schema: explains deliveryPayloadURI must be stable, publicly fetchable, and on-chain hashed. Describes escrowId as from create_escrow. Schema coverage is 100%, but description enriches each parameter.
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?
Clearly states the tool is called by the seller after completing work and uploading a deliverable. Identifies the actor (seller) and context, distinguishing from sibling tools like confirm_delivery (buyer action).
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?
Explicitly states when to call (after work done, upload stable URL) and when NOT to call (before work done, temporary URL). Provides prerequisites and warns about consequences of broken URL.
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.1.0- First observed
arbitova_cancel_if_not_delivered - First observed
arbitova_confirm_delivery - First observed
arbitova_create_escrow - First observed
arbitova_dispute - First observed
arbitova_escalate_if_expired - First observed
arbitova_get_escrow - First observed
arbitova_mark_delivered
TDQS
Scored across 7 tools
Each tool targets a unique action in the escrow lifecycle (create, get, mark delivered, confirm, cancel, dispute, escalate). No two tools have overlapping purposes, and descriptions clarify exactly when each should be used.
All tools follow the pattern 'arbitova_<verb>_<condition>', using snake_case consistently. The names are descriptive and predictable, making it easy to infer the tool's action from its name.
7 tools is an ideal size for an escrow management server. Each tool serves a necessary function in the lifecycle without unnecessary redundancy or bloat.
The tool set covers the full escrow lifecycle: creation, status retrieval, delivery marking, confirmation/cancellation, dispute opening, and escalation. There are no obvious gaps that would hinder an agent from managing an escrow end-to-end.
Maintenance
Related MCP Connectors
Agent-to-agent escrow on Base. Post quests with ETH/USDC bounties and settle on-chain.
Escrow protection for agent payments on Base — USDC held in smart contract until job completion.
Escrow protection for agent payments on Base — USDC held in smart contract until job completion.
Trust-minimized USDC escrow for autonomous agent transactions
Related MCP Servers
- FlicenseAqualityNot gradedmaintenanceTrust infrastructure for AI agents on Base. DEX Spread Oracle (live Uniswap V3 prices), on-chain escrow, insurance pool, and collective knowledge base. 7 smart contracts. Pay-per-query via x402 micropayments in USDC.6-
- AlicenseAqualityDmaintenanceGives AI agents a smart-contract wallet on Base (USDC) with 10 stdio tools: create wallets, send USDC payments, pay x402-protected HTTP resources, and run ERC-8183 escrow Jobs for A2A service delivery.1012 npmMIT
- FlicenseNot gradedqualityBmaintenanceSettlement rails for AI labor — USDC escrow on Base Mainnet, 1% protocol fee, designed for autonomous agents. 10 MCP tools covering the full escrow lifecycle: * Quoting calldata for create-intent, submit-proof, release-funds (broadcast gated) * Single-call x402 payment binding (replaces the 5-step x402 dance with one HMAC-signed POST) * Server-side reputation from on-chain event scan * Li-
- AlicenseAqualityAmaintenancePrivate escrow for AI agent work on Beam mainnet an agent locks payment, the worker locks collateral, and delivery settles on hash match or review, with M of N arbitrator voting and slashable worker bonds as the dispute backstop. 22 tools cover the full contract lifecycle, and dispute voting is deliberately not an agent tool, so an agent can never rule in its own favour.26MIT