Set your agents loose.
Bound the blast radius.
Connect your accounts once. Grant each agent the individual capabilities it needs, with the parameters pinned to values you choose. A key that can post to #dev-log cannot post anywhere else, read your inbox, or refund a Stripe charge, no matter what the agent is talked into.
You already run with --dangerously-skip-permissions. Clawband is what makes that a reasonable thing to do.
Free tier · usage-based after · no card
- agent
- my-coding-agent
- capability
- slack.send_message
- account
- dev-workspace
- pinned
- channel_id = #dev-log
agent sends
{
"method": "tools/call",
"params": {
"name": "slack_send_message__dev_workspace",
"arguments": {
"channel_id": "#general",
"text": "shipping now"
}
}
}gateway refuses · 400
{
"error": "parameter channel_id must equal #dev-log",
"code": "INVALID_PARAMETERS",
"shouldRetry": false
}The call never reached Slack. No token was spent, nothing was posted, and the attempt is in your audit log.
The problem
A credential has no way to say “only this much.”
scope
A raw API key is an all-or-nothing grant
A Stripe key can refund any charge, for any amount, to any account. There's no way to write down "only refund up to $50, only for this customer" anywhere, because the provider's API has no place to put it. So the narrowest thing you can hand an agent is still everything you can do.
setup
Every service wants its own OAuth dance
Wiring an agent to Gmail, Notion, GitHub, Linear, and Stripe means five OAuth apps, five sets of scopes, and five token refreshes, all before you've written a single prompt. And the moment you swap agents, you do it all again.
recall
The record is scattered across a dozen dashboards
Your agent's work lands in Stripe, Gmail, GitHub, and Slack, and each keeps its own log in its own format, if it keeps one at all. Answering "what did this agent do today?" means opening twelve tabs and reconstructing a timeline by hand.
How it works
Connect once. Grant narrowly. Refuse the rest.
- 01
Connect your accounts
Sign into Stripe, Gmail, GitHub, Notion, or whatever else you use, once, in the Clawband dashboard. Tokens are encrypted and stay in the gateway. Your agent never sees them.
stripe · connected gmail · connected github · connected notion · connected - 02
Grant capabilities. Pin the parameters.
Issue a Clawband key per agent, then grant it individual capabilities rather than whole APIs. Constrain the parameters on each grant: only this Slack channel, only this Notion database, refunds up to $50. A prompt injection can argue with your agent, but it can't widen a grant.
agent: my-coding-agent + github.create_issue + github.list_pulls + slack.send_message channel_id = #dev-log # pinned - 03
Point your agent at one endpoint
Drop the key into Claude Code, OpenClaw, Cursor, or your own runtime via MCP, or POST JSON to /v1/actions:execute. Clawband enforces the policy on every call and writes an audit entry for each one.
POST /mcp { "method": "tools/call", "params": { "name": "slack_send_message__dev_workspace", ... } }
Code
One line to wire up. The tools your agent sees are the tools you ticked.
Clawband speaks native MCP and a plain HTTP endpoint. The tools/list your agent gets back holds one tool per grant, and nothing else. Ungranted capabilities aren't hidden behind a permission error; they never appear. Your parameter pins ride along in each tool's description, and the gateway enforces them on every call whether the agent respects them or not.
# MCP setup (one line)
claude mcp add clawband \
--transport http \
--url https://api.clawband.io/mcp \
--header "Authorization: Bearer cb_live_a8f3…"Integrations
129 services your agent can use.
- 1Password Connect
- Airtable
- Alpaca
- Amadeus
- Amazon Web Services
- Anthropic
- Apple Calendar (iCloud)
- Apple Contacts (iCloud)
- Asana
- Atlassian Statuspage
- Auth0
- Backblaze B2
- Binance
- Bitbucket
- Bluesky
- Buffer
- Calendly
- Canvas LMS
- CircleCI
- ClickUp
- Cloudflare
- Cloudinary
- Coinbase
- Datadog
- DigitalOcean
- Discord
- Docker Hub
- DocuSign
- Doppler
- Dropbox
- EasyPost
- eBay
- Fastmail
- Fitbit
- FreshBooks
- GitHub
- GitLab
- Gmail
- Google Calendar
- Google Cloud Platform
- Google Contacts
- Google Docs
- Google Drive
- Google Meet
- Gumroad
- Gusto
- Heroku
- Hetzner Cloud
- Home Assistant
- HubSpot
- Intercom
- Jira Cloud
- Kraken
- LastPass (Enterprise)
- Linear
- Mailchimp
- Mastodon
- Mercury
- Microsoft Azure
- Microsoft Teams
- monday.com
- MongoDB Atlas
- n8n
- Neon
- Netlify
- New Relic
- ngrok
- Notion
- npm Registry
- Okta
- OneDrive
- OpenAI
- Opsgenie
- Outlook Calendar
- Outlook Contacts
- Outlook Mail
- PagerDuty
- Patreon
- PayPal
- Philips Hue
- Pinecone
- Plaid
- Porkbun
- Postman
- PrintNode
- Privacy.com
- Pushover
- PyPI
- QuickBooks Online
- Raindrop.io
- Readwise + Reader
- Render
- RescueTime
- Resend
- Retell AI
- Samsung SmartThings
- SendGrid
- Sentry
- Shopify
- Slack
- Snyk
- Splitwise
- Spotify
- Square
- Strava
- Stripe
- Supabase
- Tailscale
- Telegram
- Tesla
- Todoist
- Toggl Track
- Trakt.tv
- Trello
- Twilio
- Twitch
- Upstash
- UptimeRobot
- Vercel
- Vultr
- Wave Accounting
- WhatsApp Business
- Wise
- Xero
- YNAB
- YouTube
- Zendesk Support
- Zoom
Adding one more is a connector service and a row in the registry. No gateway change.
Security & policy
If your agent's key leaks, the blast radius stays small.
Policy at the edge
allowlist
Per-agent capability grants
Each Clawband key carries an explicit list of capabilities it can call. Everything else is invisible to that agent, even where the provider's API supports it.
my-coding-agent:
- github.create_issue
- github.list_pullspinning
Parameter pinning
Lock specific parameters to constants, ranges, or an allowed set. The gateway checks every call against the policy before it reaches the provider, so it holds whether or not the agent cooperates.
slack.send_message:
channel_id: "#dev-log" # pinnedscopes
Minimal OAuth scopes
Each capability declares the scopes it needs. When you connect a provider, Clawband asks for the union of the scopes your enabled capabilities require, and nothing speculative on top.
enabled:
github.create_issue, github.list_pulls
requested scope:
public_repo # not `repo`Custody & recall
custody
Credentials never reach the agent
Provider tokens are envelope-encrypted at rest and decrypted only inside the gateway, for the duration of one call. The agent holds a Clawband key and nothing else, so there is no provider credential in its context to leak, log, or be talked out of.
agent → cb_live_a8f3… (scoped, revocable)
gateway → provider token (encrypted at rest)audit
Per-call audit log
Every call writes an entry: timestamp, agent key, capability, integration account, outcome, error code, and latency. Payloads are deliberately not persisted, so the log tells you what your agents did without becoming a second copy of your data.
2026-05-26T11:04:12Z my-coding-agent
slack.send_message acct=dev-workspace
status=ok latency=412msreplay
Replay-safe by default
Every execution requires an idempotency key. When an agent retries a call it is unsure about, and agents retry constantly, the gateway returns the original result instead of sending the charge, the email, or the message a second time.
Idempotency-Key: 5f2c… → 1 message sent
Idempotency-Key: 5f2c… → same result, no resendFAQ