Sekisho MCP
Lets any MCP client pay x402 tools in USDC on Avalanche, with per-call and 24 h caps.
Installation
Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).
@zero-two-labs/sekisho-mcpclaude mcp add sekisho-mcp -e 'SEKISHO_MCP_URL=<SEKISHO_MCP_URL>' -e 'SEKISHO_NETWORK=avalancheFuji' -e 'SEKISHO_MAX_PER_CALL=0.01' -e 'SEKISHO_MAX_PER_DAY=0.10' -e 'SEKISHO_PAYER_KEY_FILE=~/.config/sekisho/payer.key' -- npx -y @zero-two-labs/sekisho-mcp@0.1.1
{
"mcpServers": {
"sekisho-mcp": {
"command": "npx",
"args": [
"-y",
"@zero-two-labs/sekisho-mcp@0.1.1"
],
"env": {
"SEKISHO_MCP_URL": "<SEKISHO_MCP_URL>",
"SEKISHO_NETWORK": "avalancheFuji",
"SEKISHO_MAX_PER_CALL": "0.01",
"SEKISHO_MAX_PER_DAY": "0.10",
"SEKISHO_PAYER_KEY_FILE": "~/.config/sekisho/payer.key"
}
}
}
}
Variables d'environnement
SEKISHO_MCP_URLobligatoire Remote paid MCP server (Streamable HTTP), e.g. https://sekisho-api.zerotwolabs.xyz/mcpSEKISHO_NETWORKavalancheFuji (testnet) or avalanche (mainnet, real USDC)SEKISHO_MAX_PER_CALLMax USDC per tool callSEKISHO_MAX_PER_DAYMax USDC in any 24 h windowSEKISHO_PAYER_KEY_FILEPath to the payer private key file (mode 600). Never put the key itself in config.
Documentation
Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.
Sommaire
Sekisho 関所 · Kanjō 勘定
AI agents that sell — and get paid. x402 payments on Avalanche with an on-chain revenue split, run in batches by a built-in distributor.
- Sekisho (関所, checkpoint): on-chain payment layer + SDK. Any API or MCP tool can charge USDC via x402; every payment lands in the seller's SplitVault, which splits the platform fee and the seller's share.
- Kanjō (勘定, the bill): an AI sales agent for small businesses. It chats with customers, builds orders and collects payment through Sekisho.
Status: live on Avalanche C-Chain mainnet (Sekisho contracts and SDK). Kanjō runs on Fuji testnet. See SECURITY.md. Website: https://sekisho.zerotwolabs.xyz · SDK:
@zero-two-labs/sekisho
Repository
| Layer | Path | What it is |
|---|---|---|
| Contracts | backend/ | SplitVault + SplitVaultFactory (Solidity, Hardhat, 40 tests) |
| SDK | sdk/ | x402 helpers for sellers, paying agents, self-facilitation and paid MCP tools |
| App | apps/kanjo/ | AI sales agent (Claude) + x402 checkout, deployed with Docker |
| Website | apps/web/ | Landing page (Astro) at sekisho.zerotwolabs.xyz |
| Starter | packages/create-sekisho/ | npm create @zero-two-labs/sekisho: a paid API ready to run |
| Ops | ops/ | Health check and Telegram alerts for the live deployment |
| MCP proxy | packages/sekisho-mcp/ | npx @zero-two-labs/sekisho-mcp: lets OpenCode, Claude Code, Codex or any MCP client pay x402 tools, with per-call and 24 h caps |
| Interop | interop/ | Pays a Sekisho endpoint with plain @x402/fetch and the official Python x402 client, in CI |
| Demo API | apps/demo-api/ | Public paid API on mainnet (x402, 0.01 USDC per call) at sekisho-api.zerotwolabs.xyz, plus free on-chain metrics |
| Metrics | apps/web/src/pages/metrics.astro | Live payments, volume, vaults and splits read from the chain: sekisho.zerotwolabs.xyz/metrics |
| Services | apps/web/public/services.json | Directory of paid APIs and MCP tools that charge with Sekisho, verified every 30 min: sekisho.zerotwolabs.xyz/services |
How a payment flows
Customer ──chat──▶ Kanjō agent (Claude) ──▶ order + payment link
│
└─ signs EIP-3009 authorization (gasless) ──▶ Kanjō facilitator settles USDC
│
▼
Merchant's SplitVault (deterministic address)
│ distribute() — batched
┌───────────────┴───────────────┐
▼ ▼
Treasury (1.5%) Merchant (98.5%)
Deployments
Avalanche C-Chain mainnet (eip155:43114)
| Contract / role | Address |
|---|---|
SplitVaultFactory (v3) | 0xeB43A8b678E0b4ee7f11bd2867bC8B5EaC9444A6 |
SplitVault (v3 implementation) | 0x24A48f2cCFaaC60918F81c25B56380A3610F75F5 |
| Owner and treasury (Safe 2-of-3) | 0xbABB7B7C35438B2Ab646da3C820859062ACEA3Dc |
| USDC (Circle) | 0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E |
First x402 payment on mainnet (2026-10-28), through the demo API: an agent paid 0.01 USDC for GET /v1/avalanche/snapshot, the server settled it into the seller's vault, and the SDK's distributor split it automatically, 19 seconds later. For this test the demo's split threshold was lowered to 0.01 USDC; in normal operation it batches splits (1 USDC, or 24 h once 0.25 USDC is pending), so later payments wait in the vault until then.
| Step | Transaction |
|---|---|
Settlement (transferWithAuthorization, payer → vault 0xBF15…8e36) | 0xadb28eed…91c1 |
Vault deployment (createVault) | 0x19bd48d6…1f5a |
Split (distribute): 0.00985 USDC to the seller, 0.00015 USDC to the Safe | 0x3d4f388b…612b |
Avalanche Fuji testnet (eip155:43113)
| Contract / role | Address |
|---|---|
SplitVaultFactory (v3) | 0x1fC9C58DfbBDa2d0508b12800859e54f4f3519Ab |
SplitVault (v3 implementation) | 0xD504A30e90A5EEa3d5fd26B588c9854e31819a3C |
| Owner | 0xb7345347a7FCAa1D4A411e843D8939016737F3b3 |
| Treasury | 0x06584d9FF65a2cB110022858A9540d903258298A |
| USDC (Circle) | 0x5425890298aed601595a70AB815c96711a31Bc65 |
Deprecated factories on Fuji: v2 0x198F21AF47221bb06dAAf8e4F5eB46F9ba388807 (no fee delay, SDK 0.2.x) and v1 0xA1967201adD1Ac57d1c72D04Ca4d9159B98C8C5D (no merchant rotation, SDK ≤ 0.1.5).
Security model
- Fee hard cap and 7-day delay:
MAX_FEE_BPS = 1000(10%) is enforced in the contract; not even the owner can exceed it. Every fee change is scheduled and applies 7 days later (FEE_CHANGE_DELAY). The fee is applied when funds are split, not when they are charged: callingdistribute()before the deadline splits pending funds at the old rate, and the SDK's distributor does it automatically when it sees a scheduled increase. Current fee: 1.5%. - Permissionless, fixed-destination splits: anyone can call
distribute(), but funds can only go to the treasury and the merchant. - No withdraw function: everything that enters a vault can only leave through
distribute(). Vaults reject native AVAX. - Two-step merchant rotation: only the current merchant can propose a new payout address and only that address can accept; anything pending is paid to the previous address first.
- Separated keys: on mainnet, owner and treasury are a Safe 2-of-3 multisig; on Fuji they are two separate single-key wallets. The server's operator key settles payments and triggers splits but holds no permissions on the contracts.
- No lost payments: a settled payment is always recorded, even if stock ran out (the order is flagged for refund). A per-order lock prevents double settlement; WhatsApp webhooks are deduplicated by message id.
Quickstart
Contracts
cd backend && npm install && npx hardhat test
Start charging in 5 minutes
npm create @zero-two-labs/sekisho my-api -- --merchant 0xYourWallet
A ready-to-run paid API: x402 endpoint, your SplitVault, automatic distributor and a fresh operator key in .env. See packages/create-sekisho.
SDK
npm install @zero-two-labs/sekisho viem
See sdk/README.md for seller, agent, facilitator, MCP and distributor (keeper) examples.
Kanjō (no WhatsApp account needed for local testing)
cd apps/kanjo
cp .env.example .env # fill MERCHANT_ADDRESS, ANTHROPIC_API_KEY, OPERATOR_PRIVATE_KEY
npm install
npm run seed # demo store and catalog
npm run chat # talk to the agent in your terminal
npm run dev # server + checkout at http://localhost:3000
Checks: npm run test:safety · npm run test:distribution · npm run test:webhook · npm run gas:report
Economics (measured October 2026)
With mainnet gas at 2.5 nAVAX and AVAX ≈ $9.5:
| Operation | Gas | Cost |
|---|---|---|
Settlement (transferWithAuthorization) | ~102.8k | ~$0.0025 |
Split (distribute) | ~92.9k | ~$0.0023 |
With a 1.5% fee, the minimum viable ticket is ~$0.30 splitting every order and ~$0.17 splitting in batches. That is why the SDK's distributor and Kanjō split in batches (≥ 5 USDC, or every 24 h once at least 0.25 USDC is pending). Run npm run gas:report in apps/kanjo for live numbers.
Roadmap
- Mobile checkout from WhatsApp's in-app browser (WalletConnect or embedded wallets)
- Fiat on-ramp (SPEI → USDC into the same vault) through a regulated provider
batch-settlementx402 scheme for sub-cent MCP micropayments
License
MIT © Zero Two Labs
Built at Hacktoberfest México 2026
Built on October 28, 2026, during the Hacktoberfest México Build Day, on top of the existing repo:
- Catalog from any URL with Firecrawl (
apps/kanjo/src/catalog-import.ts):npm run catalog:import -- <url>extracts products, prices, sections and photos into a preview with a diff;npm run catalog:apply -- <id>writes them. Prices in MXN are converted to USDC. Demo menu:/demo/menu.html. - Voice with ElevenLabs (
apps/kanjo/src/voice.ts): customers talk to the agent from the browser (/voice) and it answers out loud; payment links always stay on screen as text. WhatsApp voice notes in and out are wired too (VOICE_REPLIES=on).
Everything before these commits already existed: v3 contracts on Avalanche mainnet, the @zero-two-labs/sekisho SDK and the x402 checkout with on-chain revenue split. The Kanjō demo runs on Avalanche Fuji testnet.
Questions fréquentes
Qu'est-ce que Sekisho MCP ?
Lets any MCP client pay x402 tools in USDC on Avalanche, with per-call and 24 h caps.
Comment installer Sekisho MCP ?
Il s'exécute sur votre machine. Dans Claude Code : claude mcp add sekisho-mcp -e 'SEKISHO_MCP_URL=<SEKISHO_MCP_URL>' -e 'SEKISHO_NETWORK=avalancheFuji' -e 'SEKISHO_MAX_PER_CALL=0.01' -e 'SEKISHO_MAX_PER_DAY=0.10' -e 'SEKISHO_PAYER_KEY_FILE=~/.config/sekisho/payer.key' -- npx -y @zero-two-labs/sekisho-mcp@0.1.1. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.
Faut-il une clé API pour Sekisho MCP ?
Oui. Il attend SEKISHO_MCP_URL, à renseigner dans sa configuration.
Sekisho MCP est-il open source ?
Oui. Son code est sur GitHub sous licence MIT.
Qui maintient Sekisho MCP ?
Il est publié par usainbluntmx. AI.tn le référence sans le maintenir ni le recommander.
Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.