Developer Experience
The OrbitKit MCP server: manage App Store web compliance from an AI agent
OrbitKit hosts a Model Context Protocol server so Claude, Cursor, and other MCP clients can generate and deploy your privacy policy, AASA, and more. How it works.
If you drive your development from an AI agent — Claude, Cursor, or any Model Context Protocol client — the web side of App Store compliance can be part of that loop instead of a context switch. OrbitKit hosts an MCP server at https://mcp.orbitkit.io/ that exposes the same operations as the CLI and dashboard as MCP tools, so an agent can read your privacy policy, update your AASA config, generate a PrivacyInfo.xcprivacy, and deploy — all from the conversation.
This is how it works, what tools it exposes, and the safety model.
For what these files are and why Apple requires them, see every URL and file Apple requires for an iOS App Store submission.
What it is
A hosted MCP server speaking JSON-RPC 2.0 over HTTPS, authenticated with the same ORBITKIT_API_KEY Bearer token as the CLI. Point any MCP client at it:
{
"mcpServers": {
"orbitkit": {
"url": "https://mcp.orbitkit.io/",
"headers": { "Authorization": "Bearer ok_live_…" }
}
}
}
(Exact client config syntax varies — Claude Code, Claude Desktop, and Cursor each have their own MCP config file; the server URL and Bearer header are the constants.)
The tool surface
The server exposes ~30 tools mirroring the dashboard. Read tools have no side effects; write tools are explicit:
| Group | Tools |
|---|---|
| Identity | whoami, list-apps |
| Site | get-site, update-site, get-custom-homepage-html, set-custom-homepage-html |
| Privacy policy | get-policy, update-policy |
| Support / deletion | get-support-page, update-support-page, get-deletion-page, update-deletion-page |
| AASA | get-aasa, update-aasa |
| Smart App Banner | get-banner, update-banner |
| TestFlight | get-testflight, update-testflight |
| Privacy manifest | get-privacy-manifest, update-privacy-manifest, sync-privacy-manifest-from-wizard, download-privacy-manifest, get-privacy-manifest-reference |
| Domains | check-domain-status, set-domain, remove-domain |
| Lifecycle | create-app, delete-app, deploy, subscribe |
A read like whoami returns the same JSON shape as GET /api/account ({profile, stats, paymentMethod, subscription}) — agents that know the REST shape already know the MCP shape.
What an agent can do with it
A representative agent loop:
You: "Set up the App Store privacy policy for my new app and deploy it."
Agent → create-app { appName: "Capybara Cam" }
Agent → update-policy { appId, policy: { app-info: {...},
data-collection: { collects_data: true, data_types: [...],
purposes: [...] }, ... } }
Agent → update-support-page { appId, contactEmail: "help@…", faqItems: [...] }
Agent → deploy { appId }
Agent ← "Deployed at https://sites.orbitkit.io/capybara-cam — privacy
policy, support page, and AASA file are live."
The agent never has to leave the conversation to open a dashboard, and because the privacy manifest, policy, and nutrition-label answers come from one source, the three surfaces App Review cross-checks stay consistent (the thing that causes the data-mismatch rejection email).
Safety model
The destructive and billable operations are deliberately separated so an over-eager agent can’t surprise you:
- Read tools (
get-*,list-apps,whoami,download-privacy-manifest) — no side effects, safe to call freely. - Write tools (
update-*,set-*) — modify config but are idempotent; a get→update round-trip with the same data is a no-op. deploypublishes to your live hosted site.subscribeis billable.delete-appis destructive. Treat these like the agent treatsgit push— explicit user intent, not autonomous.- Auth is per-API-key; scope and rotate keys in the dashboard. The MCP server enforces the same rate limits and per-app access checks as the REST API.
A good agent harness will gate deploy / subscribe / delete-app behind explicit confirmation. The server doesn’t assume the client does, so design your automation accordingly.
CLI vs MCP — which to use
| CLI | MCP server | |
|---|---|---|
| Best for | CI/CD pipelines, scripts | AI-agent-driven dev (Claude/Cursor) |
| Invocation | orbitkit <cmd> in a shell |
tool calls from an MCP client |
| Auth | ORBITKIT_API_KEY env |
Authorization: Bearer header |
| Output | text or --json |
structured tool results |
| Same operations | Yes | Yes |
They’re two front-ends to the same API. Use the CLI in GitHub Actions; use the MCP server when an agent is doing the work.
Related
- The OrbitKit CLI — the scriptable counterpart.
- Every URL and file Apple requires
- iOS privacy policy generator
Create an API key to connect an agent — start free or see the full feature list.