Skip to main content
Creatorline runs a remote, stateless MCP server. There is nothing to install and no local process, point your client at the URL with your API key.
  • Endpoint: https://api.creatorline.io/mcp
  • Transport: streamable HTTP (MCP revision 2026-07-28)
  • Auth: Authorization: Bearer <CREATORLINE_API_KEY> on every request
Every harness below connects to the same endpoint. The only thing that changes is where you paste the config.

Connect a harness

Install the plugin and Claude sets the connection up with you. No terminal at any point.Open Settings → Plugins, then Add → Add marketplace:
Claude's Plugins settings with the Add menu open, showing Add marketplace

The Add menu in Claude's Plugins settings

Choose Add from a repository and paste https://github.com/Creatorline/skills — the dialog wants the full address, not the owner/repo short form the CLI takes:
The Add marketplace dialog offering to sync from a GitHub repository or Git URL

Adding the marketplace from its repository

Then install Creatorline workflows. It carries the MCP server and the workflow skill together, so the address arrives already filled in.
Claude's Add custom connector dialog with the Creatorline name and address prefilled

The connector Claude offers when the plugin installs

Under Authentication choose None — the server takes an API key, not a sign-in. Then add a request header, pick x-api-key, and paste a key from Settings → API.
The Authentication section set to None and an x-api-key request header holding the key

Authentication set to None, with the key added as an x-api-key header

x-api-key rather than authorization: the dialog sends these headers alongside its own OAuth bearer token, and a header you own outright cannot collide with one the client sets. The server reads either.
Claude stores the value and never shows it again.
Prefer the CLI to write the config for you: crl mcp config prints the snippet for your harness, and crl mcp install runs claude mcp add on your behalf.

Tools

Discovery

list_models · list_voices · list_accounts · get_credit_balance · estimate_generation_cost

Generation

create_generation · get_generation · list_assets

Publishing

create_post · publish_post · list_posts

Workflows

get_workflow_catalog · list_workflows · get_workflow · validate_workflow · create_workflow · update_workflow · run_workflow · get_workflow_run
Nineteen coarse tools, not one per model. A tool per model would consume an agent’s context for no benefit; instead create_generation takes a tool and the model schema comes from list_models — which returns each model’s full shape: every input slot with its cap, every parameter with its allowed values or numeric bounds, what opaque values mean, whether a prompt is required, and how long a take can be. list_voices covers the one thing the catalog cannot enumerate, the live voice list the audio tools take.

How an agent should use it

1

Find out what exists

list_models for the catalog, list_accounts for the creators. Never guess an id.
2

Price it if the user asked

estimate_generation_cost is free and does not start anything. Give it the same inputs / source_url the real run will use: the source-billed tools (lipsync, motion-control, scene-video, change-voice, short-clip) charge per second of the source, so an estimate without the media is only a default-length guess.
3

Start and poll

create_generation returns a job handle immediately and reports the credits it charged. Poll get_generation every few seconds — a video takes minutes, and holding the tool call open would hit the client’s idle timer.Beyond tool / prompt / inputs / params, it carries source_url (work from a video link, for a tool whose catalog entry has accepts_source_url) and include_account_avatar (set false when the creator must not appear in the output).
4

Publish only on request

create_post puts a post in the review queue. publish_post makes it public — it is annotated as destructive so your client prompts first, and the tool description tells the model to confirm with the user.create_post carries the full composition: format, hashtags, draft, made_with_ai, physical_device, auto_add_music, photo_cover_index and per-platform overrides in platform_settings. See Publishing for what each one does. A setting the platform cannot take comes back as a plain-English error the model can act on, rather than a post that publishes wrong.Two of those have prerequisites the model cannot see, so both fail loudly instead of quietly: draft needs every targeted channel to support drafts, and physical_device needs the workspace’s phone posting enabled plus a creator bound to a device. publish_post then hands the post to every destination it carries, the connected channels and the bound phone alike.

Workflows

A workflow is the studio’s reusable pipeline: generation steps wired into each other, optionally ending in a publish step, run by hand, from an agent, or on a weekly schedule. The eight workflow tools author and run the same graphs the canvas does, validated by the same rules, so a workflow built over MCP opens on the canvas and a workflow drawn on the canvas reads back over MCP.
1

Read the vocabulary

get_workflow_catalog lists every stage a step can be (photo, photo-edit, video-ref, video-i2v, scene-video, lipsync, merge-clips, …), the models each offers, and the full shape of each model: input slots with their modality, params with allowed values, whether a prompt is required, whether it may run verbatim, take length and price. Pass stage to keep the answer small. Never guess a stage, model or slot id.
2

Write the graph

A graph is nodes plus edges. A generation node is { id, kind: "generation", stageId, modelId?, prompt, params, slotBindings? }. A publish node is terminal; its prompt is the caption. A text node is a named list of values that any prompt reads as @name; an image node is a list of asset ids wired into one slot. An edge is { source, target }; handles default to the source’s output modality (image, video, or audio for the speech steps) and the first matching slot on the target.Two params are the composer’s, not the model’s. enhance: false sends your prompt to the provider exactly as written, with no AI rewrite, no persona and no template, which is what you want when the prompt is already final. inject_persona: false keeps the creator’s persona out of a composed prompt.
3

Validate for free, then save

validate_workflow returns every problem at once (unknown ids, a modality mismatch, a cycle, a publish node with an outgoing wire), the step order, the model each step will really execute and the cost of a full run. Iterate until ok is true, then create_workflow with the same nodes and edges. Bind an account_id so steps inherit the creator’s look and a publish step knows whose channels to use.
4

Run and poll

run_workflow with dry_run: true reports the plan without spending. Without it, it returns a run handle and charges each step as it executes; poll get_workflow_run for per-node state, output URLs and credits. only_node_ids runs a subset, reuse_from_run_id serves unchanged steps from an earlier run. A publish step lands the post in the review queue as pending_review; nothing goes public from a workflow.
Porting a pipeline from another tool? Install the creatorline-workflows skill in your agent: it carries the graph grammar, the quality ladder per stage and a porting playbook, so the agent builds the right graph on the first try.

Multi-tenancy

The workspace comes from the API key, never from a tool argument. There is no workspace_id parameter anywhere in the tool surface, so a model cannot be talked into reading another organization’s data. A read-scope key gets a plain-English refusal from the writing tools rather than a protocol error, so the agent can explain the problem instead of retrying.

Stateless

The server implements the 2026-07-28 MCP revision: no session id, no handshake, no resumable streams. Every request builds a fresh server instance bound to the calling key. In practice that means it never gets into a bad session state, it scales horizontally, and reconnecting costs nothing.
https://api.creatorline.io/mcp/<key> is the identical endpoint with the key read off the path: same parse, same constant-time comparison, same revocation, expiry, scope and rate limit. It exists for clients that accept nothing but an address.Prefer a header wherever one is offered. A URL is written to proxy logs and browser history, and it travels whole when somebody pastes it into a chat; a header is not and does not. If a connector URL does leak, revoke that one key — which is the argument for minting a key per connector rather than reusing one.OAuth is still the destination, and it retires the path form entirely.

Results stay small

Media comes back as URLs, never inline. Lists default to 20 rows and page. Claude Code truncates tool output at 25,000 tokens, so the tools are built to stay well under that — if you need everything, page rather than raising the limit.