Developer API overview
Three ways to consume publisher content programmatically: MCP, REST, A2A.
Oasy exposes every publisher's licensed content over three protocols, all
backed by the same index, the same policy engine, and the same licensing
rules:
| Surface | Best for | Auth |
|---|---|---|
| MCP (Streamable HTTP, JSON-RPC 2.0) | Agents in Claude, ChatGPT, Cursor, and any MCP host | None, or OAuth 2.1 when the publisher requires it |
| REST API | Your own backend, scripts, non-MCP stacks | None (when the publisher opts in) or a buyer API key |
| A2A (Agent2Agent JSON-RPC) | A2A-native agent frameworks | None (publisher opt-in) |
Base URLs
- Per-publisher vanity host (preferred):
https://oasy.<publisher-domain>
— MCP at/mcp, REST under/api/v1/…, A2A at/a2a, agent card at
/.well-known/agent-card.json. - Platform origin (works for every publisher, no CNAME needed):
https://api.oasy.ai— MCP at/api/mcp/<publisherId>,
A2A at/api/a2a/<publisherId>. REST requires a vanity host (it resolves
the publisher from the hostname).
One API key for everything
Sign up on the marketplace and you get a single
mk_… API key that:
- unlocks REST access to every publisher (even ones that haven't
opted into anonymous public REST), - carries your licenses (subscriptions you've purchased) and
metered pay-per-use billing (consume first, settle monthly), - ties your MCP installs' usage into one consolidated usage report and
monthly statement.
Send it as a bearer token: Authorization: Bearer mk_….
What every response respects
- Access policy per article —
OBSERVE/ADVERTISE/PAYWALL
(metered) /BLOCK. - Use-case license rights — summarization / display /
rag / fine-tuning; full text is thedisplayright. - Content rules — publisher-defined path patterns, embargo windows,
and territorial restrictions, evaluated at serve time (territory
refusals return HTTP451).
Service levels
Uptime, latency percentiles, and error rates are published live — see
Status & SLA.
Updated 11 days ago
Did this page help you?