Alto
Server Details
Send a finished video with one tracked link per recipient, and see who watched and how far.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 8 tools
Most tools target clearly distinct resources and actions, but the upload surface includes create_upload, complete_upload, and upload_video, which could be confused without reading descriptions. The analytics tools get_moments and list_viewers also overlap in watching metrics but differ in granularity.
All tool names use consistent snake_case with a predictable verb_noun pattern: complete_upload, create_link, create_upload, get_moments, list_links, list_videos, list_viewers, upload_video. There are no mixed conventions or vague standalone verbs.
Eight tools is well-scoped for a video upload, sharing, and analytics service. Each tool has a distinct role in the workflow, and the count avoids both thinness and bloat.
Core workflows for uploading videos, creating tracked links, and listing viewers/analytics are present. However, there are notable lifecycle gaps: no update or delete operations for videos or links, and no explicit tool to disable a link despite statuses like disabled/expired being listed.
Available Tools
8 toolscomplete_uploadFinish an upload and send itAInspect
Join the parts of an upload started with create_upload, create the video, and make one tracked link per recipient. Returns the video, its share link and each recipient's link.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | The readable part of the link, optional. | |
| parts | Yes | Every part's { part, etag }, from the PUTs. | |
| title | Yes | What the prospect sees, e.g. "Fleet QA for Acme Logistics". | |
| duration | No | Length in seconds. Needed unless Alto can measure the file. | |
| uploadId | Yes | ||
| recipients | No | Who to send it to: one tracked link each. Strings like "Dana Whitfield <dana@acme.example>", or objects { name, email, company, title, note }. | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so mutation is known. The description usefully adds that it creates both a video and per-recipient tracked links and returns them, but it does not warn about the non-idempotent behavior (re-running could create duplicate videos/links), which is the most consequential trait an agent needs here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences: the first front-loads the action sequence, the second states the return values. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description helpfully enumerates the return payload (video, share link, recipient links), which is what an agent needs for downstream chaining. It stops short of covering retry/non-idempotency and the duration fallback condition ('unless Alto can measure the file') that the schema alone hints at.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71%, so the schema documents most parameters itself. The description adds meaning only for 'recipients' via 'one tracked link each', leaving uploadId, parts, title, duration, and slug to the schema — adequate but not compensating for the uncovered remainder.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States three concrete actions (join parts, create the video, mint one tracked link per recipient) with a specific verb+resource, and explicitly ties itself to the sibling create_upload as the originating step. An agent can distinguish it from create_link, create_upload, and upload_video without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'an upload started with create_upload' makes the prerequisite workflow clear, so an agent knows this is the terminating step of a multi-part upload. It does not, however, address when to prefer this over the create_link sibling for single-link cases, nor any failure/retry conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_linkMake a recipient linkAInspect
Make a tracked link to a video for one person, so every view is tied to them. Returns the link's URL to paste into an email.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Who it's for, e.g. "Dana Whitfield". | |
| note | No | A personal note shown on their demo page. | |
| No | |||
| title | No | Their job title. | |
| company | No | ||
| videoId | Yes | ||
| expiresInDays | No | Days until the link stops working; null never expires; left out uses the workspace default. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, non-destructive, non-idempotent, closed-world, so the safety profile is covered. The description adds two things annotations cannot: the tracking semantics of the created link and the fact that it returns the URL — meaningful because there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, action first, return value second; nothing redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, and the description helpfully states the return value. However, for a 7-parameter mutation with 57% schema coverage it leaves email/company/videoId semantics and expiration defaults to the schema or to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 57% (email, company, videoId undocumented), and the description adds no per-parameter meaning beyond the schema's own notes on name, note, title, and expiresInDays. It does not compensate for the uncovered fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource (make a tracked link to a video) and narrows the scope to 'one person' with the tracking effect, which cleanly separates it from list_links and the upload siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'for one person, so every view is tied to them' implies the per-recipient use case, but there is no explicit when-to-use vs alternatives, no prerequisites, and no note on what happens if the same person is linked twice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_uploadStart an uploadAInspect
Start uploading a finished video (MP4, MOV or WebM) in parts. Returns an uploadId and one URL per part: PUT each part's exact bytes to its URL with the same Authorization header, keep the etag each PUT answers, then call complete_upload. Parts are partBytes long except the last.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | video/mp4, video/quicktime or video/webm. | |
| bytes | Yes | The file's size in bytes. | |
| duration | No | Length in seconds, if known. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-readonly, non-idempotent, non-destructive. The description adds real behavioral context beyond them: the Authorization header must be reused on each PUT, the etag from each PUT must be retained, and the part-byte sizing rule. It does not say whether repeated calls create duplicate sessions or how long the uploadId stays valid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense paragraph, front-loaded with what the tool does and what it returns, followed by the required client steps. Every clause carries information; only the undefined 'partBytes' reference adds noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully explains the return (uploadId plus one URL per part) and the complete workflow. Minor gaps remain around session lifetime, part size origin, and how this differs from the sibling upload_video.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so type, bytes and duration are already documented. The description adds the partSize rule ('partBytes long except the last'), but partBytes is never defined as an input parameter, which leaves it ambiguous where that value comes from. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Start uploading a finished video') plus the accepted formats and the return shape (uploadId and per-part URLs). It clearly positions itself as the multipart-session opener in the upload flow, but it never distinguishes itself from the sibling upload_video, which an agent could easily confuse with this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear procedural context: use this to start a part-based upload, then PUT each part's bytes, then call complete_upload. It routes to the follow-up sibling by name, but offers no explicit when-not guidance (e.g. small files or the single-shot upload_video).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_momentsHow a video landedCRead-onlyIdempotentInspect
Plays, how much people watched, how far each chapter reached and which one was rewatched, and where the most viewers left. Part of Pro's full API.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | Only plays in this window: 90m, 24h, 7d, 2w. | |
| videoId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds a useful access requirement by noting this is 'Part of Pro's full API,' implying a plan restriction. It does not disclose rate limits, return format, or pagination, but with annotations carrying the safety burden, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the measurable outcomes, which is good. However, the trailing sentence 'Part of Pro's full API' is marketing filler that does not help an agent invoke the tool correctly, and the opening lacks a clear action verb. It is concise but not maximally structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description helpfully previews the returned metrics, which is the strongest part of the definition. But it omits any guidance on the required videoId parameter, the optional time-window parameter, and what the response structure looks like. For a read-only analytics tool with only two parameters, the description is adequate but leaves clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: the 'since' parameter is documented in the schema, but 'videoId' has no description anywhere. The tool description never mentions either parameter or how to scope the query, so it does not compensate for the coverage gap. Given the sparse description and 2-parameter schema, the description adds no parameter-level value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description lists the specific metrics returned (plays, watch depth, chapter reach, rewatches, drop-off) but never supplies a clear verb or states that this tool retrieves per-moment/chapter analytics for a given video. 'Moments' is never defined, and the title 'How a video landed' is vague. It does distinguish itself from the upload/link/list siblings, so it avoids confusion, but the core purpose remains implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance or alternatives are given. The only contextual clue is 'Part of Pro's full API,' which hints at a subscription prerequisite but does not explain when an agent should call this tool instead of, say, list_videos or list_viewers. The agent is left to infer usage entirely from the returned-metrics list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_linksRecipient linksARead-onlyIdempotentInspect
Every recipient link, or one video's, with its status (watching, watched, opened, not opened, expired, disabled) and how much was watched.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | ||
| videoId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuine value by disclosing the status vocabulary and that watched-amount data is included, beyond what annotations convey. It stops short of addressing pagination or result ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the resource and scope front-loaded and zero filler. The parenthetical status list is the only bulk, and it earns its place by clarifying return values.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with no output schema, the description covers what is returned but omits pagination, default behavior when neither filter is set, and result ordering. Adequate but with clear gaps for an agent deciding how to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for both params, so the description must compensate. It does partially: enumerating status values maps to the status param and 'one video's' maps to videoId. However it never states these are optional filters or how they combine, so the mapping is inferential rather than explicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (recipient links) and both scope modes (every link or one video's), plus what the record contains. An agent can distinguish it from create_link/complete_upload, though it doesn't explicitly contrast itself with siblings like list_viewers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'every link, or one video's' phrasing implies how to scope the call, which maps onto the two optional params. But it gives no explicit when-to-use guidance, no mention that filters are optional, and no alternative-tool routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_videosYour videosBRead-onlyIdempotentInspect
Your library, newest first, with each video's id, title, share link and totals.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world behavior, so the safety profile is covered. The description adds useful behavioral context by disclosing sort order and the returned fields, though it says nothing about pagination or result-size limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence that leads with the resource, then the ordering, then the return fields. Efficient with no filler, though extremely terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return-value burden and does name the fields (id, title, share link, totals) plus sort order. For a zero-param read-only list with annotations covering safety, this is essentially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is nothing to disambiguate; baseline 4 applies. Schema description coverage is 100% and the empty schema is consistent with the parameterless description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Your library' / list videos) and adds scope detail ('newest first, with each video's id, title, share link and totals'). It doesn't name a sibling, but 'library' and 'videos' implicitly separate it from list_links and list_viewers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no exclusions versus the sibling list_* tools. The agent must infer that this is the unfiltered personal library listing, with nothing routing it away from list_links or list_viewers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_viewersWho watchedBRead-onlyIdempotentInspect
Everyone who opened one of your links: recipients, people their links were forwarded to, and anonymous viewers, with how much they watched and whether they're watching now.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorld=false, so the safety profile is covered. The description usefully discloses the breadth of returned data (anonymous viewers included, live 'watching now' status), but says nothing about the filter's behavioral effect, result size, or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence that leads with the core resource ('Everyone who opened one of your links') and then enumerates the useful detail. Efficient, though the comma-segmented clause stack is slightly dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of explaining what comes back (viewer types, watch amount, live status), which is appropriate for a read-only list tool. The only real omission is any explanation of the filter parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single filter parameter with enum values (watching, engaged, dropped) and 0% schema description coverage, yet the description never mentions it or what the three states mean. The enum names are somewhat self-evident but the description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and scope: everyone who opened one of your links, broken down by recipient, forwarded, and anonymous viewers, plus watch depth and live status. An agent can tell this is a viewer/engagement listing tool, though it never explicitly contrasts itself with siblings like list_links or get_moments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no statement of prerequisites, and no named alternative for filtering or exploring related data. The agent must infer entirely from the name and one enum parameter that this is the viewer-detail view.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_videoUpload from a URL and send itAInspect
Upload a finished video that is already online (an https URL Alto can download, up to 2 GB), create it, and make one tracked link per recipient. For a file on your machine, use create_upload.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | An https URL of the video file. | |
| slug | No | ||
| title | Yes | ||
| duration | No | Length in seconds. Needed unless Alto can measure the file. | |
| recipients | No | Who to send it to: one tracked link each. Strings like "Dana Whitfield <dana@acme.example>", or objects { name, email, company, title, note }. | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare non-read-only, open-world, non-idempotent. The description adds real context beyond that: the 2 GB cap, that the URL must be https and downloadable by Alto, and the side effect of creating one tracked link per recipient. It does not cover failure modes or whether emails are actually dispatched.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste, with the core purpose front-loaded and the sibling routing rule trailing. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-param creation tool with no output schema, the description covers the key inputs and side effects. Minor gap: it implies but does not state whether recipients are notified/emailed, which matters for a tool whose title says 'send it'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%; url and recipients are documented, while slug, title, duration, and description are not. The description reinforces url constraints (https, 2 GB) and the per-recipient link semantics, which is useful, but it does not compensate for the undocumented slug/duration/description parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (upload a finished video that is already online), the mechanism (URL Alto downloads), and the downstream effect (create it, one tracked link per recipient). It explicitly distinguishes itself from the sibling create_upload for local files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative explicitly (create_upload) and the exact condition that selects it (a file on your machine). The agent knows which of the two upload paths to pick without inspecting either schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
- First observed
complete_upload - First observed
create_link - First observed
create_upload - First observed
get_moments - First observed
list_links - First observed
list_videos - First observed
list_viewers - First observed
upload_video
Related MCP Connectors
- shareOAuthcom.htmlradar
Send a web page to specific people, control who opens it, see how it was read, and update it.
- SendheyOAuthapp.sendhey
Turn AI-built work into tracked, gated share links your clients can open.
Send, track, and manage transactional and bulk email delivery
Drop in a video, get a link that plays anywhere — plus chapters, player styling and analytics.
Related MCP Servers
- AlicenseAqualityCmaintenanceCreate and deliver personalized video gifts (photos + an original song) from any Model Context Protocol client.537 npmMIT
- -licenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to create video replicas by providing a product image and a reference video, with status tracking and credit management.-
- AlicenseAqualityCmaintenanceEnables MCP clients to submit public video links or local video files for analysis and receive AI-generation probability scores for picture and sound, with tools to retrieve results and check remaining credits.4MIT
- FlicenseAqualityCmaintenanceComposes ~30-second tech-illustration videos from a fixed library of Remotion components, renders them to MP4, and returns shareable URLs.3-
Glama MCP Gateway
Add one secure layer between your agents and this server.