Connect an AI assistant
GPT-Video speaks MCP, so Claude, ChatGPT, Cursor and anything else that speaks it can edit video through it. Here is the address, and the setup for each of them.
What this is
GPT-Video speaks MCP — the Model Context Protocol — so an AI assistant can do the editing work directly: create a project, find the strong moments in a video you uploaded, caption and reframe them, and hand you back an MP4. You stay in the assistant; the rendering happens here.
The server is remote, so for most assistants connecting it means pasting one URL. It exposes eight tools and nothing that generates images, video or audio: everything it does is an edit of footage you provided.
Before you connect
- Sign in to GPT-Video and open Settings → Connections.
- Create an API key. It is shown once — copy it then, because it is stored hashed and cannot be shown again. If you lose it, revoke it and make another.
- Keep it somewhere your assistant can read it as an environment variable. Anything typed on a command line is readable by every process on the same machine.
Where your assistant offers it, you can sign in with your GPT-Video account instead of pasting a key. Either way the connection opens exactly one workspace — yours — and you can revoke it from the same page at any time.
The address
| Endpoint | https://www.gpt-video.com/api/mcp |
| Transport | Streamable HTTP |
| Authentication | Authorization: Bearer gvk_… |
That is the whole configuration. Everything below is the same two facts in the shape a particular assistant wants them.
Claude Code
claude mcp add --transport http gpt-video https://www.gpt-video.com/api/mcp \
--header "Authorization: Bearer gvk_…"Claude, Cursor, Windsurf and most desktop assistants
These read a JSON file listing MCP servers — the file's location differs, its shape does not:
{
"mcpServers": {
"gpt-video": {
"type": "http",
"url": "https://www.gpt-video.com/api/mcp",
"headers": { "Authorization": "Bearer gvk_…" }
}
}
}In Claude's own connector UI there is no file at all: add a custom connector, paste the URL, and sign in when it asks.
An entry with a
urland notypeis read as a local command by some hosts, and fails with a confusing error. Keep thetype.
ChatGPT
Enable developer mode, add an MCP server, and paste the endpoint above. ChatGPT asks for the credential itself rather than reading a file.
VS Code, JetBrains AI, and other editors
Editors change their configuration format more often than this page can follow. Use their own instructions for adding a remote MCP server over HTTP, with the endpoint and the Authorization header above.
Assistants that only speak stdio
Zed, some JetBrains and Windsurf builds, self-hosted n8n, and any machine behind a corporate proxy can launch a local process but cannot reach a remote MCP server. A small bridge covers them: it reads MCP messages on standard input and forwards them here over HTTPS.
Not on npm yet. The bridge is written and tested but not published, so the command below does not work today. If you need it now, write to us and we will get you a build. Everything else on this page works right now.
{
"mcpServers": {
"gpt-video": {
"command": "npx",
"args": ["-y", "gpt-video-mcp"],
"env": { "GPT_VIDEO_API_KEY": "gvk_…" }
}
}
}It has no dependencies, keeps nothing, and never writes your key anywhere.
Your own code
Any MCP client library connects with the endpoint and the header — the OpenAI Agents SDK, LangChain, LlamaIndex, Pydantic AI, or a few lines of your own. There is no handshake to perform first: the server is stateless, so a tools/call on a cold connection works.
The tools
| Tool | What it does | Spends credits |
|---|---|---|
list_projects | Lists your projects, newest first | no |
create_project | Starts a project and gives you the upload link | no |
get_project | Status, settings and finished exports | no |
configure_project | Captions, aspect ratio, language, clip length | no |
find_clips | Transcribes the source and finds the best moments | yes |
list_clips | The clips found, with scores and timecodes | no |
export_clip | Renders one clip to a vertical MP4 | yes |
get_job | How a running job is going; the download link when done | no |
Uploading the source video happens in GPT-Video, not through the assistant: create_project returns a link, you open it and drop the file in. An upload endpoint that accepted large writes without a session is a door we would rather not have.
What it costs, and what protects you
find_clips and export_clip spend from your plan. Credits are taken when the work is queued and are not returned if it fails, so three things stand in front of them:
- both tools require an explicit
confirm, which is what makes the assistant ask you first; - both are safe to retry — asking twice for the same thing returns the work already running instead of buying it again;
- each connection has an hourly ceiling on jobs that spend, so a looping agent cannot empty a plan.
An assistant that reports it has started something has started it once.
Long jobs
Finding clips and exporting take minutes. Hosts that implement the MCP tasks extension get a task handle and show you progress; the rest get the job id in the reply and poll get_job. Both lead to the same place, and get_job returns a fresh download link each time — links expire after a few minutes on purpose.
Limits
| Calls | 60 per minute, per connection |
| Jobs that spend | 30 per hour, per connection |
| Download links | valid a few minutes; ask again for a new one |
Exceeding the first gives you a message telling you to slow down, not a broken connection.
When something does not work
"Unauthorized" or the connector will not add. The key is wrong, revoked, or has a stray space. Create a new one under Settings → Connections; the old one stops working immediately.
The assistant sees no tools. Check the URL ends in /api/mcp, and that the entry declares an HTTP transport rather than a local command.
A tool says it is not allowed to do that. The connection was granted narrower permissions than the tool needs — reconnect and grant the missing one. Read-only connections cannot spend.
An export never finishes. Call get_job with the id you were given; if it reports a failure, the reason is in the reply. Nothing was charged twice.
Privacy
The assistant sends us what the tool call contains and nothing else — we do not receive your conversation, and we do not log tool arguments. What we do with the video you upload is in the privacy notice, and what you may do with what comes out is in the terms. Your material is not used to train models.
Reporting a security problem
Write to the address in our security.txt. If it concerns this endpoint, say so: it reaches the same person, faster.