Air traffic control for AI agents.
Your agents are already flying. Smartplane is the tower: one MCP connection, access by role, plain-English rules checked before every action, and every movement on the record.
| Time | Agent | On behalf of | Requests | Status | Because |
|---|
Every row is one tool call from an agent. Cleared means a grant matched, holding means a rule wants a human, denied means a rule or a missing grant said no. Click a row: that strip is the audit record.
Right now, the sky is open.
Every engineer files their own flight plan: personal tokens, a prod database URL in a dotfile, MCP servers nobody reviewed.
When someone leaves, their agent keeps flying. Nobody can say who reaches what, and nothing stops a destructive call before it runs.
- Which agents can write to the billing database?
- Who gave the support bot a Stripe key?
- What did an agent delete last Tuesday, and for whom?
// ~/.cursor/mcp.json on one laptop, today
{ "mcpServers": {
"github": { "env": { "TOKEN": "ghp_…(org admin)" } },
"postgres": { "args": ["postgres://admin@prod-db/main"] },
"stripe": { "env": { "KEY": "sk_live_…" } },
"gdrive": { "env": { "SCOPE": "drive (full)" } },
"linear", "slack", "sentry", "hubspot",
"zendesk", "cloudflare", "internal-billing-api"
} }
// × every engineer, × every agent they use
No owner, no expiry, no record. Multiply by headcount.
One URL in. Every move logged.
The tower sits between your agents and everything they touch. Four things happen on every call.
-
Connect once
Each person adds one MCP URL to Claude Code, Cursor, ChatGPT or your own agent. No keys on laptops, no per-server setup.
They see only the tools their role, team and project allow, so the agent never even learns the rest exist.
# Claude Code claude mcp add --transport http smartplane \ https://mcp.smartplane.dev/acme // or any MCP client { "mcpServers": { "smartplane": { "url": "https://mcp.smartplane.dev/acme" } } } -
Clearance by role
Grants say who gets what: users, teams, roles or service accounts, to tools, MCP servers, databases, APIs, secrets and variables.
Databases start read-only. APIs are limited to the methods and paths you list. Secrets are injected server-side and never shown to an agent. Every grant can expire.
Who Gets How Until Team Platform GitHub MCP Read and write Ongoing Role Support Zendesk API GET, POST /tickets/* 30 Nov Team Data Warehouse (Postgres) Read-only Ongoing nightly-report Secret STRIPE_KEY Injected, never shown 90 days maya.chen prod-db Read-only, break-glass 4 hours -
Rules before every action
Before a call runs, a classifier checks it against your rules, written in plain English. It can block, flag, or hold the call for a human.
If the classifier can't answer and an enforcing rule applies, the call is denied. The tower fails closed.
Nobody deletes reports from the Q3 folder.
Claude Code, for li.wong, asks for drive.delete /Reports/Q3/board-deck.pdfDenied before it ran -
Everything in the black box
Every call, grant change, approval and denial is written to an append-only log, hash-chained per organisation, so a missing or edited entry breaks the chain.
Export it as evidence for your auditor, or stream it to your SIEM.
- 48 211drive.delete denied, rule R-1
a91f…03 → 7c2e…b8 - 48 212stripe.refund held for Finance
7c2e…b8 → e04d…91 - 48 213Grant G-31 expired
e04d…91 → 15ab…6f - 48 214Refund approved by j.okafor
15ab…6f → c3d0…2a
- 48 211drive.delete denied, rule R-1
Rules in plain English.
Say what must never happen and who decides the edge cases. No policy language to learn. Each rule has a mode: block it, hold it for a named approver, or let it through and flag it for review.
Nobody deletes reports from the Q3 folder.
BlockApplies to everyone, every agentOnly the finance team can issue refunds over $500.
Hold for FinanceAnyone else waits for an approverNo agent drops or truncates a production table.
BlockEven with a write grantFlag any export of more than 1,000 customer records.
FlagRuns, then lands in the review queue

Holding at the gate
- Request
- stripe.refund, $1,240 to customer 88213
- Agent
- support-bot, for dana.ruiz (Support)
- Rule
- Only the finance team can issue refunds over $500.
- Approvers
- Anyone in Finance except the requester
If the classifier is down, enforcing rules deny. A tower that guesses is not a tower.
Every movement on the record.
Tamper-evident log
Append-only and hash-chained per organisation, written by a single serialised writer. Export JSON or CSV evidence for SOC 2 auditors in a click.
Leavers are grounded
SSO and SCIM through WorkOS. One offboarding path turns off the membership, revokes tokens and direct grants, and removes team memberships in the same request.
Secrets stay sealed
Envelope-encrypted with AES-GCM. Plaintext is never stored, logged, returned by the API or shown to an agent; Smartplane injects it at call time.
Tokens that die
Access tokens are stored as SHA-256 hashes, expire in 90 days at most, and stop working the moment the membership does.
Access reviews
Scheduled reviews put every grant in front of its owner: keep it or revoke it, and the decision goes in the log. Nobody approves their own request.
On Cloudflare's edge
The gateway runs on Cloudflare Workers close to your people, with per-organisation isolation. Built to SOC 2 controls from the first commit.
Choose your airspace.
Start free in minutes with your own team. Move to Enterprise when security wants SAML, SCIM and evidence exports.
| StarterFreeFor one team trying it out | Team$15Per person, per month, for a company rolling out agents | EnterpriseCustomAnnual, for security and compliance sign-off | |
|---|---|---|---|
| People | Up to 5 | Unlimited | Unlimited |
| Upstream MCP servers, APIs, databases | 3 | Unlimited | Unlimited |
| Grants by user, team and role | Yes | Yes | Yes, plus projects |
| Plain-English rules | 3 rules | Unlimited, with approvals | Unlimited, with approvals |
| Audit log retention | 7 days | 1 year | Custom, with evidence export |
| Sign-in | Google, GitHub | Google, Microsoft | SAML / OIDC SSO, SCIM |
| Access reviews, DPA, support SLA | No | No | Yes |
| Start free | Start a 14-day trial | Talk to us |
Bring your agents under the tower.
Sign up, connect your first MCP server, write one rule, and send your team one URL. The tower is working from the next call.