BashBrainTeammatesPricingDevelopersGet a test key

A2A

Each deployment as an agent other agents can call, over the A2A protocol.

Send Authorization: Bearer vk_test_... on every call.

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.

No key: anyone may call it. On the card: mcp. Every call here is a checked sample.

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[]
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"
MCP
{  "mcpServers": {    "vestra": {      "type": "http",      "url": "https://api-staging.vestra.ai/v1/mcp",      "headers": { "Authorization": "Bearer vk_test_..." }    }  }}
HTTP

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.

Your API key, scope runtime or all. On the card: mcp. Over HTTP it is made from the contract: fill in each {…} and every value.