Skip to main content
Glama

Arbitova

jiayuanliang0716-max/Arbitova MCP server

Non-custodial USDC escrow + AI arbitration for agent-to-agent payments on Base.

Two agents lock USDC into a contract, one delivers, the other confirms or disputes, and a neutral AI arbiter resolves. Arbitova never holds the money — the contract does.

No API keys. No registration. No custody. Your Ethereum address is your identity.


Why this exists

Every A2A / agent-commerce spec in the wild — MCP, Google's A2A, ERC-7683, Coinbase's Agent Commerce — defines how agents talk. None of them define how money moves when the agents don't trust each other.

Arbitova is the missing settlement primitive:

  • Deterministic state machine. createEscrow → markDelivered → {confirmDelivery | dispute → resolve | cancel}. No hidden branches, no admin override.

  • No auto-release after timeout. Review windows expire into DISPUTED, not into seller payout. Silence is safer than a wrong confirmation.

  • Content-hash pinned on-chain. Sellers can't swap the delivery file after the buyer inspects.

  • Per-case verdict transparency. Every arbiter decision is a signed JSON blob; its keccak256 is stored on-chain. The full verdict history is queryable at /verdicts — no aggregation, no delay.

This is not a marketplace. There is no Arbitova account, no listing fee, no Pro tier. The protocol is the whole product.


Related MCP server: cardzero-mcp

Quick start — Node.js SDK

npm install @arbitova/sdk ethers
import { 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)}`);

Seller-side, arbiter-side, browser wallet integration: see packages/sdk-js/README.md.

Quick start — 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)

Quick start — Claude / any MCP client

{
  "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..."
      }
    }
  }
}

Six tools: arbitova_create_escrow, arbitova_mark_delivered, arbitova_confirm_delivery, arbitova_dispute, arbitova_cancel_if_not_delivered, arbitova_get_escrow. All sign locally via ethers v6. Your private key never leaves the process.

Omit ARBITOVA_AGENT_PRIVATE_KEY for read-only introspection mode (useful for observability).


Lifecycle

                      ┌──────────────────┐
                      │     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 │
                                   └──────────┘

Two terminal states not drawn: CANCELLED (buyer calls cancelIfNotDelivered after delivery window) and auto-escalation into DISPUTED if the review window expires without confirmation.


Framework reference agents

Three end-to-end A2A demos on Base Sepolia with a live AI arbiter:

Each demo runs the full CREATED → DELIVERED → CONFIRMED (or DISPUTED → RESOLVED) flow with real on-chain transactions.


Packages

Package

Purpose

@arbitova/sdk

Node.js / browser SDK (ethers v6)

arbitova

Python SDK, install with [path_b] extra for on-chain support

@arbitova/mcp-server

MCP server (6 on-chain tools) for Claude Desktop, Claude Code, any MCP client

Each ships the same six-entrypoint surface so an agent using the Python SDK can settle with an agent using the MCP server — they're hitting the same contract.


Fees

When

Fee

Paid by

confirmDelivery / review-window expiry auto-settle

0.5%

deducted from seller payout

Arbiter resolves a dispute

2%

split per arbiter verdict

Fees accrue in the contract. The protocol runs on them; there is no subscription.


Networks

Network

Status

Contract

Base Sepolia

live, real Circle USDC

0xA8a031bcaD2f840b451c19db8e43CEAF86a088fC

Base mainnet

pending audit + multisig arbiter

TBA

Watch the Dev Log for mainnet launch.


Legacy (Path A)

v2.x of the SDKs and v3.4.0 of the MCP server were a custodial HTTP client against api.arbitova.com. That architecture had four structural problems (DB-vs-onchain drift, custody wallet gas, single ADMIN_KEY, single WALLET_ENCRYPTION_KEY point of failure) and was deprecated in favor of Path B — the non-custodial on-chain design described above.

Old packages remain on npm/PyPI but are deprecated.


License

MIT

Available Tools

7 tools
arbitova_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
escrowIdYesThe escrow ID to cancel

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
escrowIdYesThe escrow ID to confirm delivery for

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sellerYesSeller Ethereum address (0x-prefixed)
amountYesUSDC amount to lock (human-readable, e.g. 50 for 50 USDC)
deliveryWindowHoursNoHours the seller has to deliver (default 24)
reviewWindowHoursNoHours the buyer has to review after delivery (default 24)
verificationURIYesPublicly fetchable URL of a JSON document listing every delivery criterion (e.g. {"criteria": ["word count >= 1000", "includes executive summary"]})

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
escrowIdYesThe escrow ID to dispute
reasonYesSpecific reason citing which verification criteria were not met. Include the criterion text and what was observed.

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
escrowIdYesThe escrow ID to escalate

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
escrowIdYesThe escrow ID to query

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
escrowIdYesThe escrow ID returned by arbitova_create_escrow
deliveryPayloadURIYesStable public URL pointing to the completed deliverable

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 7 tool updatesv0.1.0
    • First observedarbitova_cancel_if_not_delivered
    • First observedarbitova_confirm_delivery
    • First observedarbitova_create_escrow
    • First observedarbitova_dispute
    • First observedarbitova_escalate_if_expired
    • First observedarbitova_get_escrow
    • First observedarbitova_mark_delivered

TDQS

A4.7/5.0

Scored across 7 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness5/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    Not graded
    maintenance
    Trust 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
    -
  • A
    license
    A
    quality
    D
    maintenance
    Gives 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.
    10
    6 npm
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Settlement 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
    -
  • A
    license
    A
    quality
    A
    maintenance
    Private 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.
    26
    MIT