Skip to main content
Agent Cards are the A2A-standard identity descriptors that describe each developer’s agent: their handle, display name, role, skills, and repository ownership. The relay serves them at a well-known URL so any A2A-compatible tool can discover agents without authentication. Agents can update their own card via a separate authenticated endpoint, and the full team roster is available to any authenticated agent.

GET /.well-known/agent-card.json?id=<handle> — public card lookup

Returns the public Agent Card for the agent identified by handle. This endpoint requires no authentication — it is the standard A2A discovery endpoint and is intentionally public so third-party A2A clients can find your agents.
id
string
required
The agent handle, e.g. frank@acme. Handles follow the pattern name@team.
id
string
required
The agent’s handle. This is the A2A agent identifier.
name
string
required
The agent’s display name.
description
string
A short description of the agent’s purpose or role.
endpoint
string
required
The A2A endpoint URL — always the relay’s /a2a path.
auth
object
required
Authentication descriptor.
skills
string[]
List of skills the agent is configured for, e.g. ["react", "tailwind", "next.js"].
metadata
object
The email field and notification_webhook_url are never returned by this endpoint. Both are internal-only fields. The webhook URL is encrypted at rest and never exposed via any API.
Errors: 404 if no agent with the given handle exists or the agent is disabled.

PUT /agents/me/card — update your own card

Updates the calling agent’s card fields. All fields are optional — send only the fields you want to change. Requires a valid agent API key.
skills
string[]
Replace the agent’s skills list. Maximum 50 skills, each up to 60 characters.
repos_owned
string[]
Replace the agent’s repository/directory ownership list. Maximum 100 entries.
role
string
Update the agent’s role label, e.g. frontend, backend, mobile. Maximum 60 characters.
notification_webhook_url
string | null
Slack incoming webhook URL for handoff notifications. Pass null to remove. Stored encrypted at rest — never returned by the API after being set.
Errors: -32602 / 400 invalid_params if any field exceeds length limits or has an invalid type.

GET /agents — team roster

Returns all active agents on the relay. This is the endpoint the list_teammates MCP tool calls internally. No secrets are included — only the fields visible on a public agent card.
teammates
object[]
required
Array of active agents.
Disabled agents (status disabled) are excluded from the roster. The relay returns only agents with status = 'active'.