About CTRL
CTRL is an MCP server for automating on-chain workflows on Base. Agents assemble trigger, action, and condition graphs, while users sign deployment batches and set vault spending caps; agents do not hold keys.
Key features
- 01Create workflow drafts from prompts
- 02Catalog of workflow blocks and schemas
- 03Encode signed activation and withdrawal batches
- 04Test workflows manually
- 05View execution logs
- 06Vault spending caps and kill switches
Use cases
- 01Scheduling recurring token swaps
- 02Responding to token prices or launches
- 03Copying transactions from watched wallets
- 04Moving funds based on yield comparisons
MCP support
CTRL exposes seven tools to MCP clients for reading vault state, creating and activating workflows, withdrawing funds, testing runs, and viewing logs. It connects over the remote MCP endpoint at ctrl.build/api/mcp.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://www.ctrl.build/api/mcpclaude mcp add --transport http ctrlabs-ctrl https://www.ctrl.build/api/mcp{"mcpServers":{"ctrlabs-ctrl":{"type":"http","url":"https://www.ctrl.build/api/mcp"}}}Open in Cursor{"servers":{"ctrlabs-ctrl":{"type":"http","url":"https://www.ctrl.build/api/mcp"}}}Open in VS Code{"mcpServers":{"ctrlabs-ctrl":{"type":"http","url":"https://www.ctrl.build/api/mcp"}}}{"mcpServers":{"ctrlabs-ctrl":{"serverUrl":"https://www.ctrl.build/api/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
Details
From the project README
ctrl-mcp
the mcp for on-chain automation. sign once, agent does the rest, forever.
ctrl is workflow automation for on-chain actions on base. you compose trigger → action → condition graphs in plain english, sign one batch to deploy a vault + spending caps, and a keeper runs your workflow under those caps forever.
this is the mcp surface. agents talk to it. users sign in their wallet.
$ claude mcp add ctrl https://ctrl.build/api/mcp
or paste into your client's mcp config:
{
"mcpServers": {
"ctrl": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://ctrl.build/api/mcp",
"--header", "Authorization:Bearer ${CTRL_API_KEY}"],
"env": { "CTRL_API_KEY": "sk_ctrl_..." }
}
}
}
mint a key at ctrl.build/settings/api-keys.
prompt your agent. that's it.
what your agent gets
seven tools. that's it.
| tool | what it does |
|---|---|
ctrl_get_vault_status | read user's vault address, balance, active rules |
ctrl_get_block_catalog | live list of every block + field schema |
ctrl_create_workflow | assemble + save a workflow draft from a prompt |
ctrl_activate | encode the eip-5792 batch the user signs to deploy |
ctrl_withdraw | encode the batch to pull funds out of the vault back to the user's wallet (eth, weth, or any erc-20) |
ctrl_fire_manual | fire a workflow once for testing — no waiting |
ctrl_get_execution_logs | basescan tx hashes, gas, status — keeper history |
24 blocks under the hood
triggers — time.interval, trigger.manual, price.above/below/change, pool.created (clanker / flaunch / zora / bankr), watch.whale, event.transfer, event.balance, trending.token
actions — cypher.swap, read.balance, notify.telegram, notify.discord, util.webhook
conditions — cond.price, cond.balance, cond.allowed_weekdays, cond.time_window
utilities — util.delay, util.note, util.log, util.stop, util.snapshot
the agent calls ctrl_get_block_catalog first to see the live shape. every block id maps 1:1 to keeper execution.
example prompts
drop these into your agent and watch:
- "dca $50 eth into usdc every monday at 14:00 utc"
- "snipe new flaunch launches with
miladyin the name, 0.005 eth each, auto-sell at 2x" - "watch wallet 0x6cc5...c01b. when they buy anything over $10k, copy with 0.01 eth"
- "sell 50% of my pepe if price drops 20% in an hour"
- "every monday noon, check moonwell usdc apy. if lower than morpho by 1%, move 80%"
security
vault-direct model. agent never holds keys.
- on-chain caps: every rule signs immutable
maxPerSwap+maxPerDay. enforced by the vault contract. - kill switches:
pauseVault()halts everything;revokeRule(id)kills one workflow. both 1-tx, user-callable. - safety primitives:
pool.createdruns goplus honeypot + tax + score checks before any swap. - keeper bounded: the keeper fleet can only call methods the vault permits. compromised keeper costs at most one tick's per-swap cap.
verified contracts on base:
- v13 vault factory — 0x5Df25e79efd7f9dc86841b404b3EA6F4b7951DBB
- vault implementation — 0xc98137a6df7fb91ab91b568bf923490a278aa702
- timelock beacon — 0x5760A6D62743860F27843fA314E22166dBEF7d73
ecosystem
works with any mcp client. tested with:
- claude code ·
~/.claude.json - claude desktop ·
~/Library/Application Support/Claude/claude_desktop_config.json - cursor ·
~/.cursor/mcp.json - hermes (nousresearch/hermes-agent)
- aeon (aaronjmars/aeon)
- app · ctrl.build
- docs · ctrl.build/docs
- mcp hub · ctrl.build/mcp
- sibling repo · ctrl-skill
mit
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.