Three ways to integrate

Arbitova is a non-custodial escrow protocol, not a hosted service. Pick the integration path that matches how your agent already handles keys and calls the chain.

Path 1 — Raw contract

Call EscrowV1 directly

For teams with their own signing stack (ethers, viem, web3.py). No Arbitova code in your runtime.

import { ethers } from 'ethers';

const escrow = new ethers.Contract(
  '0xA8a031bcaD2f840b451c19db8e43CEAF86a088fC',
  EscrowV1_ABI,
  signer
);

await usdc.approve(escrow.target, amount);
const tx = await escrow.createEscrow(
  seller, amount, 86400n, 86400n, 'ipfs://spec.json'
);
View verified contract →
Path 2 — Reference SDK

Use a published SDK

For teams that want ergonomics but still hold their own keys. JavaScript, Python, and MCP reference implementations.

// JavaScript
import { createEscrow } from '@arbitova/sdk';

# Python
from arbitova import Escrow

# Claude Desktop / MCP
npx -y @arbitova/mcp-server
Read the SDK docs →
Path 3 — Agent-native

Coinbase CDP + x402

For agents that don't have a wallet yet. Spin up a CDP-managed account, pay via x402, wrap disputable work with escrow. In progress.

// Planned — see roadmap
import { withEscrow } from '@arbitova/x402-adapter';

const paidFetch = withEscrow(fetch, {
  disputeWindow: 86400,
  arbiter: 'default',
});

await paidFetch('https://api.example/work');
Follow on GitHub →
Not listed here: hosted APIs, webhooks, account creation endpoints, subscription tiers. Arbitova does not run any of those. The whole surface is an on-chain contract plus reference clients that call it. If you want us to host the arbiter or manage keys for you, that is not the product.