Agent commerce settlement tools on Base: treasury setup, payment splits, yield and attribution.
Runs on your machine from its package; the steps are below.

At most: moves money, runs code or commands, deletes data, or sends messages for you.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y @clicks-protocol/mcp-server
MCP client config
{
"mcpServers": {
"clicksprotocol-mcp": {
"command": "npx",
"args": [
"-y",
"@clicks-protocol/mcp-server"
]
}
}
}
Agent commerce settlement routing for USDC flows on Base.
Website · Twitter · Discord · Medium · Substack · Reddit · Treasury Lab · mcpservers.org
import { ClicksClient } from '@clicks-protocol/sdk';
const clicks = new ClicksClient(signer);
await clicks.quickStart('100', agentAddress);
// 80 USDC → agent wallet (instant)
// 20 USDC → treasury yield route
That's it. No config. No dashboard. No human required.
Every USDC payment your agent receives gets auto-split:
Payment in
├── 80% → Agent Wallet (liquid, instant)
└── 20% → DeFi Yield (Aave V3 or Morpho, auto-routed to best APY)
│
└── Withdraw anytime → Agent gets principal + yield (minus 2% fee on yield only)
npm install @clicks-protocol/sdk ethers@^6
Clicks is designed to sit after x402-style payment flows on Base.
x402 handles authorization and payment. Clicks routes USDC after receipt:
import { ClicksClient } from '@clicks-protocol/sdk';
import { CoinbaseWalletSDK } from '@coinbase/wallet-sdk';
const wallet = new CoinbaseWalletSDK({ appName: 'YourAgent' });
const signer = wallet.makeWeb3Provider().getSigner();
const clicks = new ClicksClient(signer);
await clicks.quickStart('1000', agentAddress);
// Your agent now has a settlement policy
// 80% liquid for operations
// 20% routed through treasury yield
One call: registers agent, approves USDC, splits first payment.
const result = await clicks.quickStart('100', agentAddress);
// result.registered → true (skips if already done)
// result.approved → true (skips if allowance sufficient)
// result.paymentSplit → true
// Register
await clicks.registerAgent(agentAddress);
// Approve USDC spending
await clicks.approveUSDC('max');
// Receive payment (auto-splits)
await clicks.receivePayment('500', agentAddress);
// Check yield info
const info = await clicks.getYieldInfo();
// { activeProtocol: 'Morpho', aaveAPY: 700, morphoAPY: 950, ... }
// Withdraw everything
await clicks.withdrawYield(agentAddress);
// Custom yield split (5-50%)
await clicks.setOperatorYieldPct(30); // 30% to yield, 70% liquid
const clicks = new ClicksClient(provider); // provider, not signer
const agent = await clicks.getAgentInfo(agentAddress);
// { isRegistered: true, deposited: 1000000n, yieldPct: 20n }
const split = await clicks.simulateSplit('100', agentAddress);
// { liquid: 80000000n, toYield: 20000000n }
AI agents can discover and use Clicks via MCP:
npm install @clicks-protocol/mcp-server
CLICKS_PRIVATE_KEY=0x... clicks-mcp
16 tools available: clicks_quick_start, clicks_register_referral, clicks_get_agent_info, clicks_simulate_split, clicks_get_yield_info, clicks_get_referral_stats, clicks_verify_receipt, clicks_get_settlement_status, clicks_reconcile_settlement, clicks_replay_policy, clicks_get_receipt_trail, clicks_receive_payment, clicks_withdraw_yield, clicks_register_agent, clicks_set_yield_pct, clicks_explain
Works with Claude, Cursor, LangChain, and any MCP-compatible client.
Referral contracts exist on-chain. Treat them as a separate attribution layer from the current SDK quickStart() helper.
| Level | Share of protocol fee |
|---|---|
| L1 (direct referral) | 40% |
| L2 | 20% |
| L3 | 10% |
| Treasury | 30% |
The referred agent pays nothing extra. Rewards come from the 2% protocol fee once referral attribution has been registered through a dedicated flow.
Recommended flow:
const deadline = BigInt(Math.floor(Date.now() / 1000) + 3600);
const signature = await clicks.signReferralApproval(agentAddress, referrerAddress, deadline);
const result = await clicks.quickStartWithReferral(
'100',
agentAddress,
referrerAddress,
deadline,
signature,
);
Important:
quickStart() handles treasury setup.registerReferralWithSig() handles explicit attribution.quickStartWithReferral() is a convenience wrapper over those two steps, not an atomic one-shot contract call.Economics per $10k deposit at 7% APY:
| Your tree | Passive income/year |
|---|---|
| 10 agents | $56 |
| 100 agents | $560 |
| 1,000 agents | $9,800 |
| 10,000 agents | $98,000 |
Form squads, hit TVL milestones, earn bonus yield:
| Tier | TVL threshold | Bonus yield |
|---|---|---|
| 🥉 Bronze | $50k | +0.20% |
| 🥈 Silver | $250k | +0.50% |
| 🥇 Gold | $1M | +1.00% |
| 💎 Diamond | $5M | +2.00% |
| Contract | Address |
|---|---|
| ClicksRegistry | 0x23bb...0C0a3 |
| ClicksSplitterV4 | 0xB7E0...f3C8 |
| ClicksYieldRouter | 0x0531...EECD |
| ClicksFeeV2 | 0x8C4E...0fb5 |
| ClicksReferral | 0x1E5A...4ccC |
| Safe Multisig (Owner) | 0xaD82...D6A9 |
| USDC | 0x8335...913 |
All contracts verified on Basescan. Owned by Gnosis Safe multisig — single-key compromise is not possible.
Clicks is registered on the ERC-8004 Identity Registry on Base as agentId 45074. On-chain reputation accrues per completed agent job. Attestors who follow the Clicks Attestor Schema V1 become eligible for the reputation-aware fee multiplier (shipping in V5).
/.well-known/agent-registration.jsonclicks-protocol/
├── contracts/ Solidity (^0.8.20)
│ ├── ClicksSplitterV4 Splits payments, manages yield %
│ ├── ClicksYieldRouter Routes to best APY (Aave/Morpho)
│ ├── ClicksFeeV2 2% fee collection on yield
│ ├── ClicksRegistry Agent ↔ Operator mapping
│ └── ClicksReferral Multi-level referral system
├── sdk/ TypeScript SDK
├── mcp-server/ MCP Server (16 tools)
├── site/ Landing page + llms.txt + agent.json
└── test/ 227 tests (Hardhat)
clicksprotocol.xyz/llms.txt — full protocol docs for LLMsclicksprotocol.xyz/.well-known/agent.json — agent manifest@clicks-protocol/mcp-server — tool discovery for MCP clientsThe Clicks MCP server is live at https://mcp.clicksprotocol.xyz/mcp — connect any MCP-compatible client in seconds.
Add to your claude_desktop_config.json:
{
"mcpServers": {
"clicks-protocol": {
"url": "https://mcp.clicksprotocol.xyz/mcp"
}
}
}
openclaw mcp set clicks-protocol --url https://mcp.clicksprotocol.xyz/mcp
Add to .codex/config.json:
{
"mcpServers": {
"clicks-protocol": {
"type": "url",
"url": "https://mcp.clicksprotocol.xyz/mcp"
}
}
}
{
"mcpServers": {
"clicks-protocol": {
"url": "https://mcp.clicksprotocol.xyz/mcp"
}
}
}
| Tool | Description |
|---|---|
get_protocol_stats | TVL, APY, agent count |
get_agent_info | Check if an agent is registered |
get_yield_info | Yield balance for an agent |
simulate_yield | Project earnings over time |
clicks://protocol/overview | Resource: protocol overview |
See examples/integrations/ for ready-to-use config files.
Any agent framework that handles USDC on Base:
x402 · LangChain · CrewAI · AutoGen · Eliza · OpenClaw · Claude · Cursor · Codex · Gemini · Hummingbot · Phidata
npm install
npx hardhat compile
npx hardhat test # 227 tests
MIT
Built for agents, by agents. Live on Base.