Sekisho MCP
Lets any MCP client pay x402 tools in USDC on Avalanche, with per-call and 24 h caps.
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
@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"
}
}
}
}
Environment variables
SEKISHO_MCP_URLrequired 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
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
Contents
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.
Frequently asked questions
What is Sekisho MCP?
Lets any MCP client pay x402 tools in USDC on Avalanche, with per-call and 24 h caps.
How do I install Sekisho MCP?
It runs on your machine. In 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. For other clients, paste the JSON configuration from this page into their MCP settings.
Does Sekisho MCP need an API key?
Yes. It expects SEKISHO_MCP_URL, which you set in its configuration.
Is Sekisho MCP open source?
Yes. Its code is on GitHub under the MIT license.
Who maintains Sekisho MCP?
It is published by usainbluntmx. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.