# invideo for agents

invideo is a cloud video editor. Agents and people work on the same projects.

Think of it as Figma and GitHub for video. Like Figma, a project lives in the browser and several people can work in it at once; anyone with the link can watch the cut and edit the timeline. Like GitHub, a project has a main timeline, branches, and a full edit history, and changes can be proposed for review before they reach main.

> invideo exposes its projects as a remote MCP server. Connected, your agent opens a project by its URL, brings media in, edits timelines, and the person watches every edit land live in the real editor, where they can also edit by hand. The tools work in the person's invideo account; the first call asks them to sign in through your client.

- **MCP server URL:** https://mcp-v2.invideo.io/mcp
- **Transport:** Streamable HTTP (JSON-RPC 2.0 over POST)
- **Auth:** none to connect; OAuth sign-in on the first tool call

Find your client below. If it is not listed, use "Any MCP client" or "By hand over HTTP".

If you are the agent reading this: run the setup below yourself. Give the person a command to run only as a last resort, when nothing you can do works. Adding the server changes the person's client settings, so ask once ("Should I add invideo to your Claude Code?") and do it on a yes. The person's part is only what a client cannot do from your shell, as each client's section says. Once invideo's tools are available, ask the person what video you're making.

## Claude Code

```bash
claude mcp add --transport http --scope user invideo https://mcp-v2.invideo.io/mcp
```

Claude Code loads a newly added server only when it starts, and only `/mcp` can sign the person in; `claude mcp login` needs an interactive terminal, which your shell is not, so do not run it. After adding the server, tell the person in one message: exit Claude Code and run `claude --continue` to come back to this conversation, then run `/mcp`, choose invideo and Authenticate, which opens their browser to sign in. Once they are back, carry on. Later, when a tool asks for the person's account, the same `/mcp` → invideo → Authenticate is their one step.

## Codex

```bash
codex mcp add invideo --url https://mcp-v2.invideo.io/mcp
```

Run it yourself: adding the server starts the sign-in and opens the person's browser, where they sign in. Codex loads a newly added server only in a new session, so then tell the person in one message to start a new Codex session to load the tools.

## Cursor

Add to `~/.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "invideo": { "url": "https://mcp-v2.invideo.io/mcp" }
  }
}
```

## VS Code

```bash
code --add-mcp '{"name":"invideo","type":"http","url":"https://mcp-v2.invideo.io/mcp"}'
```

## Claude (claude.ai web or desktop)

Settings → Connectors → Add custom connector. Name `invideo`, URL `https://mcp-v2.invideo.io/mcp`. Leave authentication off; Claude shows a Connect card the first time a tool needs the person's account.

## ChatGPT

Custom connectors need Developer mode (Settings → Connectors → Advanced). Create one: name `invideo`, MCP server URL `https://mcp-v2.invideo.io/mcp`.

## Any MCP client

Add a remote Streamable HTTP MCP server at `https://mcp-v2.invideo.io/mcp` with your client's usual mechanism. No authentication is needed to connect.

## By hand over HTTP

The server is plain JSON-RPC over POST, so any agent that can make HTTP requests can drive it without a client at all. Send `content-type: application/json`. Both protocol eras work: a client that opens with `initialize` gets a session id to send back as `mcp-session-id`; a client that names itself in `_meta` on every request needs no handshake at all.

```bash
# list the tools
curl -s https://mcp-v2.invideo.io/mcp -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{"_meta":{"io.modelcontextprotocol/clientInfo":{"name":"my-agent","version":"1"}}}}'

# list the person's projects, with the access token from their OAuth sign-in
curl -s https://mcp-v2.invideo.io/mcp -H 'content-type: application/json' -H "authorization: Bearer $TOKEN" -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_projects","arguments":{},"_meta":{"io.modelcontextprotocol/clientInfo":{"name":"my-agent","version":"1"}}}}'
```

Every tool call needs the person's invideo account: without it the server answers a sign-in challenge.

## Once connected

Call `get_help` for how to work with invideo: projects and their URLs, the notebook, timelines, media, exports. `get_help` with a `topic` gives one section.
