AgenTrux A2A Agent Card & Endpoint
AgenTrux publishes an Agent Card for the
A2A (Agent-to-Agent) protocol and serves a
stateless A2A JSON-RPC endpoint. By fetching the Agent Card, other agents can
automatically discover what AgenTrux can do (skills), where to connect
(url), and how to authenticate (security).
How to fetch the card
| Item | Value |
|---|---|
| Agent Card URL | https://api.agentrux.com/.well-known/agent-card.json |
| Legacy alias | https://api.agentrux.com/.well-known/agent.json → 301 redirect |
| A2A protocol version | 1.0 (v1.0.1, released 2026-03) |
| Content-Type | application/json (cache: public, max-age=3600) |
curl https://api.agentrux.com/.well-known/agent-card.json
/.well-known/agent.json is kept for backward compatibility and 301
redirects to /.well-known/agent-card.json. New integrations should point
directly at agent-card.json.
Agent Card structure
The main fields returned are:
| Field | Contents |
|---|---|
name |
"AgenTrux" |
description |
Short description for agents (authenticated short-lived Pub/Sub) |
supportedInterfaces |
[{ "url": "https://api.agentrux.com/a2a", "protocolBinding": "JSONRPC", "protocolVersion": "1.0" }] |
version |
Agent Card version ("1.0.0") |
provider |
{ "organization": "AgenTrux", "url": "<console URL>" } |
documentationUrl |
"https://docs.agentrux.com" |
iconUrl |
https://agentrux.com/agentrux-mark.svg |
capabilities |
See below |
defaultInputModes / defaultOutputModes |
["application/json"] |
securitySchemes / security |
Auth scheme — see below |
skills |
Offered skills — see below |
capabilities
{
"streaming": false,
"pushNotifications": false,
"extendedAgentCard": false
}
The declaration matches the implementation exactly: the A2A endpoint is a
stateless binding. It never creates Tasks, does not stream
(message/stream), and does not store push-notification configs. What you
see in capabilities is what the endpoint actually does.
The A2A endpoint (POST /a2a)
https://api.agentrux.com/a2a accepts A2A JSON-RPC 1.0 requests with a
Bearer JWT (see security below). Requests must carry an A2A-Version: 1.0
header (or ?A2A-Version=1.0); other versions get -32009 VersionNotSupportedError.
| Method | Behavior |
|---|---|
SendMessage |
Publishes the event carried in the message and returns a direct reply Message (no Task is created) |
GetTask, CancelTask |
Always -32001 TaskNotFoundError (this agent never creates tasks) |
ListTasks |
Always an empty list (stateless: there are never any tasks) |
SendStreamingMessage, SubscribeToTask, GetExtendedAgentCard |
-32004 UnsupportedOperationError (capabilities are declared false) |
CreateTaskPushNotificationConfig and the other push-config methods |
-32003 PushNotificationNotSupportedError |
Others (including old 0.3 names like message/send) |
-32601 MethodNotFoundError (with a hint to the 1.0 name) |
Calling SendMessage
Send exactly one data part whose data carries the Topic, event type, and
payload (in 1.0, parts are a flat oneof — no kind field):
curl -X POST https://api.agentrux.com/a2a \
-H "Authorization: Bearer aat_..." \
-H "A2A-Version: 1.0" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "SendMessage",
"params": {
"message": {
"messageId": "c2f7…(any uuid)",
"role": "ROLE_USER",
"parts": [{
"data": {
"topic": "top_your-topic-id",
"event_type": "ask",
"payload": { "q": "hello" }
}
}]
}
}
}'
The response is a direct Message (not a Task) containing the published
event id:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"message": {
"messageId": "…",
"role": "ROLE_AGENT",
"parts": [{ "data": { "event_id": "evt_…", "topic": "top_…", "event_type": "ask" },
"mediaType": "application/json" }]
}
}
}
Notes:
payload+metadataserialized together must be ≤256 KiB.- An
Idempotency-Keyheader is honored the same way as the REST publish endpoint (safe retries; replays return the same event). - Reading events is not part of the A2A binding. Use the MCP interface
(
x_agentrux_discovery.mcp) forread_eventsand the other read skills — see the MCP doc.
securitySchemes / security
"securitySchemes": {
"bearer_jwt": { "httpAuthSecurityScheme": { "scheme": "bearer", "bearerFormat": "JWT" } }
},
"securityRequirements": [{ "schemes": { "bearer_jwt": { "list": ["topic.write"] } } }]
Authentication uses a Bearer JWT (access token) issued by OAuth 2.1. The
token-acquisition steps are discoverable from the Authorization Server
Metadata (https://api.agentrux.com/.well-known/oauth-authorization-server).
Authentication and authorization failures are returned at the HTTP layer
(401 / 403), not as JSON-RPC errors.
skills
id |
name |
Description | Required scope | Reachable via |
|---|---|---|---|---|
publish_event |
Publish Event | Publish an inline JSON event (≤256 KiB) to a Topic | topic.write |
A2A SendMessage or MCP |
read_events |
Read Events | Read a Topic with cursor pagination + event_type filter |
topic.read |
MCP |
get_event |
Get Event | Fetch a single event by event_id |
topic.read |
MCP |
list_topics |
List Topics | List Topics accessible to the connected workspace | — | MCP |
list_grants |
List Grants | List Grants for the connected Script | — | MCP |
skills[] in the card is descriptive metadata about what the agent can do.
The A2A binding executes the publish skill; read-side skills are served over
the MCP interface listed in x_agentrux_discovery.mcp.
From discovery to use
1. GET /.well-known/agent-card.json
→ read name / url / skills / securitySchemes
2. Confirm the auth scheme from security → obtain an OAuth 2.1 access token
(discover endpoints via GET /.well-known/oauth-authorization-server)
3. POST /a2a with the Bearer JWT + `A2A-Version: 1.0`: SendMessage publishes an event
(for reads, connect to the MCP interface from x_agentrux_discovery.mcp)
AgenTrux extension fields
The A2A spec allows extension fields. AgenTrux provides the following under
the x_agentrux_* prefix.
x_agentrux_discovery— URLs for each well-known endpoint (OAuth / JWKS …), plusmcp(the MCP endpoint; not an A2A transport, hence listed here) andmcp_oauth_connection(how OAuth clients get a per-connection MCP URL).x_agentrux_error_codes— the error codes the API returns (UNAUTHORIZED,FORBIDDEN,SUSPENDED,NOT_FOUND,CONFLICT,INVALID,PAYMENT_REQUIRED,PAYLOAD_TOO_LARGE,RATE_LIMITED,INTERNAL).x_agentrux_support— support contact (email).
Related links
- Agent Card:
https://api.agentrux.com/.well-known/agent-card.json - MCP connection: MCP doc
- Self-service onboarding (declare Scripts / Topics / Grants): Topology Request
- Authorization Server Metadata:
https://api.agentrux.com/.well-known/oauth-authorization-server - Documentation:
https://docs.agentrux.com