Skip to content
synthrank.

Docs

Connect an agent

SynthRank exposes the same Autopilot loop over HTTPS and MCP. Create a scoped API key in Settings → API Keys, then point your agent at the MCP endpoint. You need a workspace first. Create an account at /login?mode=signup to get started.

MCP

{
  "mcpServers": {
    "synthrank": {
      "url": "https://synthrank.com/functions/v1/mcp",
      "headers": {
        "x-api-key": "sr_...",
        "x-synthrank-tenant": "<tenant-uuid>"
      }
    }
  }
}

REST

curl -X POST "https://synthrank.com/functions/v1/agent-api" \
  -H "x-api-key: sr_..." \
  -H "Content-Type: application/json" \
  -d '{"action":"get_workspace","tenant_id":"<tenant-uuid>"}'

Rate limits & quotas

content-api and content-write don't enforce a request-rate limit today. Call them as fast as your integration needs, scoped to your key's workspace.

Generating articles (start_runs, start_article) draws from your workspace's monthly Autopilot run cap, and tool calls that chain through more than one SynthRank function server-side (blog CRUD, Autopilot's crawl/run tools) share Supabase's platform-wide budget of at least 5,000 requests/minute per request chain. The real status and body for both depend on which transport you call — it is not one shape everywhere.

REST (POST /agent-api, or POST /agent-mcp/<tool_name>) returns real HTTP statuses:

Quota exceeded:
HTTP 409
{ "error": "Monthly Autopilot quota exceeded (13 of 13 used; 0 left, requested 1)" }

Chain rate limit exhausted:
HTTP 429
Retry-After: <seconds>
{ "error": "Too many chained SynthRank requests right now. Wait for the given delay, then retry.", "retry_after_seconds": <seconds> }

The quota one resets at the start of next month (UTC) — there's no short retry delay for it. Check what's left anytime with get_workspace (quota: { used, cap, remaining }), the same number shown live in the dashboard under Settings → Publishing.

MCP JSON-RPC (tools/call over /mcp or /agent-mcp — what Cursor, Claude, or any MCP client actually uses) wraps every tool error the same way instead, with no distinct HTTP status and no Retry-After header for either case:

HTTP 200
{ "jsonrpc": "2.0", "id": 1, "result": {
    "content": [{ "type": "text", "text": "{\"error\":\"Monthly Autopilot quota exceeded (13 of 13 used; 0 left, requested 1)\"}" }],
    "isError": true
} }

If you're driving an agent over MCP, don't wait for an HTTP 429 or 409 — check result.isError on every tools/call response and parse the error text. Full detail in AGENT-INTEGRATION.md's “Rate limits & quotas” section.

Ops / support agents

Customer support is agent-led. Superadmins issue a sr_ops_ key from Customers. Point the support agent at ops-mcp with no tenant header. The agent can list tickets, look up workspaces, and reply. Humans take over only when needed.

Email is AgentMail on synthrank.com: support@synthrank.com for triage, hello@synthrank.com for general mail, and nova@synthrank.com for the ops agent mailbox.

{
  "mcpServers": {
    "synthrank-ops": {
      "url": "https://synthrank.com/functions/v1/ops-mcp",
      "headers": { "x-api-key": "sr_ops_..." }
    }
  }
}

See llms.txt and AGENT-INTEGRATION.md in the repo for the full tool list.