arbitova-mcp-server
Arbitova
Base 链上非托管 USDC 托管 + AI 仲裁,用于代理间支付。
两个代理将 USDC 锁定在合约中,一方交付,另一方确认或提出争议,由中立的 AI 仲裁员进行裁决。Arbitova 从不持有资金——资金由合约持有。
无需 API 密钥。无需注册。无需托管。你的以太坊地址就是你的身份。
合约:Base Sepolia 上的
EscrowV1,地址为0xA8a031bcaD2f840b451c19db8e43CEAF86a088fC—— 在 Basescan 上已验证,主网将在审计后上线机器可读描述符:
/.well-known/arbitova.json逐案裁决仪表板:arbitova.com/verdicts
集成路径:arbitova.com/integrate(原始合约 / 参考 SDK / 代理原生)
参考 UI(非规范,供人类使用):arbitova.com/pay
为什么存在这个项目
目前市面上所有的 A2A / 代理商业规范(MCP、Google 的 A2A、ERC-7683、Coinbase 的 Agent Commerce)都定义了代理如何沟通。但没有一个定义了当代理互不信任时资金如何流动。
Arbitova 是缺失的结算原语:
确定性状态机。
createEscrow → markDelivered → {confirmDelivery | dispute → resolve | cancel}。没有隐藏分支,没有管理员覆盖。超时后不自动释放。 审查窗口过期后会进入
DISPUTED状态,而不是自动支付给卖家。沉默比错误的确认更安全。内容哈希链上固定。 卖家在买家检查后无法更换交付文件。
逐案裁决透明度。 每一项仲裁员决定都是一个签名的 JSON blob;其
keccak256存储在链上。完整的裁决历史记录可在/verdicts查询——无需聚合,无延迟。
这不是一个市场。没有 Arbitova 账户,没有上架费,没有专业版。协议本身就是全部产品。
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。
框架参考代理
在 Base Sepolia 上带有实时 AI 仲裁员的三个端到端 A2A 演示:
Claude Agent SDK — 进程内 MCP 工具
LangGraph — ReAct 代理,买家 + 卖家 + 仲裁员
CrewAI — 代理 + 任务 + 团队
每个演示都通过真实的链上交易运行完整的 CREATED → DELIVERED → CONFIRMED(或 DISPUTED → RESOLVED)流程。
软件包
软件包 | 用途 |
Node.js / 浏览器 SDK ( | |
Python SDK,安装时使用 | |
用于 Claude Desktop、Claude Code 或任何 MCP 客户端的 MCP 服务器(6 个链上工具) |
每个软件包都提供相同的六个入口点,因此使用 Python SDK 的代理可以与使用 MCP 服务器的代理进行结算——它们访问的是同一个合约。
费用
时间 | 费用 | 支付方 |
| 0.5% | 从卖家收益中扣除 |
仲裁员解决争议 | 2% | 按仲裁员裁决分配 |
费用在合约中累积。协议依靠这些费用运行;没有订阅费。
网络
网络 | 状态 | 合约 |
Base Sepolia | 实时,真实的 Circle USDC |
|
Base 主网 | 等待审计 + 多签仲裁员 | 待定 |
关注 开发日志 获取主网上线信息。
旧版本(路径 A)
v2.x 的 SDK 和 v3.4.0 的 MCP 服务器是针对 api.arbitova.com 的托管 HTTP 客户端。该架构存在四个结构性问题(数据库与链上数据漂移、托管钱包 Gas、单一 ADMIN_KEY、单一 WALLET_ENCRYPTION_KEY 单点故障),现已弃用,转而采用路径 B——即上述非托管链上设计。
SDK 用户迁移指南:
sdk/MIGRATION_PATH_A_TO_B.mdMCP 用户迁移指南:
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