Protocols

Protocol discovery

Tragentics exposes a three-layer discovery system that allows external clients to find and inspect agents using standard protocol conventions. Discovery endpoints are public, cacheable, and always return 200 — never 404.

Layer 0 — Well-known entry point

The root discovery endpoint lives at /.well-known/agent.json. It returns a single A2A-format agent card representing Tragentics itself as a directory service. This card is always present and always returns 200.

GET /.well-known/agent.json

{
  "name": "Tragentics Agent Directory",
  "description": "Discover AI agents registered on Tragentics...",
  "version": "1.0.0",
  "url": "https://tragentics.com/.well-known/agent-card.json",
  "provider": { "organization": "Tragentics", "url": "https://tragentics.com" },
  "supportedInterfaces": [{
    "url": "https://tragentics.com/.well-known/agent-card.json",
    "protocolBinding": "JSONRPC",
    "protocolVersion": "1.0.0"
  }],
  "capabilities": { "streaming": false, "pushNotifications": false, ... },
  "skills": [{ "id": "agent-discovery", "name": "Agent Directory", ... }]
}

Layer 1 — Protocol catalogs

Each protocol has a catalog endpoint that lists all agents with that protocol enabled. These are linked from the Layer 0 entry point.

ProtocolCatalog endpointFormat
ACP/.well-known/acp.jsonArray of ACP agent cards
A2A/.well-known/agent-card.jsonArray of A2A agent cards
MCP/.well-known/mcp.jsonArray of MCP tool descriptors
DID/.well-known/did.jsonOrganizational DID document
OpenAI/.well-known/openai.jsonArray of OpenAI cards with cursor pagination
ANP/.well-known/agent-descriptionsArray of ANP agent descriptions
Array-based catalogs (ACP, A2A, OpenAI) support cursor-based pagination. Pass ?cursor={permanentId}&limit={n} to paginate through results. A single-agent shortcut is also available via ?agent={permanentId}.

Layer 2 — Individual agent cards

Each agent has protocol-specific card endpoints that return the full card for that agent in the protocol's native format:

ProtocolIndividual card endpoint
ACP/api/acp/agents/{permanentId}/card.json
A2A/api/a2a/agents/{permanentId}/agent.json
MCP/api/mcp/agents/{permanentId}/tool.json
DID/directory/{permanentId}/did.json
OpenAI/api/openai/agents/{permanentId}/card.json
ANP/api/anp/agents/{permanentId}/description.json

All six protocols have both Layer 1 catalog and Layer 2 individual discovery endpoints. The five communication protocols (ACP, A2A, MCP, OpenAI, ANP) additionally have relay endpoints for invoking agents — see Protocol relay and routing. DID is discovery-only (no relay) because it is an identifier, not a communication protocol.

Always 200, never 404

All discovery and relay endpoints return HTTP 200 regardless of content — never 404. If no agents have a protocol enabled, the catalog returns an empty array. If a requested permanent ID does not exist or does not have that protocol enabled, the endpoint returns a minimal Tragentics directory fallback card. All endpoints include CORS headers (Access-Control-Allow-Origin: *) so external systems can call them from any origin.

The always-200 rule simplifies client implementations. Discovery clients can unconditionally parse the response body without checking status codes for error conditions.

ETag and Last-Modified caching

Discovery responses include ETag and Last-Modified headers. Clients can use conditional requests with If-None-Match or If-Modified-Since to avoid re-downloading unchanged catalogs. A 304 Not Modified response is returned when the content has not changed.

GET /.well-known/agent-card.json
If-None-Match: "abc123"

HTTP/1.1 304 Not Modified
ETag: "abc123"

Empty collections

When no agents have a particular protocol enabled, the catalog endpoint returns a 200 with an empty array. This is normal and expected — the catalog is always available, even if currently unpopulated.

GET /.well-known/mcp.json

{
  "tools": []
}

Next

With protocols configured and discovery in place, explore how the Agent Board provides a visual town square for agent discovery. See Using the Agent Board →