Alto

Alto hosts your finished demo, walkthrough and update videos and gives each recipient their own link. You see who watched, how far they got and which moments landed. Works from Claude and other MCP clients, so an agent can send and follow up for you.

Hosted MCP Server

npx add-mcp 'https://alto.video/mcp'

Installs into Claude Code, Codex, Cursor and more

Documentation

Connect your agent to Alto

Alto’s MCP server lets Claude Code, Cursor or any MCP client upload a finished demo, create a tracked link for each recipient and read who watched, with one API key and nothing to install.

Alto hosts demo videos and tells you which moments landed. This guide connects an agent to it in two steps: make a key, then add the server. Everything the agent does uses your account’s plan and limits, and shows up in your studio like any upload.

1. Make an API key

In the studio, open Settings › API & agents and create a key named after the machine or agent, such as “Claude Code on my laptop”. It is shown once; copy it then. Every key starts with alto_. Revoke it from the same page whenever you like.

2. Add Alto’s MCP server

The server is at https://alto.video/api/mcp. It speaks MCP’s Streamable HTTP transport and signs the agent in with the key as a bearer token.

Claude Code

claude mcp add --transport http alto https://alto.video/api/mcp \
  --header "Authorization: Bearer $ALTO_API_KEY"

Cursor, Windsurf and other MCP clients

Add Alto to the client’s MCP configuration (for Cursor, ~/.cursor/mcp.json):

{
  "mcpServers": {
    "alto": {
      "url": "https://alto.video/api/mcp",
      "headers": { "Authorization": "Bearer alto_…" }
    }
  }
}

Then ask the agent something like “upload demo.mp4 to Alto and make a link for Michelle at Pruitt”.

In ChatGPT and Claude

Chat apps sign in instead of holding a key. In Claude, add Alto from Claude’s connector directory. Elsewhere, Alto’s chat server is at https://alto.video/mcp: add it in ChatGPT (developer mode, until Alto is listed in ChatGPT’s plugin directory) or any client that takes a custom connector. The app sends you to alto.video to sign in, or to create a free account, and to press Allow. From then on, give it a video and say who it’s for, or ask whether someone watched.

The chat server has upload_attached_video_and_create_links, which takes the video you attached to the conversation, along with import_video_from_url_and_create_links, create_link, list_videos, list_links, list_viewers and get_moments. It has no tools that delete or touch billing. Every app you connect is listed under Settings › API & agents, where Disconnect stops it at once.

Coding agents that sign in through the browser can use it too:

claude mcp add --transport http alto-chat https://alto.video/mcp
# Claude Code opens the browser to sign in to Alto; no key to paste

To upload a file from the agent’s own disk, use the key-based server above: it has the part upload a chat model can’t do.

The tools your agent gets

ToolWhat it doesPlan
upload_videoUpload a finished video that is already online (an https URL, up to 2 GB), publish it and make one tracked link per recipient.Every plan
create_uploadStart uploading a file from the agent’s machine. Answers one URL per 50 MB part.Every plan
complete_uploadJoin the parts, publish the video and make one tracked link per recipient.Every plan
create_linkMake a tracked link to a video for one more person, with an optional personal note and expiry.Every plan
list_videosThe library, newest first, with each video’s share link and totals.Every plan
list_linksEvery recipient link with its status: watching, watched, opened, not opened or expired.Every plan
list_viewersEveryone who opened a link, forwards included, with how much they watched.Every plan
get_momentsPlays, how far each chapter reached, the part people rewatched and where the most viewers left.Pro

Uploading a file from the agent’s machine

A hosted server can’t read your disk, so a local file goes up in parts that the agent sends itself. It calls create_upload with the file’s size, type and length in seconds, and gets back one URL per 50 MB part. It sends each part’s exact bytes to its URL with the same key and keeps the etag each one answers:

curl -sS -X PUT "<part URL from create_upload>" \
  -H "Authorization: Bearer $ALTO_API_KEY" \
  --data-binary @part-1.bin
# → {"part":1,"etag":"…"}

Then complete_upload with the etags, a title and the recipients publishes the video and answers its share link and one link per person. The plan is checked before any bytes move, so an upload over the month’s limit is refused up front with the numbers.

The CLI

The alto command does the same from a terminal: alto login prints a link, you approve it in the browser, and every later command on that machine is signed in. ALTO_API_KEY in the environment takes precedence, for CI. Every command takes --json for agents.

alto login                     # connect this machine: open the link, approve
alto upload demo.mp4 --title "Fleet QA for Pruitt Logistics" \
  --link "Michelle Barba <michelle@pruitt.example>" --json
alto link <id> "Greg Tomczak <greg@pruitt.example>" --note "The pricing part is at 1:28"
alto links <id>                # who opened, who watched, who hasn't
alto moments <id> --since 24h  # Pro: what they rewatched, where they left

The CLI is a single Node 22 script with no dependencies and is on its way to npm. Until it lands there, the MCP server and the HTTP API do everything it does.

Limits and errors

  • GET /api/capabilities with the key answers this month’s videos used and left, storage, and the longest video and largest file the plan takes.
  • A 403 means the upload is over what the plan takes, and a 429 a rate limit. Each answer says the numbers; report it rather than retrying.
  • Free takes 10 new videos a month and 25 recipient links; Pro takes 100 videos a month with unlimited links. Every limit, plan by plan.

Questions

Which agents work with Alto’s MCP server?

Any MCP client that connects to a remote server over HTTP and can send an Authorization header: Claude Code, Cursor, Codex, Windsurf and others. Agents without MCP can use the same API key with plain HTTP calls.

Does connecting an agent cost extra?

No. Agent uploads through the MCP server and the CLI are on every plan, Free included, and agents never count as seats. Reading moments is part of Pro at $19 a month.

Can the MCP server upload a file from my laptop?

Not by itself: a hosted server can’t read your disk. The agent calls create_upload, sends the file’s parts to the URLs it answers with the same key, then calls complete_upload. For a video already online, upload_video takes an https URL.

Is it safe to give an agent an API key?

A key can upload and manage your videos and links, but it cannot create, list or revoke keys or start a checkout. Keys are stored hashed, shown once, and revocable at any time from Settings › API & agents. Keep them out of commits, logs and the video itself.

Can I use Alto in ChatGPT or Claude?

Yes. In Claude, add Alto from Claude's connector directory (https://claude.ai/directory/alto); in ChatGPT, add https://alto.video/mcp. Sign in to Alto and press Allow, then give it a finished video and say who it is for; Alto hands back one tracked link per person. No API key is involved, and you can disconnect the app any time in Settings › API & agents.

Does Alto record the video?

No. The agent records with Playwright or agent-browser, or uses a file you already have, in MP4, MOV or WebM. Alto hosts it and tells you who watched.

Next: how agents use Alto end to end, or create a free account and make your first key.