Agent starter templates
Six pre-configured Canopy agents for the most common use cases AI startup developers ship. Built on Claude Agent SDK + Canopy's hosted MCP server. Scaffold any of them with one guided command — no copy-paste from the dashboard.
npx @canopy-ai/create-canopy-agent my-agentWhat the CLI does
The CLI is a fully guided provisioning flow. The only key you paste manually is your Anthropic API key.
- Pick a starter (trading, research, lead-gen, content, treasury, travel).
- Pick agent name + approval threshold (with sensible per-starter defaults).
- Authenticate. Pick one:
- Browser (recommended) — opens a consent page previewing the policy + agent about to be created. On Authorize, the server creates the policy + agent + grant with cleanup on failure and mints a revocable MCP token scoped to the new agent. The CLI never sees your org's primary API key.
- Paste API key — paste an
ak_live_…fromdashboard/settings#api-keys. The CLI calls/api/policies+/api/agentsitself. --api-key <key>flag orCANOPY_API_KEYenv var — non-interactive equivalent of Paste; skips the prompt entirely.
- Scaffold the project locally and write
.env(MCP token for browser, API key for paste).
By the time the CLI exits you have a runnable npm start and a working agent + policy in your dashboard.
Audit provenance — in the browser path, the consent grant row (cli_grants) is bound to the new agents row, so the agent's origin is queryable: "this agent was created via this consent." The paste path doesn't get this property since the API key is reusable for any creation; that's the trade-off you pick when opting into paste mode.
After scaffolding, if you also want Canopy available in your dev tools (Claude Code, Cursor, etc.) while you build, run npx @canopy-ai/sdk connect from the project root.
Approval flow
Each starter ships with a recommended approval threshold, but the CLI lets you override. "No approvals needed" auto-approves every payment under the spend cap — useful if you want unattended runs or are testing within a tight cap.
The starters
| Starter | Use case | Suggested cap | Suggested approval |
|---|---|---|---|
trading-defi-agent | Quote → validate → execute via price feeds + DEXes | $50/24h | $5 |
research-agent | Multi-source research; pays for gated data APIs | $5/24h | $0.50 |
lead-gen-agent | Enrich/verify B2B contacts via per-lead paid APIs | $25/24h | $2 |
content-creator-agent | Pay for stock assets + AI image/voice/video generation | $20/24h | $3 |
treasury-billpay-agent | Pay vendor invoices + recurring subs within budget | $200/24h | $25 |
travel-agent | Search flights/airport schedules; surface options before booking | $5/24h | $0.50 |
Every starter is a small TypeScript project (src/main.ts, src/system-prompt.ts, src/log.ts) that wires Claude Agent SDK to Canopy's MCP server with two HTTP headers (Authorization, X-Canopy-Agent-Id). The system prompt is the per-starter customization; everything else is shared boilerplate.
What gets created in your Canopy org
When the CLI finishes, your dashboard will show:
- A policy named
<starter>-defaultwith the cap, period, approval threshold, and (empty) allowlist preset. - An agent bound to that policy, with the name you chose. Status is
active.
Both are editable in the dashboard. The CLI never touches them again — re-running it creates fresh resources.
Hand-cloning
Don't want to use the CLI? Each starter is a fully self-contained project under canopy-agent-starters/ in the Canopy monorepo. Clone the directory, fill in .env from the values in your dashboard, npm install && npm start.
What about the existing examples?
The agent-examples/ directory still exists and is the right reference for per-framework integration patterns — one chat REPL implemented in three frameworks (anthropic-sdk, vercel-ai, claude-agent-sdk). Use it when you want to see "how do I plug Canopy into framework X." Use the starters here when you want "what kind of agent should I build for use case Y."