Skip to content

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/mcp
Claude Code ─┐ │ │
Codex ─┤ token ────┘ ▼
your code ─┘ the Studio tool registry
│
scripts · videos · manifest edits · presets

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.

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.

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.

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.