A2A
Each deployment as an agent other agents can call, over the A2A protocol.
RoutesOpen one for every field it takes and answers.
GET/v1/a2a/{deployment_id}/.well-known/agent-card.jsonWhat this deployment does and how to authenticate, for other agents to discover.
Request1 field
Path
deployment_idstringrequiredThe deployment's id (dep_...). The /v1/deployments routes also take its name.
- Type
string
Answers 20012 fields
namestringThe deployment's name.
- Limits
- At least 1 character.
descriptionstringThe deployment's description, then how to talk to Bash.
- Limits
- At least 1 character.
supportedInterfacesobject[]Where and how to call it.
- Limits
- At least 1 item.
urlstring (URL)The deployment's A2A address.
- Type
string (URL)
protocolBindingstringHow to call it: JSONRPC.
- Type
string
protocolVersionstringThe A2A version it speaks.
- Example
1.0
providerobjectmay be absentWho runs the agent.
urlstring (URL)The provider's site.
- Type
string (URL)
organizationstringThe provider's name: Vestra.
- Type
string
versionstringThe deployment's live version, as a string.
- Limits
- At least 1 character.
documentationUrlstring (URL)may be absentWhere its documentation is.
- Type
string (URL)
capabilitiesobjectWhat it can do.
streamingbooleanmay be absentWhether it streams: true.
- Type
boolean
pushNotificationsbooleanmay be absentWhether it sends push notifications: false, use a webhook endpoint instead.
- Type
boolean
extendedAgentCardbooleanmay be absentWhether it has an extended card: false.
- Type
boolean
securitySchemesmap of objectmay be absentHow a caller proves who it is, by name.
- Type
map of object
securityRequirementsobject[]may be absentWhich schemes a call must use.
schemesmap of objectThe schemes a call needs, by name.
- Type
map of object
defaultInputModesstring[]What it takes: text/plain and application/json.
- Limits
- At least 1 item.
defaultOutputModesstring[]What it answers with: text/plain and application/json.
- Limits
- At least 1 item.
skillsobject[]What the agent offers: one skill, talking to Bash.
- Limits
- At least 1 item.
idstringThe skill's id.
- Type
string
namestringThe skill's name.
- Type
string
descriptionstringWhat it does.
- Type
string
tagsstring[]Words to find it by.
- Type
string[]
examplesstring[]may be absentRequests it handles, as examples.
- Type
string[]
inputModesstring[]may be absentWhat it takes.
- Type
string[]
outputModesstring[]may be absentWhat it answers with.
- Type
string[]
# Connect any MCP client. Point it at this URL with your key. Over plain HTTP the endpoint speaks JSON-RPC,# and it needs both types in the Accept header. tools/list shows the tools it offers.curl "$VESTRA_BASE_URL/v1/mcp" \ -H "Authorization: Bearer $VESTRA_API_KEY" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{ "jsonrpc": "2.0", "id": 1, "method": "tools/list" }' # Connect an agent that speaks A2A. Each deployment has an agent card, and reading it needs no key.curl "$VESTRA_BASE_URL/v1/a2a/dep_4kq/.well-known/agent-card.json"{ "mcpServers": { "vestra": { "type": "http", "url": "https://api-staging.vestra.ai/v1/mcp", "headers": { "Authorization": "Bearer vk_test_..." } } }}No sample in your language for this route, so here it is over HTTP.
# Connect any MCP client. Point it at this URL with your key. Over plain HTTP the endpoint speaks JSON-RPC,# and it needs both types in the Accept header. tools/list shows the tools it offers.curl "$VESTRA_BASE_URL/v1/mcp" \ -H "Authorization: Bearer $VESTRA_API_KEY" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{ "jsonrpc": "2.0", "id": 1, "method": "tools/list" }' # Connect an agent that speaks A2A. Each deployment has an agent card, and reading it needs no key.curl "$VESTRA_BASE_URL/v1/a2a/dep_4kq/.well-known/agent-card.json"POST/v1/a2a/{deployment_id}A2A JSON-RPC: send a message, stream, get, list or cancel.
Push notifications are not offered; subscribe to webhooks instead. An A2A exchange is a conversation; an A2A task is its work.