Give your agent eyes on video.

EndlessAI's hosted MCP server gives AI agents — Claude, Codex or any MCP client — video understanding, over streamable HTTP at https://platform.endlessai.com/mcp. Your agent can add videos, scan them, search frames and scenes, and ask the video agent — with the same key and the same prices as the REST API.

Credentials

Every request carries X-Api-Key. A project key (svk_…) scopes the agent to one project — the recommended default. A user token (svt_…) reaches all your projects and can create new ones.

Create either on the Developers page in the app. A bad key fails at connect time, not on the first tool call.

claude.ai

Add a custom connector with this URL. The server supports OAuth, so you sign in to the Platform and pick a project instead of pasting a key.

https://platform.endlessai.com/mcp

Connect a client

Claude Code

claude mcp add --transport http supervision https://platform.endlessai.com/mcp \
  --header "X-Api-Key: svk_..."

Claude Desktop

In claude_desktop_config.json:

{
  "mcpServers": {
    "supervision": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://platform.endlessai.com/mcp",
               "--header", "X-Api-Key: svk_..."]
    }
  }
}

OpenAI Agents SDK (Python)

from agents.mcp import MCPServerStreamableHttp

server = MCPServerStreamableHttp(params={
    "url": "https://platform.endlessai.com/mcp",
    "headers": {"X-Api-Key": "svk_..."},
})

Any MCP client (TypeScript SDK)

import { StreamableHTTPClientTransport } from
  "@modelcontextprotocol/sdk/client/streamableHttp.js";

const transport = new StreamableHTTPClientTransport(
  new URL("https://platform.endlessai.com/mcp"),
  { requestInit: { headers: { "X-Api-Key": "svk_..." } } },
);

19 tools

spends tokens marks the tools that start analysis work.

list_projects
list accessible projects
create_project
create a project (svt_ only)
get_project_config
read whitelisted analysis config (smart_scan, first_pass.auto_trigger, strategy.watch_for)
update_project_config
read-modify-write update of that same whitelisted config
list_videos
paginated video list for a project
get_video_status
single video processing status
upload_video_from_urlspends tokens
ingest video from a public URL; polls to terminal status; resume with get_video_status
upload_video_filespends tokens
upload a local file path (stdio-only, multipart; not on hosted transport)
trigger_smart_scanspends tokens
run a Smart Scan on a video: scene descriptions and summaries (dry_run:true = plan only, nothing is spent; returns run_id if the plan outlasts wait_seconds, default 45s)
get_smart_scan_results
scan status + summary merged (by video_id), or a dry-run plan (by run_id)
search_frames
find moments in a project's videos from a text description, or moments that look like a reference frame
search_scenes
text search over a project's scenes
list_face_persons
list face-gallery persons for a project
label_face_person
set/clear a face-gallery person's label
trigger_face_scanspends tokens
find the faces in a video and add them to the project's face gallery
get_usage
token/cost usage for a project, optional per-event list
ask_video_agentspends tokens
expensive, can take several minutes; the video agent answers a question about the project's videos with multi-step reasoning; returns answer or run_id
get_agent_run
poll/resume a prior ask_video_agent run by run_id; a completed run may also carry `correction` (a self-check found the run's own evidence contradicts the answer — the correction wins)
get_conclusions
site knowledge recorded for a project — claims from prior analyses with status (verified/proposed/refuted/stale), provenance and evidence refs; a claim is not a fact, quote `text` (returns enabled=false when site knowledge is off)

Long work never hangs

A hosted call is limited to about a minute. Work that takes longer keeps running: uploads, scans and video-agent questions return an id the agent polls with the matching get_* tool.

Limits

Plan for 120 requests a minute per credential, and one video-agent question at a time per credential. When the balance or monthly cap runs out, calls that spend tokens stop with a 402.

Need more than the tools?

The same key works on the REST API — every operation is in the reference.