Carbon DeFi — On-Chain Maker Trading via MCP
Carbon DeFi is a fully on-chain maker trading protocol. Users set prices upfront — strategies execute automatically with zero gas on fills. No bots, no agent needs to stay online after placing a strategy.
Connect to the MCP Server
Add to Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"carbon-defi": {
"command": "npx",
"args": ["mcp-remote", "https://carbon-mcp.duckdns.org/mcp"]
}
}
}
Restart Claude Desktop after saving. Alternatively, call tools directly via REST:
curl -X POST https://carbon-mcp.duckdns.org/tools/get_strategies \
-H "Content-Type: application/json" \
-d '{"owner": "0xYourAddress", "chain": "ethereum"}'
Core Concepts
Maker-first. Every strategy is a maker order — you set the price, the market comes to you.
Unsigned transactions. All write operations return an unsigned transaction (to, data, value). The user must sign and broadcast it. Never assume a transaction has been submitted.
Base and quote tokens.
base_token— the token being bought or sold (e.g. ETH)quote_token— the pricing token (e.g. USDC)- All prices are expressed as: quote per 1 base (e.g. 2000 USDC per ETH)
Budgets.
buy_budget— always in quote token (e.g. USDC to spend buying ETH)sell_budget— always in base token (e.g. ETH to sell)
Native ETH. Use address 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE. Never WETH. ETH never requires approval.
Supported chains. ethereum, sei, celo, tac, coti
Strategy Types
| User intent | Tool to use |
|---|---|
| "buy at exactly X" / "sell at exactly X" | carbon_create_limit_order |
| "scale in as price drops" / "DCA into" | carbon_create_range_order (buy) |
| "scale out as price rises" / "sell gradually" | carbon_create_range_order (sell) |
| "buy low sell high forever" / "recurring" / "grid" | carbon_create_recurring_strategy |
| "provide liquidity" / "earn fees" / "concentrated" | carbon_create_concentrated_strategy |
| "full range liquidity" / "widest range" | carbon_create_full_range_strategy |
A range order executes gradually as price moves through the range — correct for "scale in" or "DCA". Do not split into multiple orders.
All 25 Tools
Explore
carbon_get_strategies— all active strategies for a wallet. Always call first.carbon_get_strategy— single strategy by ID — type, status, prices, budgets, trade countcarbon_get_activity— trade and event history for a wallet or strategycarbon_explore_pair— top strategies for a token pair, ranked by trade countcarbon_simulate_strategy— backtest against real historical prices before going on-chaincarbon_resolve_token— fuzzy token symbol/name → on-chain address ("dollar" finds USDC/USDT/DAI)carbon_find_opportunities— discount buys or premium sells vs market pricecarbon_get_protocol_stats— TVL, volume, fees historycarbon_get_price_history— OHLC price data for any token pair
Trade (swap against Carbon liquidity)
carbon_get_trade_quote— swap quote: expected output, rate, strategies used. Always call before execute.carbon_execute_trade— unsigned swap transaction. Requirestrade_actionsfromget_trade_quote.
Create
carbon_create_limit_order— one-time buy or sell at exact pricecarbon_create_range_order— gradual execution across a price rangecarbon_create_recurring_strategy— looping buy+sell, repeats forever, zero gas on fillscarbon_create_concentrated_strategy— two-sided liquidity with a defined spreadcarbon_create_full_range_strategy— two-sided liquidity up to 1000x from market price
Manage
carbon_reprice_strategy— update price ranges onlycarbon_edit_strategy— update prices and budgets in one transactioncarbon_deposit_budget— add funds without interrupting the strategycarbon_withdraw_budget— remove funds without closing the strategycarbon_pause_strategy— pause orders, funds stay, resume anytimecarbon_resume_strategy— reactivate a paused strategycarbon_delete_strategy— permanently close and return all funds
Help & Knowledge
carbon_help— detailed guidance on any tool or full overviewcarbon_learn— protocol concepts: fees, security, marginal price, overlapping liquidity, contracts, SDK, API, and more
Behavior Rules
- Always call
carbon_get_strategiesfirst to check existing positions - Never invent a market price — always ask the user. Never reuse a price from earlier in the conversation.
- Present a strategy proposal and wait for explicit user approval before building a transaction
- Always show the full unsigned transaction (
to,data,value) after creation - Check the
warningsarray in every response — if allowance warning exists, show approval steps before the transaction - When market price is inside a buy range, ask: full range or below market only?
- Full range: omit
buy_price_marginal - Below market only: set
buy_price_marginalto current market price
- Full range: omit
- Overlapping buy/sell ranges: warn but allow — ask user to confirm intent
- Buy price above market: warn and offer to adjust
- Sell price below market: warn and offer to adjust
- For pause: show current prices first, confirm before pausing
- For resume: restore prices only — funds already in strategy, never ask for budgets
- For reprice: call once with all four prices — fill missing side from current strategy state
- For delete: always confirm with user — irreversible
Token Allowances
Before any strategy depositing ERC-20 tokens, check if the Carbon DeFi controller has sufficient allowance. If not, the user must send an approval transaction first.
Note: USDT on Ethereum requires setting allowance to 0 before increasing.
Transaction Verification
All write operations return unsigned transactions. To independently verify calldata before signing:
- Spec: https://docs.carbondefi.xyz/developer-guides/carbon-defi-transaction-encoding
- Covers: contract addresses per chain, function selectors, price encoding, budget encoding, verification checklist
Batch API
Run multiple tools in parallel as a single request (counts against rate limit once):
curl -X POST https://carbon-mcp.duckdns.org/batch \
-H "Content-Type: application/json" \
-d '[
{"tool": "get_strategies", "params": {"owner": "0x...", "chain": "ethereum"}},
{"tool": "get_protocol_stats", "params": {"chain": "ethereum"}}
]'
Rate Limits
- 30 requests/min per IP, burst of 10
- Use
/batchfor parallel calls — counts as 1 request - REST endpoints (
/tools/:toolName) are faster than MCP proxy
Links
- App: https://app.carbondefi.xyz
- Docs: https://docs.carbondefi.xyz
- AI Agents & MCP: https://docs.carbondefi.xyz/ai-agents-and-mcp-integration
- MCP endpoint: https://carbon-mcp.duckdns.org/mcp
- OpenAPI spec: https://carbon-mcp.duckdns.org/openapi.json
- Litepaper: https://carbondefi.xyz/litepaper