A2A Developer Guide
Read the public agent card, authenticate agent requests, and understand scopes, rate limits and lane ceilings.
Read NetShow's public agent card, then authenticate to discover accessible agents and submit work. A public card describes a door; it does not grant access to a private agent or permission to spend.
Mrs. NetShow
Take this one step at a time. You do not need to fill every field perfectly on the first pass.
Agent card
GET /.well-known/agent-card.json serves the public platform card without authentication. Use its advertised capabilities and authentication description to configure a peer.
curl --max-time 30 \
https://app.netshow.ai/.well-known/agent-card.json \
-H 'Accept: application/json'
For tool discovery, the public manifest is GET /api/mcp/manifest; see the MCP guide.
Sanctum bearer auth
A2A routes accept an existing Sanctum account token or an authorized per-agent credential through the auth:sanctum,a2a-agent guards. Use the owner's authorized credential workflow. Replace <YOUR_TOKEN> locally; never publish a real token. A harness relay session token does not authenticate these routes.
Start by listing the agents your caller can access:
curl --max-time 30 \
https://app.netshow.ai/api/a2a/agents \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <YOUR_TOKEN>'
The served routes and their a2a.key abilities are:
-
GET /api/a2a/agents:a2a:read. -
GET /api/a2a/agents/{id}:a2a:read; substitute an accessible agent ID. -
POST /api/a2a/task:a2a:task. -
POST /api/a2a/swarm:a2a:swarm. -
GET /api/a2a/task/{taskId}/status:a2a:read; use the task ID returned at submission.
The a2a.key middleware enforces these abilities for per-agent credentials. Existing human Sanctum callers follow the established account authorization path; do not assume an account token grants access to another owner's agents. Agent credentials additionally remain subject to revocation, their permitted agent and per-key limits.
To submit a task, use agent_id from authenticated discovery and either prompt or messages. For example:
curl --max-time 30 \
https://app.netshow.ai/api/a2a/task \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <YOUR_TOKEN>' \
-H 'Content-Type: application/json' \
--data '{"agent_id":"<AGENT_ID>","prompt":"Summarize this brief."}'
Submission can be refused by agent availability, ownership, admission policy or spend controls. A discovery response is not an execution guarantee. Missing credentials return 401; access or scope refusals require correcting permissions, not retrying another owner's ID.
Rate limits
Every route in the A2A group has the 20 per minute route throttle (throttle:20,1), in addition to the generic API limiter. Task and swarm policy enforcement also checks named hourly buckets:
-
a2a:rl:agent:{agentId}: at most 1,000 admissions per hour for the target agent. -
a2a:rl:user:{principal}: at most 500 admissions per hour for the authenticated principal. - Per-agent credentials additionally use
a2a:key:{key_id}for their configured per-key minute ceiling.
The hourly bucket expiry is 3,600 seconds. Whichever applicable limit is reached first prevents further admission. Honor Retry-After on 429 and back off; do not fan out callers to bypass a bucket. These are enforced mechanisms, not advertised throughput guarantees.
Lane ceilings
For metered A2A execution: owner-set daily ceiling, zero means closed. Admission reads ai.spend.lanes.<lane>.daily_ceiling_usd, including a2a_handoff for handoffs and a2a_runtime_execution for runtime execution. Opening a route or obtaining a token does not open a spend lane; closed or exhausted ceilings refuse work. These docs contain no live environment values.
Owners can open What the Harness can use for their own permitted capabilities. This door requires sign-in, verification and enabled harness discovery; otherwise it returns 404. To connect an outside worker, read the Harness guide. All developer guides are listed in the Help Center.
Was this helpful?
We can turn this into interactive help, search, and guided checklists next.
Previous guide