URL: /docs/mcp/install/other-clients

---
title: Other clients
description: The four facts any MCP client needs about the Revised server, plus config for VS Code and opencode.
---

Any client that speaks Streamable HTTP can connect. There is nothing Revised-specific to install and no SDK — the whole configuration is a URL.

## What to tell any client

| | |
| --- | --- |
| URL | `https://getrevised.com/api/mcp` |
| Transport | Streamable HTTP. Not SSE, not stdio, and there is no local process to launch. |
| Method | `POST` only. `GET` and `DELETE` answer `405` — there is no session to stream into or delete. |
| Auth | Nothing to configure for OAuth. Otherwise `Authorization: Bearer rvd_...`. |

If a client asks you to choose a transport, pick the HTTP one. If it offers only "command" or "stdio", it cannot connect to this server.

## Authentication without a config entry

The server answers an unauthenticated request with `401` and a `WWW-Authenticate` challenge naming its authorisation server. A client that implements OAuth 2.1 discovery reads that challenge, registers itself dynamically, opens a browser for the user to sign in, and keeps its own token. That is why the OAuth path needs no client id, no secret and no key in a file.

A client that does not implement discovery needs an API key from [getrevised.com/account](https://getrevised.com/account), sent as a bearer token. Keys are free on every plan.

<Warning>
  A project-level config file checked into a repository is the wrong place for a key. Use OAuth, or keep the key in a user-level config or an environment variable.
</Warning>

## VS Code

Workspace config goes in `.vscode/mcp.json`; for user-level config, run **MCP: Open User Configuration** from the command palette.

<Tabs>
  <Tab title="OAuth">
```json
{
  "servers": {
    "revised": {
      "type": "http",
      "url": "https://getrevised.com/api/mcp"
    }
  }
}
```
  </Tab>
  <Tab title="API key">
```json
{
  "servers": {
    "revised": {
      "type": "http",
      "url": "https://getrevised.com/api/mcp",
      "headers": {
        "Authorization": "Bearer rvd_yourprefix_yoursecret"
      }
    }
  }
}
```
  </Tab>
</Tabs>

`"type": "http"` covers both HTTP Stream and SSE — VS Code tries HTTP first and falls back. This server only does the former, which is the one it tries first.

## opencode

In `opencode.json`, under `mcp`:

<Tabs>
  <Tab title="OAuth">
```json
{
  "mcp": {
    "revised": {
      "type": "remote",
      "url": "https://getrevised.com/api/mcp"
    }
  }
}
```
  </Tab>
  <Tab title="API key">
```json
{
  "mcp": {
    "revised": {
      "type": "remote",
      "url": "https://getrevised.com/api/mcp",
      "headers": {
        "Authorization": "Bearer rvd_yourprefix_yoursecret"
      }
    }
  }
}
```
  </Tab>
</Tabs>

`"type": "remote"` is the discriminator — `"local"` is for a process opencode launches itself.

## Clients with their own page

<CardGroup cols={3}>
  <Card title="Claude Code" icon="terminal" href="/docs/mcp/install/claude-code" />
  <Card title="Claude Desktop" icon="message-square" href="/docs/mcp/install/claude-desktop" />
  <Card title="Cursor" icon="code" href="/docs/mcp/install/cursor" />
  <Card title="Codex" icon="square-terminal" href="/docs/mcp/install/codex" />
</CardGroup>

## Verify, whatever the client

Ask it:

> What plan am I on with Revised?

It should call `whoami` and come back with your plan, the reveals left this month and your rate limit. If it answers from general knowledge instead of calling a tool, the server is not connected.

## When it does not connect

| What you see | What it means |
| --- | --- |
| `401` with no browser prompt | The client does not implement OAuth discovery. Send an API key instead. |
| `405` | The client sent `GET` or `DELETE` — it is trying to open an SSE session. Point it at the HTTP transport. |
| `insufficient_scope` | An OAuth token that predates a scope the tool needs. Disconnect and sign in again. |
| Tools listed but every call fails | Check the key has not been rotated, and check [Rate limits](/docs/api/rate-limits) — the counter is shared with REST. |

More detail on the failure modes: [MCP authentication](/docs/mcp/authentication#failures).

## Notes

- Nine tools are exposed. `reveal_domain` is the only one that can spend; see [Tools](/docs/mcp/tools).
- MCP calls and REST calls share one per-minute counter per key.
- To set a client up without reading any of this, hand it the [agent setup prompt](/docs/agent-setup).
