Katechon / Engine MCP contract v1.2.0

Katechon Engine MCP

One remote MCP server over the Katechon ad engine. A brief goes in; a structured spec, still sketches, and a finished cut come out. Ten tools, frozen at v1 — names, arguments, enum values, and error codes do not change inside major version 1; response fields are additive only.

01 Endpoint

https://mcp.katechon.technology/mcp
Transport
Streamable HTTP (MCP). One path serving POST, GET, DELETE.
Session
Stateless — no Mcp-Session-Id. Any two requests may hit different instances.
Response
Adaptive: JSON for simple calls, SSE when the server streams. Send Accept: application/json, text/event-stream.
Version
MCP-Protocol-Version is honored; an unsupported version is answered 400.

02 Auth

Bearer token, provisioned per client. Every request — every method, every path, including /healthz — must carry the header:

Authorization: Bearer YOUR_TOKEN

Anything else is answered 401 with WWW-Authenticate: Bearer and a JSON-RPC -32001 body, before path routing — an unauthorised caller learns nothing about the surface behind it.

Tokens are issued by hand, one per client. Ask for one. OAuth is the target and will supersede the token; the tool contract does not change when it lands.

03 Client config

Standard MCP client config. Replace YOUR_TOKEN with the token you were issued — keep it out of source control.

{
  "mcpServers": {
    "katechon": {
      "type": "http",
      "url": "https://mcp.katechon.technology/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN"
      }
    }
  }
}

Sanity check from a shell:

curl -sS https://mcp.katechon.technology/mcp \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

04 Tools

ToolDoes
workspace_connectWhat we know about you; what’s missing.
workspace_onboardRaw client material → structured workspace. Reserved; not implemented in v1.
ad_intakePrompt + context → structured questions, including output depth.
ad_planAnswers → typed spec + deterministic checks + cost/time estimate. Nothing spent.
ad_stillsStills only → review page → signed URL + images.
ad_renderContinue the same run to a finished cut → review URL + bundle + manifest. depth: kenburns | full.
run_statusProgress, history, spend for one run.
run_listHistory across runs.
report_bugFile a bug or feedback from inside the session — run context attached, tracked on our side.
engine_versionTag, sha, model versions, contract version.

05 Depths

Three output depths, all live. ad_intake asks which one; the call that produces it differs.

DepthCallTimeCostReturns
stillsad_stills 1–2 min~$0.20 Review page of stills. The sane default first call.
kenburnsad_render 3–6 min$2–5 Cut from the stills, with VO, captions, and music.
fullad_render 20 min – hours$12–85 Multi-model motion, judged. Async by default — poll run_status.

06 Notes

katechon.technology [email protected] Katechon Technology