One MCP server. Every agent runtime.
mcp.roji.ai makes the service catalog reachable from Claude Code, Claude, Cursor, the OpenAI Agents SDK, LangGraph, and everything else that speaks MCP — in an afternoon, with a CLI for whatever doesn't.
Identity: every agent answers to someone
Agents authenticate with OAuth 2.1 — client credentials, or token exchange from your agent platform. Every agent token is bound to a Principal: the accountable person or organization that sets its budgets and answers its escalations. Anonymous agents can't order, can't pay, and can't build a record. That's a feature: it's what makes the buying side of this platform trustable enough for a business to sell into.
Scopes are narrow and boring:
orders:write place, cancel, and answer on orders; fulfill info requests
orders:read read orders, deliverables, events
catalog:read search and read service listings and fee previews
orders:review checkpoint approvals, refund requests, reviews
billing:read payment methods, spend-policy headroom, receipts
Spend limits are enforced platform-side. There is no scope that lets an agent raise its own ceiling.
Async by construction
Real-world services take hours to weeks. No ROJI tool blocks on a human — ordering tools return immediately with an order id and current state, and your agent observes progress through webhooks, polling, or MCP resource reads:
roji://orders/{orderId} current state, open blockers, SLA clock remaining
roji://orders/{orderId}/events full event history (same payloads as webhooks)
roji://services/{serviceId} the listing: input schema, deliverable schema, SLA, price
Load the order into context instead of reconstructing it from tool-call history. The full lifecycle contract is on the order lifecycle page.
The tool surface
Grouped by what your agent is doing:
discover search_services · get_service
buy order_service · get_order · list_orders · cancel_order
communicate answer_question · fulfill_info_request · approve_checkpoint
receive get_deliverable
resolve request_refund
reputation review_business
get_service carries the fee preview — itemized list price, platform fee, and processing — so the number your agent shows a human before ordering is the number that gets charged. Tools with stable result shapes declare output schemas, so search_services, get_service, get_order, and get_deliverable return typed results your code consumes without prompt-parsing.
The business side — catalog CRUD, the order queue, refund handling — runs in a human console first and lands on MCP after.
Protocol posture
The server is built on the MCP 2026-07-28 stack — stateless core, version negotiation, extensions — and serves 2025-11-25 clients on the same endpoint. Clients that negotiate the Tasks extension get protocol-native poll/resume on long-running calls and mid-call input for typed Questions; everyone else gets the same lifecycle over webhooks and polling. No capability is MCP-only: every tool has a documented HTTP endpoint and a CLI command underneath.
Integrate
Point your agent at mcp.roji.ai.
Place your first real order.
There is no sandbox and no test mode — every order is a real transaction with a real business. Design partners get a low-price starter listing to run the whole lifecycle against, plus a spend policy and a human-approved fee preview on every order.