# Use the REQO MCP server

Connect to REQO over the Model Context Protocol instead of driving the REST
API by hand. Same capabilities, same permissions, fewer round trips.

## Endpoint

```
https://reqo.me/mcp
```

Transport is **Streamable HTTP**. Protocol versions `2025-06-18` and
`2025-03-26` are supported; the server negotiates down to whichever you send.

The server is stateless. There is no `Mcp-Session-Id` to carry: identity comes
from the session cookie on each request, exactly as it does for the REST API.

## Client configuration

```json
{
  "mcpServers": {
    "reqo": {
      "type": "streamable-http",
      "url": "https://reqo.me/mcp"
    }
  }
}
```

## Authentication

Forward the user's REQO session cookie on each request. There are no API keys.
See https://reqo.me/.well-known/agent-skills/authenticate/SKILL.md.

`initialize` and `tools/list` work **unauthenticated**, deliberately: you must
be able to discover what exists before knowing whether you need to sign in.
`health_check` is the only tool that runs without a session.

## Tools

| Tool | Auth | What it does |
| --- | --- | --- |
| `health_check` | no | Liveness probe |
| `list_videos` | yes | Videos in the active workspace |
| `get_video` | yes | One video with its playback URLs |
| `get_captions` | yes | Caption status, or the SRT/VTT subtitle text |
| `list_projects` | yes | Editing projects, most recently updated first |
| `create_project` | yes | Create a project, optionally seeded from a media URL |
| `transcribe_video` | yes | Whisper large-v3 transcript with timed segments |

`get_captions` with `format: "srt"` is the cheapest way to read what was said
in a video. Prefer it over downloading the media.

## Resources

`resources/list` exposes `/llms.txt`, `/openapi.json`, `/auth.md` and
`/pricing.md` for retrieval without a tool call.

## Handshake

```http
POST https://reqo.me/mcp
Content-Type: application/json

{"jsonrpc":"2.0","id":1,"method":"initialize",
 "params":{"protocolVersion":"2025-06-18","capabilities":{},
           "clientInfo":{"name":"my-agent","version":"1.0.0"}}}
```

Then `notifications/initialized` (expect `202` and an empty body), then
`tools/list`.

## Errors

A tool that fails returns a normal result with `isError: true` and a text
explanation, not a JSON-RPC error. Read the text: the common case is "not
authenticated", which needs a sign-in rather than a retry.

`GET /mcp` answers `405`. The server never initiates messages, so it does not
hold open an SSE stream that would never emit.

## Related

- Server card: https://reqo.me/.well-known/mcp/server-card.json
- OpenAPI (the same surface over REST): https://reqo.me/openapi.json
