Per-session MCP tool surface (initialize, tools/list, tools/call) over JSON-RPC.
Per-session MCP tool surface (initialize, tools/list, tools/call) over JSON-RPC. - Rensei REST API operation reference.
AuthorizationBearer <rsk_live_*>Rensei API key presented as Authorization: Bearer rsk_live_. Required API-key scopes are recorded per operation in x-rensei-required-scopes.
sessionId*stringAgent session id.
application/json- body
jsonrpc*stringid?string|number|nullmethod*stringinitialize | notifications/initialized | tools/list | tools/call
params?unknownJSON-RPC 2.0 response (result, or a JSON-RPC error object for method-level failures).
application/json- response
jsonrpc*stringid?string|number|nullresult?unknownerror?curl -X POST 'https://app.rensei.ai/api/mcp/string' \ -H 'Content-Type: application/json' \ -d '{ "jsonrpc": "2.0", "method": "string"}'{ "jsonrpc": "2.0", "id": "string", "result": null, "error": { "code": 0, "message": "string", "data": null }}BYOA MCP facade (JSON-RPC 2.0)
Stateless Streamable-HTTP JSON-RPC 2.0 facade for Bring-Your-Own-Agent (BYOA) hosts. Lets any MCP-capable host dispatch autonomous Rensei agents, poll for audit receipts, and list installed BYOA workflows. There is no server-held session; each request authenticates with an rsk API key, a requester-registration-bound OAuth agent token, a WorkOS user token, or a browser session. Supported methods: - `initialize` - protocol handshake; advertises the `tools` capability and `serverInfo` `{ name: "rensei-byoa-mcp", version: "0.1.0" }`. - `notifications/initialized` - client readiness signal; no response (202). - `tools/list` - lists the three BYOA tools. - `tools/call` - invokes a tool by name with arguments. Tools (each result is JSON-stringified into `result.content[0].text`): - `dispatch` `{ project, goal, workType? }` returns `{ instanceId, sessionId, receiptUrl, streamUrl }`. - `get_receipt` `{ instanceId }` returns `{ receipt }` (assembled v1 dispatch receipt). - `list_workflows` `{}` returns `{ workflows: [{ id, projectId, templateSlug, status, workType }] }`. The credential must carry `dispatch:invoke` (or `*` for an rsk key). REG-10 is request-global and conditional: a registration with a public key signs the exact entire raw JSON-RPC body, including a complete batch array. A strict registration without a public key returns 403. Unbound rsk keys, user tokens, browser sessions, and light registrations without a public key do not sign. Error model: transport/auth failures return literal HTTP statuses (401 missing/invalid credential or signature, 403 missing scope or strict registration misconfiguration, 429 rate limit with `Retry-After`, 503 auth backend stalled past its budget - safe to retry). Tool-level denials and validation errors are returned as a JSON-RPC error object inside an HTTP 200 body - they do NOT surface as HTTP 4xx. JSON-RPC error codes: - `-32700` Parse error - `-32600` Invalid request - `-32601` Method / tool not found - `-32602` Invalid params - `-32603` Internal error - `-32003` Rensei auth-denied (project scope, allowlist, or Cedar policy) - `-32005` Rate limited
Seat scorecard for one project and window.
One call returns the seat scorecard for any window (default: the last 30 days): per project and seat (card revision at dispatch time × model × harness) the seat count, completed/failed/other, the completed seats that delivered over budget (a stored runner budget breach - apart from failures), the review seats' typed verdict mix, the GitHub review mix, dollars per seat, total dollars, tokens per seat, and p50/p90 minutes. Review accuracy is not reported until the outcome writer lands; `unavailableDimensions` names the issue for each metric that has no source yet. The project is an id or slug within the calling credential organization; the credential project fence applies.