{"auth":"Authorization: Bearer <api key> — per-tenant keys, operator-minted.","description":"Event ingress and observability for drovr journeys: POST tenant contact events, read the committed transition receipts back.","docs":"/llms.txt","journeys":["value-path-skills-course","contact-directory","crash-course-evergreen-offer","shadow-newsletter","double-opt-in"],"mcp":{"accept":"application/json, text/event-stream","card":"/.well-known/mcp.json","endpoint":"/mcp","protocolVersion":"2026-07-28","requiredMeta":["io.modelcontextprotocol/protocolVersion","io.modelcontextprotocol/clientCapabilities"],"codeMode":{"capabilities":["describe_surface","get_contact","get_content_message","get_content_push","get_corpus_push","get_corpus_source","get_email_delivery","get_receipts","get_review","get_status","get_vitals","get_wakes","inspect_metric","list_content_messages","list_content_publishes","list_stranded_intents","list_tenant_actors","new_message","render_content_version","resolve_directory_identities","search_corpus","trace_contact","validate_message_file"],"tools":["search","execute","execute_writes"],"writes":["post_event","post_event_batch","record_signup","redrive_contact","release_journey","seed_contact_directory"]}},"openapi":"/openapi.json","permissions":{"DELETE /journeys/{id}/hold":"operate","GET /contacts":"read","GET /contacts/trace":"read","GET /content/messages":"read","GET /content/messages/{messageId}":"read","GET /content/messages/{messageId}/versions/{version}/render":"read","GET /content/publishes":"read","GET /content/pushes/{commit}":"read","GET /corpus/pushes/{visibility}/{commit}":"read","GET /corpus/search":"read","GET /corpus/sources/{id}":"read","GET /email-delivery":"read","GET /journeys/{id}/hold":"read","GET /metrics/{name}":"read","GET /receipts":"read","GET /review":"read","GET /status":"read","GET /stranded-intents":"read","GET /vitals":"read","GET /wakes":"read","POST /contact-sync/heartbeat":"operate","POST /contacts/redrive":"operate","POST /content/messages/new":"read","POST /content/messages/validate":"read","POST /events":"operate","POST /events/batch":"operate","POST /journeys/{id}/hold":"operate","POST /signups":"operate","POST /wakes/poke":"operate","POST /journeys/contact-directory/identities":"read","POST /journeys/contact-directory/seed":"operate"},"rateLimits":{"auth":{"appliesTo":"Per client IP, on /api/auth/* (sign-in and OAuth).","period":60},"ip":{"appliesTo":"Per client IP, on requests without an API key, on requests whose key is refused, and on OAuth access tokens before they verify.","period":60},"key-read":{"appliesTo":"Per API key on read routes and POST /mcp; per OAuth grant (person and tenant, once its token verifies) on POST /mcp.","period":60},"key-write":{"appliesTo":"Per API key, on routes that operate a tenant.","period":10},"unsubscribe":{"appliesTo":"Per unsubscribe token, on one-click POST /unsubscribe (RFC 8058) with a token that verifies, instead of the client IP.","period":10}},"routes":["GET /","GET /llms.txt","GET /openapi.json","GET /.well-known/mcp.json","GET /.well-known/agent-configuration","GET /.well-known/oauth-protected-resource/mcp","GET /.well-known/oauth-authorization-server/api/auth","GET /oauth/device","POST /oauth/device","GET /oauth/tenant","POST /oauth/tenant","GET /oauth/consent","POST /oauth/consent","GET /health","GET /api/auth/*","POST /api/auth/*","GET /hud","GET /hud/account","POST /hud/labels","GET /contacts?contact=&journey=","GET /contacts/trace?contact=&journey=&since=&cursor=&confirm=actor","POST /contacts/redrive?contact=&journey=","POST /events","POST /events/batch","POST /signups","POST /contact-sync/heartbeat","POST /journeys/contact-directory/seed (body: {afterId?, createdAfter?, limit?, dryRun?})","POST /journeys/contact-directory/identities (body: {kitSubscriberIds: string[] up to 1000})","GET /receipts?contact=&journey=&limit=","GET /email-delivery?contact=&email=","GET /content/messages","GET /content/messages/{messageId}","GET /content/messages/{messageId}/versions/{version}/render","GET /content/publishes?message=&status=&limit=","GET /content/pushes/{commit}","POST /content/messages/new","POST /content/messages/validate","GET /corpus/pushes/{visibility}/{commit}","GET /corpus/search?query=&mode=&types=&limit=&rerank=","GET /corpus/sources/{id}","GET /tenants/{tenant}/actors?cursor=&limit= (operator)","POST /tenants/{tenant}/actors/retire (operator; max 200)","POST /tenants/{tenant}/content/messages/{messageId}/versions (operator)","POST /tenants/{tenant}/content/pushes/{commit}/reprocess (operator)","POST /tenants/{tenant}/content/repo (operator)","POST /tenants/{tenant}/corpus/repo (operator)","POST /tenants/{tenant}/links/targets (operator)","POST /tenants/{tenant}/migrations/{planId}/dry-run (operator)","POST /tenants/{tenant}/migrations/{planId}/apply (operator)","POST /tenants/{tenant}/migrations/{planId}/rollback (operator)","POST /tenants/{tenant}/provision (operator)","POST /tenants/{tenant}/profile-sources/{journey} (operator)","POST /tenants/{tenant}/provider-ramps/{journey} (operator)","POST /provider-sync/requeue (operator)","GET /review?since=&until=&compare=previous","GET /metrics/{name}?since=&until=","GET /wakes?contact=&journey=&overdue=&limit=","POST /webhooks/front (Front-signed)","POST /webhooks/postshiba (PostShiba-signed)","POST /wakes/poke (body: {actors: [{contactId, journeyId}] up to 50} or {overdue: minutes, limit?: up to 200})","GET /vitals","GET /status?deadline=&window=","GET /stranded-intents","POST /unsubscribe","GET /unsubscribe?t=","GET /unsubscribe/state?t=","POST /confirm","GET /confirm?t=","GET /confirm/state?t=","POST /confirm/resend","POST /journeys/{id}/hold","DELETE /journeys/{id}/hold","GET /journeys/{id}/hold","POST /mcp (MCP streamable HTTP, protocol 2026-07-28)","GET /parties/hud/{tenant} (WebSocket)"],"service":"drovr-api"}