# POST /v1/mcp-servers/{server_id}/check

> Connect now and list its tools, to prove it works.

In [MCP servers and secrets API](https://vestra.ai/developers/reference/api/mcp-servers-and-secrets.md): Your MCP servers and the tools they offer, and the secrets Bash uses but never shows.

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

Connect now and list its tools, to prove it works.

Your API key, scope `setup` or `all`. On the card: [`deploy`](https://vestra.ai/developers/deploy.md). Over HTTP it is made from the contract: fill in each {…} and every value.

## Request

Path:

- `server_id` (`string`, required): The MCP server's id (`mcp_...`).

Body, if you send one:

- `user_id` (`string`): Your id for a user, to fill in their `${user_secret:NAME}` headers. Absent: the company's own secrets only. Limits: 1 to 256 characters. Example: `traveller-42`.

## Answers 200

- `object` (`"mcp_check"`): Always `mcp_check`.
- `ok` (`boolean`): Whether Bash reached the server and listed its tools.
- `tools` (`string[]`): The tools it offers, by name; empty when it could not be reached.
- `reason` (`"missing_secret" | "auth_required" | "url_not_public" | "unreachable"`, may be absent): Why not, when `ok` is false: `missing_secret` (see `missing`), `auth_required` (it asked for credentials), `url_not_public`, or `unreachable`.
- `missing` (`string[]`, may be absent): With `missing_secret`, the secrets to store first, by name.

## Code

**HTTP**

```bash
curl -X POST "$VESTRA_BASE_URL/v1/mcp-servers/{server_id}/check" \
  -H "Authorization: Bearer $VESTRA_API_KEY"
```

**TypeScript, Python, CLI, MCP**: No sample in your language for this route, so here it is over HTTP.
