Marketplace
The Marketplace is a public registry where you publish an agent, fork one someone else published, or invoke it without forking. A2A (Agent-to-Agent) is an open protocol for agents to find and call each other, and an agent card is the public description an agent publishes. A fork is your private copy of a published agent: the original author sees none of your data or runs. Other platforms can call your public agents through A2A without ever sharing your tenant.
1. Pick a server
From the curated registry.
Two registries
Section titled “Two registries”The dashboard Marketplace (/marketplace) fronts two registries.
| Registry | Endpoint | What you do |
|---|---|---|
| Agent Marketplace | /v1/marketplace |
Filter by category or search text; star, fork, or unpublish your own. Listings carry a description, tags, README, star and fork counts. |
| MCP Marketplace | /v1/mcp/servers |
Browse a curated registry of Model Context Protocol servers. Attach one with POST /v1/agents/{name}/mcp-servers. |
Publish an agent
Section titled “Publish an agent”Publishing copies the agent’s manifest into the public registry under a slug. There is no review queue and no unlisted mode: the listing is live when the call returns.
POST /v1/marketplace/publish{ "agentName": "research-agent", "description": "Cited research reports", "category": "research", "tags": ["research", "web"], "readme": "..."}
DELETE /v1/marketplace/{slug} # unpublishIt returns { id, slug, url }. The slug is <your-tenant-slug>-<agent-name>.
Discover and fork
Section titled “Discover and fork”GET /v1/marketplace?category=research&q=citationsGET /v1/marketplace/{slug} # manifest, card, READMEPOST /v1/marketplace/{slug}/fork { "newName": "my-copy" }POST /v1/marketplace/{slug}/starFork returns { agentId, agentName }. A fork is a normal agent in your tenant: edit its prompt, swap models, add connectors, and the original is unaffected.
Invoke without forking
Section titled “Invoke without forking”A buyer can invoke a published agent without forking it. The run executes in the seller’s tenant, with their LLM keys and budgets. The seller’s hard-fail budget applies (HTTP 402), and the buyer’s input is validated against the manifest’s inputSchema when one exists. The buyer gets the output and an HMAC-SHA256 signed receipt.
POST /v1/marketplace/{slug}/invoke{ "input": { "topic": "..." } }
GET /v1/marketplace/invocations?role=buyer # buyer-side historyGET /v1/marketplace/invocations?role=seller # seller-side historyInvoke returns { invocationId, status, output, costUsd, signature, sellerTenantId, agentName, issuedAt, receipt }. The receipt object carries invocationId, buyerTenant, sellerTenant, marketplace, agentName, runId, costUsd, issuedAt, signature and algorithm.
| Status | When |
|---|---|
| 400 | Input fails the manifest’s inputSchema |
| 402 | Seller budget reached |
| 404 | Unknown slug |
| 502 | The seller run failed |
| 503 | Execution unavailable |
Expose an agent over A2A
Section titled “Expose an agent over A2A”Agents are private by default (agents.is_public = false). The card, the well-known directory and A2A invoke expose an agent to a non-owner only when it is public.
GET /v1/agents/{name}/card # own agent or is_public; else 404GET /.well-known/agent.json # lists only public agentsPOST /v1/agents/{name}/a2a/invoke # authenticated callers only; 401 without credentials- An authenticated caller always sees and can invoke their own agents, whatever the visibility.
- A card or invoke for another tenant’s non-public agent returns 404, not 403, so the agent’s existence does not leak.
- Other platforms discover agents through
/.well-known/agent.jsonand/v1/agents/{name}/card. - Inside a running agent,
ctx.a2a(agentCardUrl).submit({ input })calls a remote A2A agent through the runtime sidecar, andctx.subagent(name, input)calls another agent by name. The outbound A2A call works in the production runtime only; the PythonAgentContextstub raisesNotImplementedError.
Limits
Section titled “Limits”- No endpoint sets
is_public. Today it is a column onagentsthat an operator flips. - No public verifier for invocation receipts. Verifying one needs the platform signing key.
- No
pal marketplacecommand. The Python SDK hasclient.marketplace. - No review queue and no unlisted mode for published agents.
Next: Accounts and teams.