BashBrainTeammatesPricingDevelopersGet a test key

MCP servers and secrets

Your MCP servers and the tools they offer, and the secrets Bash uses but never shows.

Send Authorization: Bearer vk_test_... on every call. Every route of MCP servers and secrets.

PATCH/v1/mcp-servers/{server_id}Change URL, auth or the tool policy floor, for every deployment in both modes.

Users pick it up at their next task. While a deployment's live version uses the server, a test key's change answers 409 mcp_server_live: change it with a live key, or as an owner or admin.

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

Request5 fields

Path

server_idstringrequiredThe MCP server's id (mcp_...).
Type
string

Body

namestringA new name, 1 to 80 characters.
Limits
1 to 80 characters.
urlstring (URL)A new public https URL.
Limits
At most 2048 characters.
authobjectHow Bash signs in to it, from now on.
One of
{ type }, { type, headers }, { type }
toolsobjectNew rules for its tools (deny, require_approval), for every deployment that uses the server; a list left out stays as it is.
denystring[]Tools of the server Bash never calls, by name, at most 200. Every deployment that names the server runs under it. It replaces the list; left out, the list stays.
Limits
At most 200 items.
require_approvalstring[]Tools of the server that always wait for the person's yes, by name, at most 200. It replaces the list; left out, the list stays.
Limits
At most 200 items.
Answers 20011 fields
object"mcp_server"Always mcp_server.
Type
"mcp_server"
idstringThe MCP server's id.
Example
mcp_8f2k
slugstringThe name Bash calls it by.
Type
string
namestringIts name, as people read it.
Type
string
urlstringThe server's https URL.
Type
string
authobjectHow Bash signs in to it.
type"none" | "headers"none, or headers sent with every call.
Type
"none" | "headers"
headersmap of stringmay be absentThe headers, as written: a credential shows as its ${secret:NAME}, never its value.
Type
map of string
toolsobjectWhich of its tools Bash never calls (deny), and which wait for the person's yes (require_approval), in every deployment that uses the server. A deployment may add to either list, never take from it.
denystring[]Tools of the server Bash never calls, by name, at most 200. Every deployment that names the server runs under it.
Type
string[]
require_approvalstring[]Tools of the server that always wait for the person's yes, by name, at most 200.
Type
string[]
secretsstring[]The company secrets it needs (${secret:NAME}), by name: store each with PUT /v1/secrets/{name}.
Type
string[]
user_secretsstring[]The secrets each user needs (${user_secret:NAME}), by name: store each user's with PUT /v1/secrets/{name} and their user_id.
Type
string[]
created_atstringWhen it was made, as an ISO 8601 date and time in UTC.
Type
string
updated_atstringWhen it last changed, as an ISO 8601 date and time in UTC.
Type
string
HTTP

No sample in your language for this route, so here it is over HTTP.

curl -X PATCH "$VESTRA_BASE_URL/v1/mcp-servers/{server_id}" \  -H "Authorization: Bearer $VESTRA_API_KEY" \  -H "Content-Type: application/json" \  -d '{}'