Skip to content

Add CTRL plugin#69

Open
daxaur wants to merge 1 commit into
base:masterfrom
daxaur:add-ctrl-plugin
Open

Add CTRL plugin#69
daxaur wants to merge 1 commit into
base:masterfrom
daxaur:add-ctrl-plugin

Conversation

@daxaur

@daxaur daxaur commented Jun 2, 2026

Copy link
Copy Markdown

Summary

Adds CTRL as a Base MCP plugin, sibling of bankr.md.

CTRL is a workflow automation surface on Base. Users compose trigger → action → condition graphs in natural language ("DCA $50 ETH weekly", "snipe Flaunch launches with milady in the name, auto-sell at 2x", "mirror this whale"), sign one EIP-5792 batch to deploy an audited V3 vault + register on-chain maxPerSwap / maxPerDay caps, and a keeper executes triggers autonomously under those caps. After the activation signature, no further user interaction is required.

How it fits Base MCP

  • CTRL doesn't ship its own MCP server — the plugin is pure HTTP against ctrl.build/api/mcp/*.
  • The POST /activate/{workflowId} endpoint returns an EIP-5792 calls[] array designed to be passed directly to Base MCP's send_calls, the same pattern Bankr uses for the swap step.
  • Public API, no auth keys required (the wallet signature at activation is the security boundary).
  • Rate-limited per-IP (10 creates / 10 min, 5 activates / 10 min, 60 reads / min) to bound anon abuse.

Verified contracts on Base mainnet

All three are verified on BaseScan and live in production.

What's in the plugin

  • Frontmatter + Important callout matching bankr.md shape
  • Prerequisite line for the web_request allowlist (downstream walletchan-mcp PR adds ctrl.build to DEFAULT_WEB_REQUEST_HOSTS)
  • Five endpoints with full request/response examples: /block-catalog, /workflows POST, /activate/{id} POST, /vault-status, /execution-logs
  • Field notes on every response shape
  • 23 available blocks listed (9 triggers / 5 actions / 4 conditions / 5 utilities) with the /block-catalog endpoint flagged as the live source of truth
  • Auto-sell config example for sniping flows
  • Safety section: vault-direct model, on-chain caps, kill switches, pool.created.safetyEnabled GoPlus integration
  • End-to-end worked example for the DCA prompt

Test plan

  • Plugin renders cleanly under skills/base-mcp/plugins/ctrl.md
  • All linked endpoints return their documented shapes (curl examples are pasted-and-go against live prod)
  • No new tooling or dependencies
  • Frontmatter matches the format used by bankr.md, morpho.md, etc.

Happy to iterate on the doc style — particularly the placement of the auto-sell snippet and the worked example. Whatever house style works best.

CTRL is a workflow automation surface on Base — users compose
trigger → action → condition graphs in natural language, sign one
EIP-5792 batch to deploy an audited V3 vault + register on-chain
spending caps, and a keeper executes triggers autonomously under
those caps forever.

The plugin follows the same pattern as bankr.md: public API on the
plugin's side, the actual user signature flows through Base MCP's
send_calls. CTRL itself doesn't ship an MCP server — it's purely
HTTP, with the activation batch designed for send_calls handoff.

Key surface area covered:
- /block-catalog (live block schema)
- /workflows (create draft, no auth)
- /activate/{id} (returns EIP-5792 calls[] for send_calls)
- /vault-status (anonymous read by wallet)
- /execution-logs (anonymous read by workflow_id)

ctrl.build needs to be added to webRequest.ts DEFAULT_WEB_REQUEST_HOSTS
in the walletchan-mcp downstream so the agent's web_request calls land;
that's a separate, tiny PR I'll open after this lands. CTRL is verified
on BaseScan and live in production — addresses are listed in the doc.
@cb-heimdall

Copy link
Copy Markdown
Collaborator

🟡 Heimdall Review Status

Requirement Status More Info
Reviews 🟡 0/1
Denominator calculation
Show calculation
1 if user is bot 0
1 if user is external 0
2 if repo is sensitive 0
From .codeflow.yml 1
Additional review requirements
Show calculation
Max 0
0
From CODEOWNERS 0
Global minimum 0
Max 1
1
1 if commit is unverified 1
Sum 2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants