Editory over MCP
Editory exposes its Studio tools over the Model Context Protocol, so an AI client can do the things you’d otherwise do in the web app: scrape an article, write a script, revise it, cut a video, and edit that video by describing the change.
It is the same tool registry the in-app Studio chat uses. There is no separate API surface to learn and no second implementation to drift.
claude.ai ─┐Desktop ─┤ sign in ────┐ChatGPT ─┘ │ ├──HTTPS──> https://editory.news/api/mcpClaude Code ─┐ │ │Codex ─┤ token ────┘ ▼your code ─┘ the Studio tool registry │ scripts · videos · manifest edits · presetsAuthentication
Section titled “Authentication”Two credentials reach the endpoint, and both resolve to the same account with the same tools.
| Signing in | A personal access token | |
|---|---|---|
| Looks like | A browser consent screen | edty_ + 43 characters |
| For | claude.ai, Claude Desktop, ChatGPT | Claude Code, Codex, your own code |
| Set up | Paste the URL; the client does the rest | Create one under Settings → API Access |
| Expires | Refreshed by the client | Never, until you revoke it |
Clients that only give you a box for a URL sign in. Clients that let you set a header can use a token. Claude Code will do either.
Sign-in needs no configuration on your side and no client id to register: the endpoint answers an uncredentialed request with a pointer to its authorization metadata, and a compliant client follows that pointer, registers itself and starts the browser flow on its own.
Connecting a client → has the per-platform steps, including what to check on the consent screen before approving.
What the tools can and can’t do
Section titled “What the tools can and can’t do”The registry covers the whole path from an article to an edited cut. Three limits are worth knowing before you plan around them.
It does not render. create_video_from_script runs the analysis and stops
with the video planned: the manifest exists and is watchable, but no MP4 has
been encoded. That’s deliberate: encoding before you’ve seen a frame buys
nothing, and the first edit would throw it away. Rendering is an explicit action
you take afterwards, in the web app.
So status: "planned" is a success. A client that waits for a URL to appear
will wait forever.
Uploads go through the web app. There’s no file-transfer channel in MCP, so tools that want footage take URLs. To use a local clip, upload it in the browser first and it becomes addressable from then on.
Some routes end in a browser. Recording on the teleprompter and building into a fixed layout both need a camera or a decision the person in front of it has to make. Write the script here, then open those flows in the app; the script will be waiting in the list.
Errors
Section titled “Errors”A tool that fails returns a structured error rather than a transport failure, so your client can recover instead of retrying blindly. The common one is naming a preset that doesn’t exist: the error carries the list of presets you do have, so the next call can be right.
Transport-level failures use JSON-RPC error codes: -32001 for a missing or
invalid credential, -32000 for a method other than POST, -32603 for an
unexpected server error.
About the endpoint
Section titled “About the endpoint”Streamable HTTP, stateless, POST only. Each request stands alone: no
session ids, no negotiation to keep alive, no event stream to hold open. A GET
gets a 405, which is not a fault; there’s simply nothing to stream.
That’s also why reconnecting costs nothing. A client can go away for a week and its next call works, provided the credential still does.