A2A (Agent2Agent)

Each publisher can expose an A2A server: agent card + JSON-RPC endpoint.

Publishers can expose an A2A server alongside
MCP — same index, same policies, same licensing. It's off by default;
publishers flip it on from the dashboard (A2A server card).

Discovery

The Agent Card lives at the spec's well-known path on the publisher's
vanity host:

GET https://oasy.<publisher-domain>/.well-known/agent-card.json

(Platform-origin fallback: /.well-known/agent-card.json?slug=<publisher-slug>.)

Two skills are declared, mirroring the MCP tools: search_articles and
get_article.

Endpoint

JSON-RPC 2.0 at https://oasy.<publisher-domain>/a2a (or
/api/a2a/<publisherId> on the platform origin). Implemented methods:
message/send, tasks/get, tasks/cancel. Streaming and push
notifications are advertised as off in the card.

Calling a skill

Send a Message whose DataPart names the skill:

{
  "jsonrpc": "2.0", "id": 1, "method": "message/send",
  "params": {
    "message": {
      "role": "user",
      "parts": [
        { "kind": "data", "data": { "skill": "get_article", "url_or_id": "https://…" } },
        { "kind": "text", "text": "What did the review say about the tasting menu?" }
      ]
    }
  }
}

Plain-text messages work too: text containing a URL or article id routes to
get_article (the text becomes last_user_prompt); anything else becomes a
search_articles query.

Semantics match MCP

  • Search results include the match section info and respect the rag
    right.
  • get_article enforces policy, content rules (territory_blocked),
    and use-case licensing (license_limited / license_denied), and
    carries the machine-readable license block.
  • Skills complete synchronously; tasks/get returns the stored result by
    task id.

Did this page help you?