Can ChatGPT Edit Video? Connecting Valmera over MCP
ChatGPT can add a remote MCP server as a connector, and write actions are permitted — but only through developer mode, only on the web, and writes require confirmation in the conversation by default. The read-only search/fetch restriction people quote is real, but it belongs to a different path.
This page is the connector-level detail: which ChatGPT path can carry an editing toolset, what the setup actually is, the four places it stops — including a contradiction inside OpenAI's own documentation about which plans get write actions — and what to do instead. For the plainer question of whether ChatGPT edits video on its own, see can ChatGPT edit videos.
https://entrepreneur-bot-backend.onrender.com/mcpTwo Connector Paths, and Only One Can Edit
ChatGPT reaches MCP servers in two ways, and they have different rules. Confusing them is where "ChatGPT MCP is read-only" comes from — a statement that is true of the top lane and false of the bottom one.
The top lane is a search corpus. OpenAI's documentation is explicit that a server used there "should implement two read-only tools: search and fetch" conforming to a defined schema — the first returning results with an id, title and url, the second returning the text behind an id. Valmera has search_transcript, search_stock and fetch_url, none of which are those two tools in that shape, so it is not eligible as a company knowledge source and should not be added as one. That is a design difference, not an oversight: an editor is a tool surface, and pretending to be a document index would make it worse at both.
The bottom lane loads whatever the server declares. OpenAI's developer mode guide is unambiguous — "ChatGPT developer mode provides full Model Context Protocol (MCP) client support for all tools, both read and write", with the one standing caveat that "write actions by default require confirmation". Its MCP documentation adds that "ChatGPT currently requires manual confirmation in any conversation before write actions can be taken". Writes are allowed. They are gated behind a click.
Which click, though, is decided by the server. The same guide says "we respect the readOnlyHint tool annotation" and that "tools without this hint are treated as write actions" — so an unannotated registry turns every glance at a transcript into an approval prompt. That is not a hypothetical for an editor: an editing session is mostly looking. Valmera annotates all 108 tools, and the arithmetic is the reason why — get_transcript, look_at, get_shots and project_state carry readOnlyHint and pass without a prompt, which is the difference between an agent that edits and an agent you supervise keystroke by keystroke.
How to Add Valmera to ChatGPT in Developer Mode
- 1Create a Valmera accountSign up free at valmera.io with email or Google — 50 credits, no card. If you sign up with Google, set a password with "Forgot password" first: the connector's consent screen asks for one, and a Google-only account does not have one yet.
- 2Turn on developer modeIn ChatGPT on the web, open Settings → Security and login and enable Developer mode. OpenAI documents it as available to Pro, Plus, Business, Enterprise and Education accounts on the web — there is no mobile path, so do this on a desktop browser. If the toggle is not there, your account or workspace does not have it, and no configuration on the server side changes that.
- 3Add the serverGo to Plugins, press the plus button, and paste https://entrepreneur-bot-backend.onrender.com/mcp. Give it a name and a one-line description, then press Create. There is no client id, secret or token to enter — authorization is discovered from the endpoint.
- 4Select it in a chat and sign inOpen a new chat, open the plus menu, choose Developer mode, and select the app you just created. On the first tool call ChatGPT runs the OAuth flow: it reads the 401 challenge, registers itself, and opens a Valmera sign-in and consent page. Sign in and press Allow.
- 5Confirm, then get footage into a projectSay "list my Valmera projects". A list back — even an empty one — means the connection is live. Then upload your video at valmera.io and say "open my latest project", or give the assistant a public link to the footage and let Valmera fetch it.
Setup is one paste and one sign-in. The first upload needs a one-time analysis pass — transcript, silences, shot boundaries and frame tiles — which reports progress and is reused by every edit afterwards.
Where This Stops
Four walls, in the order you will hit them. None of them are fatal, and all four are worth knowing before you spend an evening on it.
1. OpenAI's own docs disagree about which plans get write actions
This is the single most consequential thing on the page, so it gets stated flatly rather than smoothed over. OpenAI's developer mode guide says the feature is "available to Pro, Plus, Business, Enterprise, and Education accounts on the web" with "full MCP client support for all tools, both read and write". OpenAI's help centre article on the same feature has been reported to say something narrower — that full MCP including write actions is a beta for Business, Enterprise and Edu, with Pro limited to read and fetch. The two have not been reconciled publicly, and they may be describing two mechanisms that share a name: a personal developer toggle, and workspace-published apps an administrator enables.
What that means for you is unromantic but simple: on a personal Plus or Pro account, treat write actions as something to test rather than assume. Add the connector, ask it to create a project, and see whether you get a confirmation prompt or a refusal. That is a two-minute check and it beats any tier table, including this one — availability here has moved more than once, workspace administrators can disable the whole thing centrally, and the feature is web-only, so a phone will never show the toggle at all.
2. Writes are confirmed by default, and an edit is many writes
"Cut the dead air, caption it, put music under my voice and reframe it for Reels" is four operations with dependencies between them, and in practice more than four calls once the agent checks its own work. Write actions require confirmation by default, so that is a sequence of approvals rather than one. It is a reasonable safety default, and it is also the difference between conversational editing and clicking through a wizard.
Annotations are what keep the prompts honest, and Valmera sets all four rather than the one that would have been enough. Reads carry readOnlyHint. The only tool carrying destructiveHint is reset_edit — not modesty, but a property of the design: tools write to a versioned decision list, your upload is never modified, and any cut can be restored. openWorldHint is set on the ten tools that reach outside your project — stock search, link fetching and downloading, image, video and sound generation, and website recording — because a confirmation prompt that cannot distinguish "trim two seconds" from "go and load a URL" is not doing its job. OpenAI's app submission guidelines require exactly these three, and name incorrect labels as a common cause of rejection.
3. Your footage cannot be pushed from the chat window
MCP arguments are JSON, so raw bytes never cross the protocol. Valmera's upload_start hands back a presigned URL and the exact command to PUT the file to it — which needs a shell. A chat window does not have one. So footage arrives one of two ways: uploaded at valmera.io in the browser, or fetched by Valmera from a public link you paste. Both work fine; neither is the drag-and-drop people expect. Claude Code is the only client that does the whole thing headlessly, because it can run the command. Details in the upload documentation.
4. We have not verified this path end to end
Every step of the handshake below is checkable from outside and checks out. What we have not done is run a complete edit — connect, upload, cut, caption, render, export, download — from inside ChatGPT and watch it finish. We have done exactly that in the Claude app and in Claude Code, many times, including the failure cases. Saying "compatible" when we mean "tested" is the kind of claim that costs a reader an afternoon, so the two are kept apart on this page.
The Handshake, Step by Step
OpenAI documents what ChatGPT does when it connects to a protected MCP server. Here is each of those steps against what Valmera's live endpoint actually answers. The right-hand column is reproducible with one curl — which is the only reason it is worth printing.
| Step in the connect flow | What the endpoint answers |
|---|---|
| Unauthenticated request to the server URL | 401 with WWW-Authenticate: Bearer realm="valmera", resource_metadata="…/.well-known/oauth-protected-resource" |
| Read protected resource metadata (RFC 9728) | resource, authorization_servers, bearer_methods_supported: header, scopes_supported: valmera.edit |
| Identify itself as an OAuth client | Dynamic client registration (RFC 7591) at /mcp/oauth/register. Open registration, because the client has to enrol before any human is involved — it grants nothing on its own |
| Authorization code flow with PKCE, S256 | Required rather than accepted: code_challenge_methods_supported is ["S256"], and a request without a challenge is refused |
| Exchange the code, attach Authorization: Bearer | 8-hour access token, 90-day rotating refresh. Every credential is stored as a sha256 hash only |
| Streamable HTTP POST | JSON or a single-frame SSE reply, chosen by which one the client ranks first in its Accept header |
| Optionally open a server-initiated SSE stream | 405 — there is no stream to open. The server holds no session state; the active project lives on the grant, so a reconnect resumes where it left off |
Two details are worth pulling out. OpenAI prefers Client ID Metadata Documents for client identification where an authorization server supports them, and states that dynamic client registration "remains supported when configured" — Valmera implements the registration route, which is the path the Claude app already takes. And the last row is not a gap: the streamable HTTP transport makes a server-initiated stream optional, so answering 405 to a GET is the specified behaviour for a server that keeps no stream, not a missing feature.
One behaviour every client has to tolerate: slow work does not block. Renders, exports, pixel repainting and website recording exceed any sensible request budget, so they return a job id and the model calls wait_for_job. The server never reports a completion it has not seen. If your client treats a job id as a failure, that is the shape it will trip on.
Which Clients Can Drive Valmera Today
The column that decides your workflow is the third one. Everything else is setup you do once.
| Client | How the server is added | Getting your footage in | Verified end to end |
|---|---|---|---|
| Claude app | Settings → Connectors → Add custom connector, then an OAuth sign-in | Upload at valmera.io, or hand it a public link | Yes |
| Claude Code | claude mcp add --transport http, with OAuth or a bearer token | Directly — it has a shell and can run the presigned upload | Yes |
| ChatGPT, developer mode | Settings → Security and login → Developer mode, then Plugins → +. Web only, and check that writes are permitted on your plan | Upload at valmera.io, or hand it a public link | Protocol-compatible, not verified by us |
| ChatGPT, company knowledge and deep research | Closed — that path wants a server exposing search and fetch | — | Not applicable |
| Any other MCP client | Streamable HTTP with OAuth 2.1, dynamic registration and PKCE | Depends whether the client can run a shell command | Not verified by us |
It is a standard streamable-HTTP MCP server with OAuth 2.1, so a compliant client should work. We name the two we have tested rather than listing logos we have not — and we keep an honest comparison of every video editing MCP server, including where a different one is the better answer for what you are doing.
If the Connector Path Is Closed
If developer mode is not available on your account, nothing is lost — the connector was never the product. It is one way to reach an editor that also has a front door.
- Use valmera.io directly. The studio runs the same agent on the same engine, with the same 108 tools, and it does not ask you to approve each call. Upload, type the edit, watch the preview, correct it by talking. Everything the MCP path can do, this can do — plus a timeline, a player and an editable transcript when you want your hands on it.
- Use Claude. If what you want specifically is editing from a chat you are already in, the Claude setup guide is the verified route — one paste and one sign-in in the Claude app, or a bearer token in Claude Code.
- Keep ChatGPT for the part it is good at. Structure, script, titles, turning "something feels off" into a specific brief. That brief pastes straight into the studio as a request. Splitting the work along that line loses nothing and is what most people end up doing anyway.
Whichever route you take, the editing model underneath is the same: the agent writes to an edit decision list, never to your file. Your original upload is never modified, every operation is a version you can reverse by asking, and the final export renders from that original at source quality. That is what makes it reasonable to let an autonomous agent work on footage you cannot re-shoot.
Frequently Asked Questions
Skip the Connector, Keep the Chat
50 free credits, no card. Upload real footage at valmera.io and describe the edit — or connect it to Claude and do it from the conversation.
Start free →