Skip to main content

Connecting your assistant to Reelwire

The Reelwire MCP server speaks two transports, and which one you use depends on the client, not on what you want to do. The tools are identical either way.

TransportUse it whenAddress
Streamable HTTPThe server runs somewhere and several clients connect to ithttps://mcp.reelwire.io/mcp
stdioThe client starts the process itself, on your own machinenode .../mcp/dist/index.js --stdio

Prefer HTTP unless the client only supports stdio. One server, one key, one place to rotate it.

Before you start: make the key

Everything the assistant can do comes from this key, so make one for it rather than reusing a key some other system already holds.

  1. Sign in to Reelwire and open Connections → API keys.
  2. Press Create key and name it after the assistant, not after yourself: Claude, ChatGPT, Ops assistant. When you come to revoke one, the name is how you know which.
  3. Tick the permissions you want it to have. The picker is grouped exactly like the side menu, so "everything except publishing" is a thing you can actually see and tick. See Permissions for what each area covers.
  4. Copy the secret. It is shown once. If you lose it, revoke the key and make another; there is no way to recover it, by design.
Start narrower than you think

A key with read-only permissions is a genuinely useful assistant: it can answer what went out, why something failed and what is scheduled. Widen it once you have watched it work for a week.

Claude

Claude Desktop and Claude Code

Both read the same kind of configuration file. Open Settings → Developer → Edit Config in Claude Desktop, or use claude mcp add in Claude Code.

{
"mcpServers": {
"reelwire": {
"type": "http",
"url": "https://mcp.reelwire.io/mcp",
"headers": {
"Authorization": "Bearer rw_your_key_here"
}
}
}
}

Restart the client. You should see Reelwire in the tools list with 98 tools.

In Claude Code the same thing in one line:

claude mcp add --transport http reelwire https://mcp.reelwire.io/mcp \
--header "Authorization: Bearer rw_your_key_here"

claude.ai

Open Settings → Connectors → Add custom connector, give it the URL https://mcp.reelwire.io/mcp, and paste the key when it asks for authentication. Connectors are per-account, so each person on your team connects their own key and their own permissions apply.

ChatGPT

ChatGPT connects to MCP servers over HTTP. In Settings → Connectors, add a custom connector pointing at https://mcp.reelwire.io/mcp with your key as a bearer token.

Some ChatGPT surfaces expose only search-shaped and fetch-shaped tools to the model rather than the full set. Where that is the case, reelwire_search_docs, reelwire_read_doc and the reelwire_list_* tools still work, and the ones that change things may not appear. If you need the full set, use a client that passes MCP tools through whole.

Coding agents

The agents that live in a terminal or an editor connect the same way, and they are worth naming separately because the reason to use one here is different. An assistant in a chat window answers questions about the workspace; an agent sitting in your repository can write the script that pushes events at a custom feed, and then run it and watch what arrives, without leaving the editor.

All of them take the same key from the step above, and all of them are bound by exactly what that key may do.

Claude Code

One line, and the configuration above covers the desktop app at the same time:

claude mcp add --transport http reelwire https://mcp.reelwire.io/mcp   --header "Authorization: Bearer rw_your_key_here"

Codex

Codex keeps its MCP servers in ~/.codex/config.toml, as TOML rather than JSON:

[mcp_servers.reelwire]
url = "https://mcp.reelwire.io/mcp"

[mcp_servers.reelwire.http_headers]
Authorization = "Bearer rw_your_key_here"

On a build of Codex that only starts servers itself, give it the stdio form instead:

[mcp_servers.reelwire]
command = "node"
args = ["/path/to/reelwire/mcp/dist/index.js", "--stdio"]
env = { REELWIRE_BASE_URL = "https://api.reelwire.io", REELWIRE_API_KEY = "rw_your_key_here" }

Cursor

Cursor reads ~/.cursor/mcp.json for every project, or .cursor/mcp.json inside one. The second is the better place for a workspace key, because it travels with the repository that uses it:

{
"mcpServers": {
"reelwire": {
"url": "https://mcp.reelwire.io/mcp",
"headers": { "Authorization": "Bearer rw_your_key_here" }
}
}
}

Then Settings → MCP, where Reelwire should appear with its tools listed. Cursor asks before each tool call until you tell it not to, which is worth leaving on while the key can publish.

VS Code

VS Code reads .vscode/mcp.json in a workspace. Note it says servers, not mcpServers:

{
"servers": {
"reelwire": {
"type": "http",
"url": "https://mcp.reelwire.io/mcp",
"headers": { "Authorization": "Bearer rw_your_key_here" }
}
}
}

Or add it from the command line:

code --add-mcp '{"name":"reelwire","type":"http","url":"https://mcp.reelwire.io/mcp","headers":{"Authorization":"Bearer rw_your_key_here"}}'

The tools appear to the agent mode of the editor's chat, not to plain completions.

A key in a repository is a key in your history

.cursor/mcp.json and .vscode/mcp.json sit inside the project, so a key pasted into either is a key somebody can commit. Put the file in .gitignore, or keep the server in the per-user configuration and leave the project file out of it. Revoking is one press under Connections → API keys if it does get out.

Any other client

Anything that speaks MCP can connect. The two shapes are:

Streamable HTTP, for a server somebody is running:

{
"mcpServers": {
"reelwire": {
"type": "http",
"url": "https://mcp.reelwire.io/mcp",
"headers": { "Authorization": "Bearer rw_your_key_here" }
}
}
}

stdio, for a client that starts the process:

{
"mcpServers": {
"reelwire": {
"command": "node",
"args": ["/path/to/reelwire/mcp/dist/index.js", "--stdio"],
"env": {
"REELWIRE_BASE_URL": "https://api.reelwire.io",
"REELWIRE_API_KEY": "rw_your_key_here"
}
}
}
}

Clients known to work with one or both, besides the ones above: Windsurf, Zed, Cline, Continue, LibreChat, and anything built on the official MCP SDKs.

Running it yourself

The server is a container. If you would rather it sat inside your own network, next to your own systems:

docker run -d \
-p 4500:4500 \
-e REELWIRE_BASE_URL=https://api.reelwire.io \
-e REELWIRE_API_KEY=rw_your_key_here \
reelwire/mcp
VariableWhat it is
REELWIRE_BASE_URLWhere the Reelwire API lives
REELWIRE_API_KEYThe key from the step above. The only credential the server holds
REELWIRE_DOWNLOAD_DIRWhere tools that produce a file write it. Defaults to a temporary directory
PORTWhat it listens on. Defaults to 4500

GET /health says whether it is up and how many documentation pages it is carrying.

Checking it worked

Ask the assistant:

Who am I on Reelwire, and what can you do?

It should call reelwire_whoami and answer with the workspace name and the permissions the key holds. That one question tells you three things at once: the connection works, the key is valid, and the permissions are what you meant to grant.

Then:

What is scheduled to go out this week?

which reaches reelwire_calendar.

When it does not work

The assistant does not see any Reelwire tools. The client did not connect. Restart it fully, not just the conversation. Check the URL ends in /mcp.

Everything is refused with "this key may not..." The key is valid and too narrow. The refusal names the permission; go back to Connections → API keys, open the key and tick it.

"Invalid credentials" on every call. The key is wrong, revoked, or was pasted with a trailing space. Keys start rw_. Make a fresh one rather than hunting for the typo.

Tools appear but time out. The client cannot reach the server. If you are running it yourself, check the container is up and the port is published.

A render never finishes. It takes about a minute. The assistant should leave ten to fifteen seconds between polls of reelwire_export_status; some will poll harder than that and give up. Tell it to wait.