{
  "name": "phone-agent-cloud",
  "version": "0.1.0",
  "description": "Cloudflare Worker middle layer: AI (MCP) → task queue → phone outbound poller → phone-agent primitives.",
  "transport": {
    "mcp": "Streamable HTTP (stateless)",
    "endpoint": "https://phone.mergio.app/mcp",
    "auth": "Authorization: Bearer <api_key>  (create via POST /admin/keys)",
    "note": "SSE / McpAgent are deprecated; use createMcpHandler + /mcp."
  },
  "how_to_connect": {
    "cursor_mcp": {
      "url": "https://phone.mergio.app/mcp",
      "headers": {
        "Authorization": "Bearer pac_..."
      }
    },
    "grok_bot": "Add as remote MCP / connector pointing at /mcp with the API key."
  },
  "how_to_use": {
    "tools": [
      "status",
      "exec",
      "screenshot",
      "input",
      "ui",
      "file"
    ],
    "flow": [
      "1. Create an API key from the admin panel or POST /admin/keys",
      "2. Register the phone poller via POST /device/register; keep the device token",
      "3. Run phone-poller on the phone (or via adb reverse + local agent)",
      "4. Point an MCP client at /mcp with the API key; tools enqueue tasks",
      "5. Poller long-polls /device/poll, executes, POSTs /device/complete"
    ],
    "cloud_upgrade": "Phone polls GET /device/apk/latest (device token); if version_code > installed, GET /device/apk/download?v=N, verify sha256, pm install -r.",
    "hard_floor": "exec blocks classic rm -rf / only; more ACLs later"
  },
  "endpoints": {
    "GET /": "This document",
    "POST /mcp": "MCP Streamable HTTP",
    "POST /admin/keys": "Create API key (ADMIN_TOKEN)",
    "GET /admin/keys": "List keys",
    "POST /admin/keys/:id/rotate": "Rotate key",
    "DELETE /admin/keys/:id": "Revoke key",
    "GET /admin/audit": "Audit log",
    "GET /admin/devices": "Registered devices",
    "POST /device/register": "Register phone (returns time-limited token)",
    "POST /device/renew": "Renew device token",
    "POST /device/poll": "Long-poll for a task (204 if idle)",
    "POST /device/complete": "Report task result",
    "POST /admin/apk?version_code=&version_name=&sha256=": "Upload APK bytes (application/octet-stream, ADMIN_TOKEN) to R2",
    "GET /admin/apk": "List uploaded APKs (ADMIN_TOKEN)",
    "GET /device/apk/latest": "Cloud upgrade: latest {version_code,version_name,sha256,size} or 204 (device token)",
    "GET /device/apk/download?v=N": "Cloud upgrade: stream APK bytes (device token)"
  }
}