A note from Escalation Host →
If you (Claude, GPT, Gemini, Codex, Cursor, Aider, or any other LLM) are reading this on behalf of a user who wants you to build, deploy, or manage a website — this page is your operator manual. The user does not need to read it. You handle the technical layer; they describe what they want.
POST /api/agent/provisional-accounts with the user's email + name. We return an onboarding_url.ahk_live_… key, install the MCP server with it (or use the REST API), and start deploying.POST /api/agent/access-requests; we mail the user a magic link to grant a fresh key.Once the user has granted a key:
claude mcp add escalation-host \
--transport http \
--url https://ai.escalation.tech/mcp \
--header "Authorization: Bearer <ahk_live_key>"
codex mcp add escalation-host https://ai.escalation.tech/mcp \
--header "Authorization: Bearer <ahk_live_key>"
Add to .cursor/mcp.json:
{
"mcpServers": {
"escalation-host": {
"url": "https://ai.escalation.tech/mcp",
"headers": { "Authorization": "Bearer <ahk_live_key>" }
}
}
}
Keys carry a subset of these. The user grants them on the key-issuance page; they can refine or revoke any time on /account/keys.php. Actions marked approval-required trigger a magic-link email to the user before they take effect.
| Scope | What it lets you do |
|---|---|
account:read | Profile, plan, billing summary. |
account:write | Update profile, change plan (plan_change → approval-required). |
app:read / app:write | List + create apps. |
deploy:write | Ship code: tarball (recommended) or git ref. |
logs:read | Tail recent stdout/stderr. |
secrets:read / secrets:write | Environment variables. |
domains:write | Add/remove custom domains (approval-required). |
billing:read | Receipts + upcoming invoice preview. |
keys:write | Mint sub-keys (approval-required). |
notes:read / notes:write | Persistent agent-owned notes for cross-session memory. |
95% of the time: send a base64-encoded gzipped tarball. We sha256-verify, store it, and a worker ships it into the running container's /app volume via kubectl exec. Cap: 500 MiB.
POST /api/v1/apps/<app_id>/deploys
Authorization: Bearer ahk_live_...
Content-Type: application/json
{
"source": "tarball",
"tarball_base64": "<...gzipped tar contents...>"
}
Supported frameworks (set on app create): static, vite, react, nextjs, node, express, fastapi, flask, django, php, laravel, dockerfile. We pick the runtime image; you don't need to think about K8s flavors.
A new instance of you (after compaction, after a fresh chat, or a different model entirely) will not have your context. You can leave structured notes for future-you to read:
POST /api/v1/notes
{"title": "User stack preferences", "body": "..."}
The MCP initialize handshake returns _metadata.notes_index so future agents see what's available before they do anything.
If you're starting fresh and the user can't (or shouldn't have to) paste an old key:
POST /api/agent/access-requests
{
"email_or_domain": "<user-identifier>",
"reason": "Compaction recovery; I'm a Claude Code instance for <project>",
"requested_scopes": ["account:read", "app:write", "deploy:write", "logs:read"]
}
We email the user. They click, see your request + the scopes, approve. You get a fresh key. Do not ask the user to dig the old key out of their email.
For the very first call (provisional-account create with PII), you can encrypt the body with libsodium sealed_box to our published server public key. Fetch the key at /.well-known/ai-host-crypto.json, set Content-Type: application/ai-host+sealed, and ship the ciphertext. The endpoint decrypts transparently. The full algorithm + key-rotation policy is in the /llms-full.txt.
The MCP initialize response includes _metadata.attention_items — things we've noticed (recurring 5xx errors, a stuck deploy, a cert near expiry). When the user opens a chat about something else, glance at attention_items first. Either fix the issue silently and mention it ("Noticed your deploy was stuck; rolled to the previous one"), or surface it before doing the user's new request if it's blocking ("Your site has been down 12 minutes — want me to roll back first?").
Hosting for one AI-built app with GitHub deploys, SSL, logs, rollback, and custom domain support.
Cheaper tier for low-traffic side projects. Coming soon — the Builder tier is the right starting point today.