Treza
Server Details
Build, run, schedule, and publish AI video pipelines to YouTube and TikTok from any MCP client.
- Status
- Healthy
- Uptime
- 38.0% over 35 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- treza-labs/treza-plugin
- GitHub Stars
- 0
- Server Listing
- Treza MCP
TDQS
Scored across 24 tools
Tools are well-differentiated with explicit cross-references in descriptions (e.g. assemble_video vs edit_asset vs run_pipeline). A few overlaps remain—assemble_video and edit_asset both transform media, and get_credit_balance vs estimate_run_cost both deal with cost—but descriptions clearly steer choices.
All 24 tools use snake_case with a consistent verb_noun pattern (list_, get_, create_, update_, publish_, etc.). No mixed conventions or vague names.
24 tools is heavy for any server; while most earn their place in a complex pipeline platform, a few (open_library, confirm_publish) are panel-only and add surface area without model-facing value.
Core lifecycle for pipelines, runs, assets, and publishing is covered, including creation, retrieval, update, run, and publish. Missing delete operations for pipelines/assets and a run-cancel tool; minor gaps that agents can work around.
Available Tools
24 toolsassemble_videoAssemble videoADestructiveInspect
Join clips the account already has into ONE finished video, in the order given, optionally over a voiceover (narrationUrl) and a music bed, which become separate tracks with the clips ducked under the voice, and with burned-in captions. The bed is a track from the library (musicUrl) or one composed for this cut from a description (musicPrompt), never both. One clip plus a track is how to put music or narration under a single video: "add music to my video" is clipUrls [that video] with a musicPrompt, and no pipeline to build. Every url must come from list_assets or a run's outputs in get_run. Stills hold 3 seconds each, or stretch so a longer voiceover plays in full; lengthSec in the result is how long the cut will run, and any warning in it should be passed on. Renders in the background: poll get_run with the returned pipelineId and runId. Free once the account has bought credits (the result carries charged: false), so never ask a paying account to top up before assembling; charged on a trial. Needs the pipelines:run and pipelines:write scopes.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | What to call the render, e.g. "Beach trip cut". | |
| captions | No | Transcribe the finished edit and burn captions in. Only worth it when the clips or narration contain speech. | |
| clipUrls | Yes | Video or image urls in play order: two or more, or exactly one when narrationUrl, musicUrl or musicPrompt is set. | |
| musicUrl | No | Music bed under the whole edit, beneath the clips' own sound and any narration: an audio url from list_assets. Leave it out when passing musicPrompt. | |
| transition | No | How each shot hands off to the next. Defaults to a hard cut. | |
| musicPrompt | No | Compose the music bed for this cut instead of taking one from the library: genre, mood, tempo and instruments, e.g. "calm cinematic ambient, soft piano, gentle pads, no vocals". It sits and ducks exactly like a musicUrl bed and takes the same fades. Written by the Audio Generation node's default model (get_node_type music-gen), or its full-song model when the cut runs past 30 seconds; the result names the model as composedMusic. Leave it out when passing musicUrl. | |
| orientation | No | "vertical" is 1080x1920 for Shorts, Reels and TikTok, "horizontal" is 1920x1080, "match_first" (the default) keeps the first clip's shape. Shots that do not fill the frame are letterboxed, never cropped. | |
| narrationUrl | No | Voiceover laid over the whole edit. Everything else ducks under it. | |
| audioFadeInSec | No | Fade the music bed (or the only track) up over this many seconds at the start. Applies to a composed bed too. | |
| audioFadeOutSec | No | Fade the music bed (or the only track) down over this many seconds at the end; 2 to 4 reads as a deliberate ending. Narration is never faded when there is a bed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the safety profile (readOnly=false, destructive=true, idempotent=false), yet the description goes well beyond them: asynchronous background rendering with get_run polling via pipelineId/runId, billing semantics (charged:false for credit-holding accounts, 'never ask a paying account to top up', charged on trial), and required scopes (pipelines:run, pipelines:write). This is exactly the operational context an agent needs and cannot get from structured fields.
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?
Dense but front-loaded, with the core action and ordering constraint first and the operational notes (polling, billing, scopes) last. It is long for a single paragraph and some clauses could be trimmed, but nearly every sentence carries decision-relevant 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?
There is no output schema, so the description compensates by naming the result fields that matter (pipelineId, runId, lengthSec, charged, composedMusic, warnings) and instructing the agent to relay warnings. For a 10-parameter asynchronous render tool, the coverage of inputs, lifecycle, and billing is complete enough to call it correctly.
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 already 100%, so the baseline is 3, but the description adds real semantics beyond the schema: the musicUrl/musicPrompt mutual exclusion, the single-clip-with-track case, stills holding 3 seconds or stretching to fit a longer voiceover, and the ducking behaviour of the bed. It stops short of covering every parameter (orientation, transitions are left to the schema), hence 4 rather than 5.
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 opens with a specific verb and resource ('Join clips ... into ONE finished video, in the order given') and immediately enumerates the variations (voiceover over, music bed under, captions burned in) so an agent can tell exactly what this tool produces versus siblings like run_pipeline or edit_asset.
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?
It gives explicit when-to-use routing: single video with music/narration is done here with clipUrls plus musicPrompt and 'no pipeline to build,' whereas full pipelines belong to the sibling tools. It also names the alternatives for sourcing urls (list_assets, get_run outputs) and states the mutex rule (musicUrl vs musicPrompt, never both), leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_publishConfirm publishAInspect
Posts a video prepared by publish_asset, with the settings the person chose in the publish panel. Called by the panel when they press Post, never by the model.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| title | Yes | ||
| token | Yes | ||
| disclose | No | ||
| allowDuet | No | ||
| synthetic | No | ||
| visibility | No | ||
| allowStitch | No | ||
| description | No | ||
| allowComment | No | ||
| brandOrganic | No | ||
| privacyLevel | No | ||
| brandedContent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is not read-only and is not idempotent. The description adds useful context by indicating it publishes a previously prepared video and is panel-initiated. However, it does not disclose consequences such as irreversibility, side effects, or required authentication/authorization beyond the token parameter.
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 two sentences with no filler. The main action is stated first, and the critical 'never by the model' constraint is front-loaded in the second sentence.
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 tool the model is explicitly told never to call, the description provides enough context to prevent misuse and to explain when the panel would invoke it. Missing details like prerequisites and return behavior are less critical because the model is barred from direct invocation.
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 0%, and the description gives no parameter-level guidance. It only refers generically to 'settings the person chose in the publish panel,' which does not help an agent understand the token, visibility, tags, or boolean fields. For 13 parameters, this is a significant 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 verb and resource: it 'Posts a video prepared by publish_asset' using settings from the publish panel. It clearly differentiates this tool from its sibling publish_asset by framing it as the final confirmation step rather than the preparation step.
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?
Explicitly states when it is used: 'Called by the panel when they press Post.' It also gives a strong exclusion: 'never by the model.' This leaves no ambiguity about when the agent should invoke it versus avoid it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connect_channelConnect channelARead-onlyIdempotentInspect
A link the person opens to connect a YouTube channel or a TikTok account to their Treza account, so a pipeline can post there. Returns what is already connected on that platform and connectUrl. Only the person can finish it, in their own browser: give them the link, tell them the platform will ask their permission to post and that the page says when it is connected, and after they say so check list_connected_channels. The link asks them to sign in to Treza first with the Google account this connection uses, and it does not expire. When something is already connected, the link adds another, so only offer it when that is what they want.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | Yes | Which account to connect. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, idempotentHint, destructiveHint) already establish safety. The description adds essential behavioral context: the link requires user action in their own browser, it does not expire, it returns existing connections and connectUrl, and it adds another connection if one exists. This goes beyond the structured fields and is highly useful.
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 concise yet complete, covering purpose, usage steps, caveats, and follow-up in a well-structured paragraph. Every sentence adds value; no fluff. Front-loads the core function.
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 tool with no output schema, the description covers the return values (existing connections and connectUrl), the user interaction flow, the non-expiring link, and the verification step. An agent has all necessary information to invoke and follow up correctly.
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 single parameter 'platform' is fully described in the schema with an enum (youtube/tiktok) and a clear description. The description adds no additional parameter detail, so baseline 3 is appropriate given 100% schema coverage.
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 clearly states the tool's purpose: generates a link for a user to connect a YouTube or TikTok account to their Treza account, enabling pipeline posting. It distinguishes from siblings by focusing on the connection link, and later mentions list_connected_channels for verification.
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?
Provides explicit usage instructions: give the link to the person, tell them the platform will ask permission, check list_connected_channels after they confirm. Also states when not to use it (when something is already connected and adding another is not desired). This is exemplary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pipelineCreate pipelineAInspect
Create a new pipeline (as a draft) on your Treza account, from a template (templateId, see list_pipeline_templates) or with an initial node graph. Use list_node_types / get_node_type to learn the graph vocabulary: every edge names the two nodes it joins and a port on each, e.g. {"source":"music","sourceHandle":"audio","target":"sequence","targetHandle":"shots"}. A graph with error-level issues is refused with every issue listed, and nothing is saved. That includes a config key the node does not define, a value outside a field's options or range, and a model id, duration, aspect ratio or voice the chosen model does not offer: pick them from get_node_type. Drafts can be run with run_pipeline; publish_pipeline makes them invokable over the public API. To put music under a video the account already has, call assemble_video with musicPrompt instead of building a graph.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| edges | No | Wires between node ports, e.g. {"source":"music","sourceHandle":"audio","target":"sequence","targetHandle":"shots"}. Pass together with nodes; [] for none. | |
| nodes | No | The graph's nodes. Pass together with edges. | |
| templateId | No | Copy this template's graph (ids from list_pipeline_templates). Ignored when nodes/edges are supplied. | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false and offer no safety profile, so the description carries the full behavioral burden. It discloses that creation is a draft, that error-level issues cause refusal with every issue listed and 'nothing is saved,' and details the validation rules (config keys, value ranges, model-specific options). It also clarifies lifecycle: drafts can be run and published, which is beyond what annotations provide.
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 well-structured: main purpose first, then vocabulary, validation behavior, lifecycle, and alternative tool. Every sentence earns its place, and the embedded edge example is compact and illustrative. No redundancy or filler.
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 complex graph-creation tool with no output schema and no annotation support, the description covers creation modes, validation, and downstream steps thoroughly. The main gap is the lack of an explicit statement about the return value (e.g., the created pipeline object or id), which an agent would need to know to use the result effectively.
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 60%, so the description must add meaning. It explains the templateId-versus-nodes/edges decision, gives an explicit edge example, and directs users to get_node_type for valid config values and port names. This goes beyond the schema's structural descriptions, though it does not fully document every parameter edge case.
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 verb and resource ('Create a new pipeline (as a draft) on your Treza account') and distinguishes from siblings by naming run_pipeline, publish_pipeline, and assemble_video with clear contrast. It also references list_pipeline_templates and list_node_types, making the tool's role unambiguous.
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 explicit when-to-use guidance: create from a template (templateId) or with a node graph, and points to list_node_types/get_node_type for vocabulary. It also states when not to use it ('To put music under a video the account already has, call assemble_video with musicPrompt instead of building a graph') and outlines follow-up steps (run_pipeline, publish_pipeline).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_upload_urlCreate upload URLAInspect
A one-time link to upload a local file into the media library, for a client that can run a command (Claude Code, Codex, Cursor): PUT the file to uploadUrl with the returned Content-Type (the result includes the curl command), then call import_media with url set to the returned mediaUrl. The link expires in 15 minutes and signs one content type. If you cannot run a command, do not call this: ask the person to drop the file into their Treza library in the web app and find it with list_assets. Needs the pipelines:write scope. Spends no credits.
| Name | Required | Description | Default |
|---|---|---|---|
| contentType | Yes | The type of the file you will upload, e.g. "image/png" for a PNG logo. The PUT must send exactly this Content-Type. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses important behavioral traits: the link is one-time, expires in 15 minutes, is signed for exactly one content type, requires the pipelines:write scope, and spends no credits. It also previews the returned fields (uploadUrl, mediaUrl, Content-Type, curl command), which is valuable 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?
The description is dense but efficient, with every sentence earning its place: purpose, command-runner prerequisite, upload workflow, fallback behavior, permission requirement, and credit cost. The most important usage constraint is front-loaded in the first sentence.
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 tool with one parameter, no output schema, and a multi-step workflow, the description is complete: it explains what the tool returns, how to use those returned values, what prerequisites are needed, what happens if the agent cannot run commands, and the security/cost implications. An agent can decide whether and how to call this tool without ambiguity.
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 schema already documents the contentType parameter thoroughly with an enum and a description stating the PUT must send exactly this Content-Type. The tool description adds useful behavioral context by explaining that the link is signed for one content type and expires in 15 minutes, which helps the agent understand why choosing the correct contentType matters.
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 action and resource: creating a one-time upload link for putting a local file into the media library. It clearly distinguishes itself from import_media by describing create_upload_url as the prerequisite step that produces the mediaUrl to be used later.
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 description gives explicit when-to-use guidance: only for a client that can run a command like Claude Code, Codex, or Cursor. It also provides a concrete alternative path (ask the person to drop the file into the Treza library and find it with list_assets) when the agent cannot run commands, plus the required next step of calling import_media.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_assetEdit assetADestructiveInspect
Run pipeline nodes over ONE video, image, or audio file the account already has and get the edited file back: captions, an upscale, background removal, lipsync, a crop, an overlay, a cutaway, a thumbnail, a trim, or any other transform in list_node_types. To put music under a video, use assemble_video with musicPrompt instead. Operations run in order, each fed the output of the one before, so "caption it and upscale it" is one call with two operations; a Transcribe stage is added wherever an operation needs a transcript. Check a node's config and ports with get_node_type first. A setting the node does not define, or a value outside what it offers, is refused with the valid ones listed. The source, and any url given as an input, must come from list_assets or a run's outputs in get_run. Renders in the background and spends credits: poll get_run with the returned pipelineId and runId. Needs the pipelines:run and pipelines:write scopes.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | What to call the render, e.g. "Captioned short". | |
| sourceUrl | Yes | The asset to edit, from list_assets or a run output. | |
| operations | Yes | The nodes to run over the asset, in order. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as destructive and non-idempotent, but the description adds substantial behavior beyond them: operations run sequentially feeding each other, a Transcribe stage is auto-inserted, invalid configs are refused with valid options listed, rendering happens in the background, credits are spent, and the required scopes are stated. No contradiction with annotations.
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 dense but every sentence earns its place. It front-loads the core purpose and examples, then moves through alternatives, execution semantics, validation, sourcing, async behavior, and scopes in a logical order. No filler or repetition of schema fields.
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 complex, destructive, async, credit-spending tool with no output schema, the description is remarkably complete. It covers what the tool does, how to invoke it correctly, prerequisite knowledge, validation behavior, source restrictions, background rendering, polling, and required scopes. Nothing needed for correct invocation is missing.
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?
Although schema coverage is 100%, the description adds meaning the schema does not: sourceUrl must come from list_assets or a run's outputs, operations execute in order with outputs chained, the asset is automatically wired as an input, and nodeType must exactly match list_node_types. The input examples for extra named ports clarify the intended JSON shape.
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 opens with a specific verb and resource: 'Run pipeline nodes over ONE video, image, or audio file the account already has and get the edited file back.' It enumerates concrete transform examples and explicitly contrasts with assemble_video, so an agent can distinguish it from the closest sibling without inspecting schemas.
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?
It gives explicit when-to-use context ('Run pipeline nodes over ONE...'), names an alternative condition ('To put music under a video, use assemble_video with musicPrompt instead'), and provides prerequisites: check get_node_type first and source assets from list_assets or get_run outputs. This is strong routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_run_costEstimate run costARead-onlyIdempotentInspect
Estimate what one run of a pipeline will charge the credit balance, which steps the money goes to (lines), and whether the current balance covers it. Estimates use the draft graph, the same one run_pipeline executes. When a video step would render the same clip for far less on Veo 3.1 Lite, cheaper names it with the run's price on it. When the balance covers neither, preview prices a first look it does cover: the first video step alone as a short Veo 3.1 Lite clip, which run_pipeline with preview: true renders. Call this before running a pipeline you built or changed in this conversation, tell the person the price (and the preview's, when there is one), and wait for their go-ahead before run_pipeline. Clients that show panels put the estimate in front of them with a Start render button, which sends that go-ahead as their message.
| Name | Required | Description | Default |
|---|---|---|---|
| pipelineId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover safety (readOnly, idempotent, non-destructive); the description goes well beyond them, disclosing that estimates use the draft graph (the same one run_pipeline executes), how `cheaper` and `preview` are derived, and the UI affordance (Start render button) that supplies the go-ahead.
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?
Front-loaded with the core purpose, and the later sentences earn their place because no output schema exists and the response fields must be explained. Some sentences are dense and long, but there is little redundancy.
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 compensates by explaining what the estimate returns (`lines`, `cheaper`, `preview`) and how the preview ties back to run_pipeline. Combined with the explicit workflow guidance, an agent has everything needed to call it and act on the result.
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%, but there is a single, self-describing parameter (pipelineId), and the description scopes it implicitly to 'a pipeline you built or changed in this conversation.' It adds no format or id-syntax detail, but nothing about the parameter is ambiguous.
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?
Specific verb+resource: it estimates the credit cost of one pipeline run and names the response fields (`lines`, `cheaper`, `preview`). It is clearly separable from run_pipeline, which it repeatedly references as the execution counterpart.
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?
Explicit when-to-use: 'Call this before running a pipeline you built or changed in this conversation,' with the required follow-through (tell the person the price, wait for go-ahead before run_pipeline). It also names the alternative (run_pipeline with preview: true) and the condition that selects it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_credit_balanceGet credit balanceARead-onlyIdempotentInspect
Current prepaid credit balance, plan usage, and purchasable credit packs for this account. Use it to budget before starting runs. When the balance is low, hand the returned topUpUrl to a signed-in human; if the response carries an x402 block, a wallet-holding agent can pay that endpoint to top itself up with no human involved. That block also carries x402.video when this deployment sells single clips: one payment renders and returns one video without touching the balance, which is the cheaper path for a one-off.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, idempotent, and non-destructive, and the description adds substantial behavioral context beyond that: the response can include a topUpUrl, an x402 block that may allow an agent to self-top-up, and an x402.video path for one-off purchases. This meaningfully explains how the tool's response is expected to be used.
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 front-loaded with the core purpose, then moves to actionable conditional guidance. Every sentence adds useful information about balance usage, top-up routing, and x402 behavior without redundant filler or repetition of structured fields.
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 a good job of explaining the returned concepts: balance, plan usage, purchasable packs, topUpUrl, and x402 details. It is slightly vague around what counts as 'low' balance and does not specify units or exact formats, but for a parameterless read-only tool the essential invocation and interpretation context is present.
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 input schema is empty and includes no parameters, so the baseline is 4. There are no parameter semantics to clarify, and the description does not need to compensate for any schema gaps.
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 clearly identifies the resource: the account's prepaid credit balance, plan usage, and purchasable credit packs. It is not a tautology and conveys what information will be surfaced, though it lacks an explicit verb like 'returns' or 'lists' and does not directly contrast with sibling tools such as estimate_run_cost.
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 description gives an explicit use case: 'Use it to budget before starting runs.' It also provides conditional next steps for low balance and x402 payment handling. However, it does not name alternative tools or state when not to use it, so it stops short of full exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_node_typeGet node typeARead-onlyIdempotentInspect
Full definition of one node type: input/output ports and the config field schema needed to author a node of this type. For a model-bearing node the live model catalog comes with it, and for video-gen each model carries what a second of video costs (usdPerSecond), so compare prices before choosing one.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description is not burdened with safety traits. It adds concrete behavioral context beyond annotations: for model-bearing nodes, the live model catalog is included, and video-gen models include usdPerSecond pricing for cost comparison. This extra detail (dynamic model catalog, pricing) is not expressed in annotations and enriches the agent's understanding of the returned data.
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 with no filler. The first sentence gives the core definition (ports and config schema), and the second adds targeted conditional detail about model-bearing nodes and video-gen pricing. The most important context is front-loaded, and every word earns its place.
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?
The description covers the main returned content: ports, config schema, and for video-gen, pricing. It does not mention error handling, pagination (unlikely for a single lookup), or return format specifics, but there is no output schema to rely on. For a read-only, idempotent lookup tool with one parameter, this is largely sufficient, though a touch more detail about the return object's structure could make it a 5.
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 0% for the single required parameter 'type'. The description does not explicitly state that the parameter is the node type to fetch; it only says 'one node type' in the first sentence, which implies the parameter. However, since the description does not explicitly map the parameter or give format hints, it only partially compensates for the schema gap. A 3 reflects that the meaning is inferable but not directly communicated.
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 verb-resource: 'Full definition of one node type' including ports and config schema. It clearly distinguishes from list_node_types (which would enumerate types) by emphasizing 'one node type' and detailed schema content. No ambiguity about what the tool returns.
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 description implies usage for retrieving a single node type's detailed definition, but does not explicitly mention alternatives like list_node_types or when not to use it. The scope 'one node type' gives clear contextual guidance, yet lacks explicit exclusions or sibling references, so it earns a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipelineGet pipelineARead-onlyIdempotentInspect
Get one pipeline: metadata plus a summary of its node graph (node ids, types, labels). Pass includeGraph to get the complete graph — every node with position and config, and every edge — which is what update_pipeline needs as a starting point. Never write a graph reconstructed from the summary: it drops configs.
| Name | Required | Description | Default |
|---|---|---|---|
| pipelineId | Yes | ||
| includeGraph | No | Return the full nodes/edges graph instead of the summary. Required reading before an update_pipeline. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds critical behavioral context beyond annotations: the summary graph drops configs, so reconstructing a write from it risks data loss. It also clarifies the output distinction between summary and complete graph, which is not captured by annotations or output schema (none exists).
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 three sentences, each earning its place: core behavior, optional-parameter semantics, and a safety warning. The most important information (what the tool returns) is front-loaded, and the warning is placed at the end where it reinforces the read-only nature. No fluff or redundancy.
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 must convey what the tool returns, and it does: metadata plus a graph summary (node ids, types, labels) by default, or the complete graph (nodes with positions/configs and all edges) when includeGraph is set. It also gives the necessary warning about graph reconstruction. For a read-only retrieval tool with two parameters, the description is complete enough for an agent to call it correctly and safely.
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 schema describes includeGraph as 'Return the full nodes/edges graph instead of the summary. Required reading before an update_pipeline.' The tool description reinforces and expands this by explaining that the complete graph includes 'every node with position and config, and every edge' and that the summary includes only node ids, types, labels. It does not add meaning for pipelineId beyond the name and required status, but with schema coverage at 50% the description compensates well for the includeGraph parameter.
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 opens with 'Get one pipeline: metadata plus a summary of its node graph (node ids, types, labels)', which states a specific verb, resource, and scope. It also distinguishes from list_pipelines (plural vs singular) and from update_pipeline (read vs write) by naming the complete-graph variant. This makes the tool's role unambiguous even before consulting the 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 description provides explicit guidance: 'Pass includeGraph to get the complete graph — every node with position and config, and every edge — which is what update_pipeline needs as a starting point.' It also warns against a common misuse: 'Never write a graph reconstructed from the summary: it drops configs.' This tells the agent exactly when to set includeGraph and what to avoid, going far beyond a generic 'use this when you need a pipeline'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_runGet runARead-onlyIdempotentInspect
Get one run: overall status plus per-node results and output URLs. Poll this after run_pipeline, assemble_video or edit_asset until the status is no longer "running". A finished run carries outputs, what its Output nodes returned (for assemble_video and edit_asset, the finished file). While a run is still "running", nodes lists the steps that have completed so far (with their outputs) and finishedAt/durationMs are omitted.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | ||
| pipelineId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description discloses important state-dependent behavior: finished runs carry outputs, running runs list completed nodes, and finishedAt/durationMs are omitted while running. This is meaningful behavioral detail that helps an agent know what to expect when polling.
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?
Three sentences, each earning its place: the first defines the resource and result, the second gives polling guidance, and the third clarifies the two response states. No filler or repetition.
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 tool with no output schema, the description adequately covers the response shape and stateful behavior across running vs finished runs. It would be even better with error cases or a note on where runId comes from, but given the simple two-parameter input and strong response semantics, it is complete enough for an agent to call correctly.
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% and the description does not compensate. It never explains what pipelineId or runId represent, where to obtain them, or how they relate to the run. The parameter names are fairly self-evident, but with zero schema documentation the description should at least state that runId comes from a prior run_pipeline/assemble_video/edit_asset call.
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 opens with 'Get one run' and specifies exactly what is returned: overall status, per-node results, and output URLs. It clearly distinguishes this from list_runs by indicating a single run and from get_pipeline by focusing on execution status rather than definition.
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 description gives explicit context: 'Poll this after run_pipeline, assemble_video or edit_asset until the status is no longer "running"'. This clearly ties the tool to async workflows. It does not explicitly state when not to use it or name alternatives like list_runs, but the trigger context is specific and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_mediaImport mediaAInspect
Add an image, video or audio file to the account's media library, so assemble_video and edit_asset can use it: a file the user attached in this conversation (file, where the client passes attachments), a public https link to the file itself (url), or a local file uploaded through create_upload_url (url set to its mediaUrl). Returns the library url. Putting an attached logo in the corner of a video or a picture is this, then edit_asset on the video or picture with an overlay operation whose inputs.image is the returned url and whose config.position names the corner (a picture comes back a PNG). Images up to 25 MB, audio 100 MB, video 200 MB; the type is read from the file, and anything else (SVG, PDF, a web page) is refused. When the user attached a file you cannot pass on (you see it but have no file or link to give), ask them to drop it into their Treza library at https://www.trezalabs.com/chat/assets and find it with list_assets. Needs the pipelines:write scope. Spends no credits.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | A public https link to an image, video or audio file, when there is no attachment. Pass file or url, not both. | |
| file | No | A file the user attached in this conversation. | |
| name | No | What to call it in the library, e.g. "Logo"; list_assets query matches it. Defaults to the file name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral details beyond annotations: size limits per media type, type detection and refusal of others, return of library URL, required pipelines:write scope, and zero credit cost. It also covers the edge case of an unpassable attachment. No contradiction with annotations.
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 dense but well-structured, front-loading the purpose and then systematically covering input modes, example, limits, fallback, scope, and credits. Each sentence contributes necessary information, though it is on the longer side.
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 tool with no output schema, it fully explains the return value, error conditions, and usage contexts. It covers all three input methods, size constraints, the scope requirement, and credit implications. Nothing an agent needs is missing.
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 100%, so baseline is 3. The description adds value by explaining the relationship between url and file (mutually exclusive), and that url can come from create_upload_url's mediaUrl. It also clarifies name default. This goes beyond the schema's individual field descriptions.
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 verb and resource: 'Add an image, video or audio file to the account's media library.' It clearly differentiates from siblings by stating its purpose is for assemble_video and edit_asset to use, and it mentions it refuses non-media types, distinguishing from other import tools.
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?
It explicitly describes three input modes and when to use each: file for attached, url for public link, and url set to mediaUrl for local upload via create_upload_url. It also provides a fallback when the user attaches a file that can't be passed on, directing to Treza library and list_assets. It clearly says 'Pass file or url, not both.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_assetsList assetsARead-onlyIdempotentInspect
Browse the account's media library: every image, video, and audio file its pipeline runs and chat generations produced, newest first. The urls it returns are the ones assemble_video and edit_asset accept, so start here when asked to cut, caption, score, or otherwise finish media the account already has. A file the user attached in the conversation is not here until import_media adds it. Clients that show panels let the person pick files from this list: the picks reach you as context naming each file by its #position in the list with its exact url, and the person then says in the chat what to do with them. Apply that to exactly those files, and do not assume picks mean joining them.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Only return assets of this kind. | |
| limit | No | How many to return, newest first. Default 12. | |
| query | No | Case-insensitive text matched against each asset's generation prompt, e.g. "horse". Omit for the newest regardless of subject. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive hints, but the description adds valuable behavioral details beyond that: the ordering ('newest first'), the fact that returned URLs are directly accepted by assemble_video and edit_asset, the caveat about user-attached files not being present until import_media, and the mechanism of panel picks reaching the agent as context with position numbers and URLs. No contradiction with annotations; it enriches them.
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 longer than a minimal phrasing, but every sentence contributes unique value: purpose, ordering, URL compatibility, import caveat, panel pick behavior, and application instruction. It is front-loaded with the core purpose and maintains clear logical flow. A slight trim could make it tighter, but it does not waste words.
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 all essential aspects: what is listed, ordering, how URLs are used by other tools, when assets appear, how panel picks are presented, and instructions to apply them precisely. The schema covers param constraints, and annotations cover safety. Nothing an agent needs to call this correctly is missing.
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 input schema provides 100% descriptive coverage for all three parameters (kind, limit, query) with clear enums and descriptions. The description does not add new semantics about the parameters themselves beyond reinforcing the 'newest first' ordering for limit. Baseline 3 is appropriate since the schema already does the heavy lifting.
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 verb ('Browse') and a clear resource ('the account's media library') with explicit scope ('every image, video, and audio file'). It names the result ordering ('newest first') and directly ties the returned URLs to sibling tools ('the ones assemble_video and edit_asset accept'), which clearly distinguishes it from those siblings. This is a precise, actionable purpose.
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 description gives explicit when-to-use guidance: 'start here when asked to cut, caption, score, or otherwise finish media the account already has.' It also contrasts with import_media by noting that user-attached files are not listed until imported. It explains the panel-pick flow and instructs how to apply picks ('exactly those files, and do not assume picks mean joining them'). This fully informs an agent when to call this tool and when not to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_connected_channelsList connected channelsARead-onlyIdempotentInspect
The YouTube channels, TikTok accounts, and Instagram accounts connected to this Treza account, with the ids a publishing node needs. A youtube-upload node needs a channelId, a tiktok-upload node needs an openId, and an instagram-upload node needs an igUserId; all come from here. To connect one, call connect_channel and give the person its link.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds useful context about the types of IDs returned and which node types consume them, but it does not discuss empty results, failure modes, or response shape.
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 three sentences and front-loads the core purpose before giving node-specific ID mappings and the connect_channel pointer. Sentence 2 slightly overlaps with sentence 1's phrase 'with the ids,' but overall the structure is clear and compact.
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 no-parameter, read-only list tool with no output schema, the description explains what the agent gets back and why it matters. It could go deeper on exact output fields or pagination, but the critical platform-to-ID mapping is present, making the tool actionable.
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 has zero parameters, so parameter documentation is not needed; the baseline is 4. The description appropriately focuses on the returned data instead, which is useful for an agent selecting and invoking the tool.
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 opens with a specific verb and resource: it lists YouTube, TikTok, and Instagram accounts connected to the Treza account, and explains the purpose as providing IDs needed by publishing nodes. This clearly distinguishes the tool from siblings like connect_channel, which is explicitly named as the action for adding a connection.
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 text implies when to use this tool: when a publishing node needs a channelId, openId, or igUserId, 'all come from here.' It also names connect_channel as the alternative for connecting a new account, giving a clear not-for-this-case. It does not explicitly enumerate all sibling distinctions, but the main routing decision is covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_node_typesList node typesARead-onlyIdempotentInspect
List the node types available for building pipeline graphs, grouped by category. Use get_node_type for a full port/config schema before wiring a node.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Filter to one category id (e.g. "ai", "input", "output"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so safety context is covered. The description adds that results are grouped by categoryjon and scoped to pipeline graph node types, but does not describe response format, ordering, 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?
Two sentences deliver purpose, behavior, and a cross-reference with no filler. The primary action is front-loaded, and every clause contributes to correct tool usage.
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 one fully-documented optional parameter, the description is sufficient. The annotations cover side effects, the schema covers the parameter, and the description plus sibling reference cover selection guidance.
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 100%, and the category parameter is already documented with examples in the schema. The description reinforces the category grouping but does not add meaningful new semantics beyond what the schema provides.
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 clearly states a specific verb and resource: listing node types for building pipeline graphs, grouped by category. It also distinguishes itself from the sibling get_node_type by pointing out that this is the overview tool while get_node_type provides full port/config 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 description explicitly names the alternative tool (get_node_type) and gives a concrete condition for when to use it: before wiring a node, when a full port/config schema is needed. This makes the selection between siblings unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pipelinesList pipelinesARead-onlyIdempotentInspect
List the video pipelines on your Treza account, with status and a summary of recent runs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful behavioral context by specifying that results include status and a summary of recent runs, which is valuable because no output schema exists. It could be more precise about what 'summary of recent runs' means, but it does not contradict annotations.
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, front-loaded sentence conveys the action, scope, and returned information without waste. Every phrase earns its place.
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 zero-parameter list tool with rich annotations, the description covers the essential scope and return content. It lacks detail on pagination, ordering, or exact status vocabulary, but the low complexity and lack of parameters make this acceptable. It could also route to siblings, but that is more of a usage-guidelines gap.
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 has zero parameters and schema coverage is 100%, so there is nothing for the description to clarify. Per the baseline for zero-parameter tools, a score of 4 is appropriate.
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 verb ('List') and a clear resource ('video pipelines on your Treza account'), and it names what the result contains (status and a summary of recent runs). This distinguishes the tool from siblings like get_pipeline and list_runs by collection scope and resource type.
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 description implies use when an overview of pipelines is needed, but it gives no explicit guidance about alternatives or when not to use it. With siblings like get_pipeline and list_runs present, the description could have clarified that this is for the full collection view, not single-item details or run history.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pipeline_templatesList pipeline templatesARead-onlyIdempotentInspect
Ready-made pipelines that create_pipeline can copy with templateId, so you do not have to draw a graph node by node. Each entry lists its entry nodes, the ids to key run_pipeline inputs by, and estimatedChargeUsd, what one run charges the balance as the template stands, to compare against get_credit_balance before you pick one. Clipping a long recording, file, or direct video URL into a captioned vertical clip is "video-clip-factory" (entry node "source", a File node that takes a URL); "podcast-clip-factory" pulls the newest episode from a podcast RSS feed; "campaign-clip" is for Vyro / Whop clipping briefs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, idempotent, non-destructive profile, yet the description adds real behavioral context: what each entry returns (entry nodes, input-keying ids, estimatedChargeUsd meaning) and how the charge relates to the balance. It stops short of describing pagination or ordering behavior.
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?
Front-loaded with the core purpose, then return contents, then a template catalog for selection. Every sentence carries information, though the three named-template examples make it longer than strictly necessary and could be trimmed.
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 zero-parameter listing tool with no output schema, the description covers what the entries contain, how their fields are used downstream, and how to choose among templates. Nothing an agent needs to select or consume the result is missing.
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 zero parameters, so per the rubric the baseline is 4. The description does explain how the templateId it exposes is consumed downstream, which is useful cross-tool semantics but not a parameter of this tool itself.
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 ('ready-made pipelines' / templates) and its role: consumable by create_pipeline via templateId. This distinguishes it cleanly from siblings list_pipelines (user-owned pipelines) and list_node_types, so an agent can pick it without opening a 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?
Explicitly routes the workflow: copy with create_pipeline templateId, key run_pipeline inputs by the listed ids, compare estimatedChargeUsd against get_credit_balance before selecting. Names concrete alternatives/next steps rather than leaving usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_runsList runsARead-onlyIdempotentInspect
List recent runs for a pipeline, newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| pipelineId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds useful behavior (recency, newest-first order), but no detail on limits, pagination, or what data each run includes.
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 compact sentence with no filler; the verb and core scope are front-loaded, and the ordering behavior is appended efficiently.
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 simple read-only list operation with rich annotations and a minimal two-parameter schema, the description covers action, resource, and ordering. It does not specify return shape or limit default, but these are not critical for correct invocation.
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 0%, so the description must compensate for both parameters. It implies pipelineId through 'for a pipeline' but never names it or the optional limit parameter, nor explains default or constraint semantics.
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 uses a specific verb ('List') and resource ('recent runs for a pipeline') and adds the ordering behavior ('newest first'). This clearly distinguishes it from sibling tools like get_run (single run) and run_pipeline (create/execute).
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 'for a pipeline, newest first' gives a clear context for when to call the tool, but it does not explicitly name alternatives or exclusions such as using get_run for a single run. It stops short of the explicit routing seen in the highest tier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_libraryTreza libraryARead-onlyIdempotentInspect
The account's media library on a page of its own, newest first, for the person to browse and pick files from. Opened from ChatGPT's sidebar or beside a conversation; only the library panel calls it.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Only files of this kind. | |
| limit | No | How many to show, newest first. Default 30. |
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 genuinely useful behavior beyond that: this tool renders a UI panel rather than returning data, it orders results newest-first, and it is scoped to the library panel's call site.
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 with the resource and browsing purpose front-loaded; the slightly awkward 'on a page of its own' phrasing costs a little but there is no padding.
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 no-output-schema, zero-required-param UI opener, the definition covers what the agent needs: what opens, the ordering, and the call context. Only the return behavior (that no data payload is produced) is left implicit.
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 100%: the kind enum and the limit default/max are fully documented in the schema itself. The description only reinforces the already-stated 'newest first' ordering, adding little beyond the schema.
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 names a specific resource (the account's media library) and states what happens (opens it as its own browsable page, newest first). It does not explicitly contrast with the sibling list_assets, so an agent must infer the difference, but the core verb+resource is clear.
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?
It gives invocation context ('Opened from ChatGPT's sidebar or beside a conversation; only the library panel calls it'), which implies when it is used, but it never states when NOT to use it versus list_assets or import_media. Usage is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_assetPublish assetARead-onlyIdempotentInspect
Prepare a post of one finished video to a connected YouTube channel or TikTok account, for the person to review and confirm. It posts nothing itself: clients that show panels put the video, the account and the post's settings in front of the person, and it goes out only when they press Post there (TikTok requires them to choose who can view it and to confirm its disclosures themselves). Call it only when the person asked to publish. The video must come from list_assets or a finished run's outputs in get_run, copied exactly; write a real title (on TikTok it is the caption, hashtags allowed). channelId picks the channel or TikTok account from list_connected_channels when more than one is connected; with none connected, call connect_channel first. A client without panels cannot post from here: build a pipeline that ends in a youtube-upload or tiktok-upload node instead. Needs the pipelines:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | YouTube tags. Ignored on TikTok. | |
| title | Yes | The title (YouTube, up to 100 characters) or the caption (TikTok). | |
| platform | Yes | Where to post. | |
| videoUrl | Yes | The video to post, from list_assets or a run output. | |
| channelId | No | A YouTube channelId or TikTok openId from list_connected_channels. Omit when only one is connected. | |
| visibility | No | YouTube visibility to suggest; the person can change it before posting. On TikTok the person chooses. | |
| description | No | YouTube description. Ignored on TikTok. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Though annotations already declare readOnlyHint and idempotentHint, the description explains what that means in practice: no post is sent until a person presses Post, TikTok requires viewer choice and disclosure confirmation, and the pipelines:write scope is required. No contradiction with the annotations.
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 dense but not padded; the core behavior and the key exclusions come first. It is longer than average because it covers several edge cases, but each sentence contributes a distinct operational constraint.
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 7-parameter tool with no output schema, the description covers the full decision context: prerequisites, person-in-the-loop confirmation, alternative pipeline path, channel selection, and required scope. Nothing essential for correct use is missing.
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 100%, but the description adds operational semantics beyond the schema: the video must come verbatim from list_assets or a finished run, channelId is used only when more than one channel is connected, and TikTok treats title as a caption with hashtags. This meaningfully helps correct invocation.
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 leads with a specific verb and resource: prepare a post of one finished video to a connected YouTube channel or TikTok account. It also states the distinguishing behavior, 'posts nothing itself', which separates it from confirm_publish and publish_pipeline.
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?
It states exactly when to call it ('only when the person asked to publish'), names the alternative for panel-less clients (pipeline ending in youtube-upload/tiktok-upload), and gives preconditions like calling connect_channel first when no channel is connected. This leaves no ambiguity about selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_pipelinePublish pipelineAIdempotentInspect
Publish a pipeline's current draft graph as an immutable deployed version. Publishing requires a fully valid graph (no errors or warnings) and makes the pipeline invokable via the public /invoke and /chat/completions APIs.
| Name | Required | Description | Default |
|---|---|---|---|
| pipelineId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey readOnlyHint=false, destructiveHint=false, and idempotentHint=true. The description adds valuable context beyond these: the published version is immutable and the pipeline becomes invokable via /invoke and /chat/completions. This reveals the consequential effect of the action, though it does not mention permissions or return values.
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 worded sentences with no fluff. The core action and key constraints are front-loaded. Every clause adds value.
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?
The description covers preconditions (valid graph) and effects (immutable, invokable), but lacks any mention of return values or error behavior. Since there is no output schema, the agent is left guessing what the call returns or how failures are surfaced, which is a notable gap for a mutation tool.
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?
With schema description coverage at 0%, the description bears responsibility for explaining pipelineId. However, the parameter name is self-explanatory and the description's mention of 'a pipeline' implicitly refers to it. It does not explicitly state its format or purpose, but for a single obvious parameter this is acceptable, hence a mid-range score.
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?
Description states a specific action ('Publish a pipeline's current draft graph') with a clear resource and outcome ('immutable deployed version'). It distinguishes itself from siblings like create_pipeline or update_pipeline by focusing on deployment and invokability via public APIs.
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?
Provides clear context: publishing requires a fully valid graph and makes the pipeline invokable. This implies when to use it (when you want to deploy) but does not explicitly compare with alternatives or state when not to use it. No mention of run_pipeline or update_pipeline as alternatives, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_pipelineRun pipelineADestructiveInspect
Start a pipeline run in the background and return its runId immediately. Video pipelines take minutes; poll get_run for progress. Runs consume account credits. inputs is keyed by entry node id (get_pipeline lists them as entryNodes): a Text Input node takes text, an HTTP Payload node takes a JSON value, and a File node takes a URL that overrides the file placed on the canvas, so a clipping pipeline can be pointed at a new source video per run without editing the graph. An entry node left out runs with the value saved on the canvas; one with nothing saved is refused, so pass it (or "" to leave it blank on purpose), and ask the user what it should say when the request does not tell you. A key that names no entry node is refused before anything runs or is charged. Before running a pipeline you built or changed in this conversation, call estimate_run_cost and wait for the person to accept the price. Every run renders every node again, so to add music, narration or captions to a video an earlier run made, pass its url from get_run outputs to assemble_video (musicPrompt composes a bed) or edit_asset rather than editing the pipeline and running it again.
| Name | Required | Description | Default |
|---|---|---|---|
| inputs | No | ||
| preview | No | Render a cheap first look instead of the whole run: the first video step and the steps that feed it, as one Veo 3.1 Lite clip of up to 8 seconds at 720p. estimate_run_cost and a refused run quote it as `preview` when the balance does not cover the run. Only on the person's yes. Returns the pipelineId get_run needs, which is not this pipeline's. | |
| pipelineId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare non-readonly, destructive, openWorld, non-idempotent, and the description adds substantive context beyond them: runs consume credits, invalid keys are refused before charging, omitted entry nodes fall back to canvas values, empty nodes are refused, and the tool starts in the background. Nothing here contradicts the annotations.
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 core action and async return are front-loaded in the first sentence, and each subsequent sentence carries distinct operational guidance. It is dense and long, with one sprawling multi-clause sentence about alternatives, but almost nothing is filler.
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?
Despite no output schema and a nested inputs object, the description explains the return (runId), the polling path, credit cost, refusal conditions, and the cost-estimation prerequisite. An agent has everything needed to invoke it correctly and route follow-ups.
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?
With only 33% schema description coverage, the description compensates thoroughly: inputs is keyed by entry node id, Text Input takes text, HTTP Payload takes JSON, File takes a URL overriding the canvas file, omission falls back to the saved value, empty nodes are refused, and "" deliberately blanks. The preview parameter's odd return semantics are covered in the schema.
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 first sentence names a specific verb and resource ('Start a pipeline run') and states the immediate return value ('return its runId immediately'), distinguishing it from synchronous siblings. It further differentiates itself by routing polling to get_run and pre-flight costing to estimate_run_cost.
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?
Explicit when-to-use and when-not-to-use guidance: poll get_run for progress, call estimate_run_cost before running a changed pipeline, and use assemble_video or edit_asset instead of re-running to add music/captions. It also tells the agent to ask the user when required input content is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_schedule_pausedPause or resume scheduleAIdempotentInspect
Pause or resume a published pipeline's schedule. Pausing flips the flag the cron runner checks without touching the published graph, so the deployed snapshot stays an honest record of what was published. Resuming re-anchors the schedule to now, so it waits for the next real slot instead of replaying slots missed while paused. Requires the pipelines:write scope. Schedules themselves are authored as a schedule-trigger node (see get_node_type) and armed by publish_pipeline.
| Name | Required | Description | Default |
|---|---|---|---|
| paused | Yes | true pauses the schedule; false resumes it. | |
| pipelineId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already convey that the tool is mutating, idempotent, and non-destructive. The description goes further by disclosing the exact side effects: pausing flips the cron runner flag without altering the published graph, and resuming re-anchors to now rather than replaying missed slots. It also adds the authentication scope requirement, which is not present in annotations.
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 three sentences, front-loads the primary action, and every sentence earns its place: the first states the operation, the second explains behavioral nuance, and the third covers prerequisites and authoring context. There is no filler or redundant restating of the tool name.
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 simple two-parameter tool with no output schema, the description is complete. It explains both operational states, the effect on the deployed graph, the behavior on resume, the required scope, and how schedules are authored/armed. No critical information needed to call the tool correctly is missing.
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 schema documents the `paused` parameter but not `pipelineId`. The description partially compensates by clarifying that pipelineId refers to a published pipeline's schedule, adding semantic context that the bare schema does not provide. Since coverage is exactly 50%, the description contributes useful meaning beyond the structured field definitions.
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 verb ('pause or resume') and a well-defined resource ('a published pipeline's schedule'), which clearly differentiates it from siblings like run_pipeline or update_pipeline. It also explains how schedules are authored and armed, grounding the tool's role in the larger pipeline lifecycle.
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 description gives clear context on when to use the tool: it applies to published pipeline schedules and explicitly requires the pipelines:write scope. It does not name alternatives or explicitly say 'use this instead of X', but the singular focus on schedule pausing/resuming, plus references to get_node_type and publish_pipeline, gives an agent enough situational guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_pipelineUpdate pipelineADestructiveIdempotentInspect
Update a pipeline: rename it, change its description, or replace its node graph. For a graph change, read the current one with get_pipeline includeGraph and send the whole graph back, nodes and edges together, every edge naming the two nodes it joins and a port on each, e.g. {"source":"music","sourceHandle":"audio","target":"sequence","targetHandle":"shots"}. A graph with error-level issues is refused with every issue listed, and nothing is saved; settings you change are checked against get_node_type and the live model catalog the same way create_pipeline checks them. To add music, narration or captions to a video a run already made, pass its url from get_run outputs to assemble_video or edit_asset instead: a changed pipeline renders every node again when it runs, the video included, and charges for it.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| edges | No | The complete new wire list, e.g. {"source":"music","sourceHandle":"audio","target":"sequence","targetHandle":"shots"}. Pass together with nodes; [] for none. | |
| nodes | No | The complete new node list. Pass together with edges; the graph is replaced whole. | |
| pipelineId | Yes | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructive, non-read-only, idempotent), the description discloses that a graph with error-level issues is refused with all issues listed and nothing is saved, that validations match create_pipeline's checks, and that a changed pipeline re-renders every node and charges for it. This is rich behavioral context.
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 a single dense paragraph but front-loads the core purpose, then walks through graph-change mechanics, error behavior, validation, and the sibling alternative. Every clause adds actionable information; 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?
Given the complexity of replacing a node graph and the presence of destructive/idempotent annotations, the description is complete: it explains the required workflow (read current graph, send whole graph), how edges are structured, what happens on errors, validation compatibility, and cost implications. No output schema is needed for this level of completeness.
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?
With schema description coverage at 40%, the description compensates by explaining the graph-replacement contract: nodes and edges passed together, every edge naming source/target and a port, with a concrete example. It does not elaborate on pipelineId, name, or description, but those are self-evident or covered by the schema.
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 opens with a specific verb and resource — 'Update a pipeline: rename it, change its description, or replace its node graph' — and then details exactly what a graph replacement entails. It also distinguishes itself from siblings like get_pipeline, create_pipeline, assemble_video, and edit_asset by naming them explicitly.
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?
It states when to use this tool versus alternatives: 'For a graph change, read the current one with get_pipeline includeGraph and send the whole graph back' and 'To add music, narration or captions to a video a run already made, pass its url from get_run outputs to assemble_video or edit_asset instead.' This gives direct when/when-not guidance.
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.
1 tool update
- Added
open_library
1 tool update
- Changed
run_pipeline1 field changed- added
Input schema / properties / previewAdded value: +{ + "description": "Render a cheap first look instead of the whole run: the first video step and the steps that feed it, as one Veo 3.1 Lite clip of up to 8 seconds at 720p. estimate_run_cost and a refused run quote it as `preview` when the balance does not cover the run. Only on the person's yes. Returns the pipelineId get_run needs, which is not this pipeline's.", + "type": "boolean" +}
3 tool updates
- Added
confirm_publish - Added
connect_channel - Added
publish_asset
1 tool update
- Added
create_upload_url
1 tool update
- Added
import_media
2 tool updates
- Changed
create_pipeline2 fields changed- changed
Input schema / properties / edges / items / properties / sourceHandle / descriptionPrevious value: -"Output port on the source node: an `outputs` id from get_node_type, e.g. \"audio\" on music-gen or \"video\" on sequence. \"out\" is the generic output the canvas draws."New value: +"Output port on the source node: an `outputs` id from get_node_type, e.g. \"audio\" on music-gen or \"video\" on sequence. \"out\" is the generic output the canvas draws; name the port instead on a node with more than one output besides \"result\" (update_pipeline refuses a new generic wire there)." - changed
Input schema / properties / edges / items / properties / targetHandle / descriptionPrevious value: -"Input port on the target node: an `inputs` id from get_node_type, e.g. \"shots\" on sequence or \"prompt\" on music-gen. \"in\" is the generic input the canvas draws, which picks a port by media type at run time; name the port whenever the target has more than one input."New value: +"Input port on the target node: an `inputs` id from get_node_type, e.g. \"shots\" on sequence or \"prompt\" on music-gen. \"in\" is the generic input the canvas draws, which guesses a port by media type at run time; name the port instead on a node with more than one input (update_pipeline refuses a new generic wire there)."
- Changed
update_pipeline2 fields changed- changed
Input schema / properties / edges / items / properties / sourceHandle / descriptionPrevious value: -"Output port on the source node: an `outputs` id from get_node_type, e.g. \"audio\" on music-gen or \"video\" on sequence. \"out\" is the generic output the canvas draws."New value: +"Output port on the source node: an `outputs` id from get_node_type, e.g. \"audio\" on music-gen or \"video\" on sequence. \"out\" is the generic output the canvas draws; name the port instead on a node with more than one output besides \"result\" (update_pipeline refuses a new generic wire there)." - changed
Input schema / properties / edges / items / properties / targetHandle / descriptionPrevious value: -"Input port on the target node: an `inputs` id from get_node_type, e.g. \"shots\" on sequence or \"prompt\" on music-gen. \"in\" is the generic input the canvas draws, which picks a port by media type at run time; name the port whenever the target has more than one input."New value: +"Input port on the target node: an `inputs` id from get_node_type, e.g. \"shots\" on sequence or \"prompt\" on music-gen. \"in\" is the generic input the canvas draws, which guesses a port by media type at run time; name the port instead on a node with more than one input (update_pipeline refuses a new generic wire there)."
3 tool updates
- Changed
assemble_video4 fields changed- changed
Input schema / properties / audioFadeInSec / descriptionPrevious value: -"Fade the music bed (or the only track) up over this many seconds at the start."New value: +"Fade the music bed (or the only track) up over this many seconds at the start. Applies to a composed bed too." - changed
Input schema / properties / clipUrls / descriptionPrevious value: -"Video or image urls in play order: two or more, or exactly one when narrationUrl or musicUrl is set."New value: +"Video or image urls in play order: two or more, or exactly one when narrationUrl, musicUrl or musicPrompt is set." - added
Input schema / properties / musicPromptAdded value: +{ + "description": "Compose the music bed for this cut instead of taking one from the library: genre, mood, tempo and instruments, e.g. \"calm cinematic ambient, soft piano, gentle pads, no vocals\". It sits and ducks exactly like a musicUrl bed and takes the same fades. Written by the Audio Generation node's default model (get_node_type music-gen), or its full-song model when the cut runs past 30 seconds; the result names the model as composedMusic. Leave it out when passing musicUrl.", + "maxLength": 1000, + "type": "string" +} - changed
Input schema / properties / musicUrl / descriptionPrevious value: -"Music bed under the whole edit, beneath the clips' own sound and any narration."New value: +"Music bed under the whole edit, beneath the clips' own sound and any narration: an audio url from list_assets. Leave it out when passing musicPrompt."
- Changed
create_pipeline11 fields changed- added
Input schema / properties / edges / descriptionAdded value: +"Wires between node ports, e.g. {\"source\":\"music\",\"sourceHandle\":\"audio\",\"target\":\"sequence\",\"targetHandle\":\"shots\"}. Pass together with nodes; [] for none." - changed
Input schema / properties / edges / items / additionalPropertiesPrevious value: -{}New value: +false - added
Input schema / properties / edges / items / descriptionAdded value: +"A wire from one node's output port to another node's input port. An edge is {\"source\": node id, \"sourceHandle\": output port id, \"target\": node id, \"targetHandle\": input port id, \"id\": optional unique id}, e.g. {\"source\":\"music\",\"sourceHandle\":\"audio\",\"target\":\"sequence\",\"targetHandle\":\"shots\"}. Port ids are the ones get_node_type lists under outputs and inputs." - added
Input schema / properties / edges / items / propertiesAdded value: +{ + "id": { + "description": "Unique id for this wire. Assigned when omitted.", + "minLength": 1, + "type": "string" + }, + "source": { + "description": "Id of the node the wire leaves, as given in `nodes`.", + "minLength": 1, + "type": "string" + }, + "sourceHandle": { + "description": "Output port on the source node: an `outputs` id from get_node_type, e.g. \"audio\" on music-gen or \"video\" on sequence. \"out\" is the generic output the canvas draws.", + "minLength": 1, + "type": "string" + }, + "target": { + "description": "Id of the node the wire enters, as given in `nodes`.", + "minLength": 1, + "type": "string" + }, + "targetHandle": { + "description": "Input port on the target node: an `inputs` id from get_node_type, e.g. \"shots\" on sequence or \"prompt\" on music-gen. \"in\" is the generic input the canvas draws, which picks a port by media type at run time; name the port whenever the target has more than one input.", + "minLength": 1, + "type": "string" + } +} - removed
Input schema / properties / edges / items / propertyNamesRemoved value: -{ - "type": "string" -} - added
Input schema / properties / edges / items / requiredAdded value: +[ + "source", + "sourceHandle", + "target", + "targetHandle" +] - added
Input schema / properties / nodes / descriptionAdded value: +"The graph's nodes. Pass together with edges." - added
Input schema / properties / nodes / items / descriptionAdded value: +"One node: an id, a type from list_node_types, and its config." - added
Input schema / properties / nodes / items / propertiesAdded value: +{ + "config": { + "additionalProperties": {}, + "description": "Settings, as get_node_type's configSchema describes them. A node this call adds starts from its type's defaults, and what you pass overrides them.", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "id": { + "description": "Unique id. Edges, and run_pipeline inputs, refer to the node by it.", + "minLength": 1, + "type": "string" + }, + "label": { + "description": "Name shown on the canvas.", + "type": "string" + }, + "position": { + "description": "Canvas position. Laid out automatically when omitted.", + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + }, + "required": [ + "x", + "y" + ], + "type": "object" + }, + "type": { + "description": "A node type from list_node_types, e.g. \"file\", \"music-gen\", \"sequence\", \"output\".", + "minLength": 1, + "type": "string" + } +} - removed
Input schema / properties / nodes / items / propertyNamesRemoved value: -{ - "type": "string" -} - added
Input schema / properties / nodes / items / requiredAdded value: +[ + "id", + "type" +]
- Changed
update_pipeline11 fields changed- added
Input schema / properties / edges / descriptionAdded value: +"The complete new wire list, e.g. {\"source\":\"music\",\"sourceHandle\":\"audio\",\"target\":\"sequence\",\"targetHandle\":\"shots\"}. Pass together with nodes; [] for none." - changed
Input schema / properties / edges / items / additionalPropertiesPrevious value: -{}New value: +false - added
Input schema / properties / edges / items / descriptionAdded value: +"A wire from one node's output port to another node's input port. An edge is {\"source\": node id, \"sourceHandle\": output port id, \"target\": node id, \"targetHandle\": input port id, \"id\": optional unique id}, e.g. {\"source\":\"music\",\"sourceHandle\":\"audio\",\"target\":\"sequence\",\"targetHandle\":\"shots\"}. Port ids are the ones get_node_type lists under outputs and inputs." - added
Input schema / properties / edges / items / propertiesAdded value: +{ + "id": { + "description": "Unique id for this wire. Assigned when omitted.", + "minLength": 1, + "type": "string" + }, + "source": { + "description": "Id of the node the wire leaves, as given in `nodes`.", + "minLength": 1, + "type": "string" + }, + "sourceHandle": { + "description": "Output port on the source node: an `outputs` id from get_node_type, e.g. \"audio\" on music-gen or \"video\" on sequence. \"out\" is the generic output the canvas draws.", + "minLength": 1, + "type": "string" + }, + "target": { + "description": "Id of the node the wire enters, as given in `nodes`.", + "minLength": 1, + "type": "string" + }, + "targetHandle": { + "description": "Input port on the target node: an `inputs` id from get_node_type, e.g. \"shots\" on sequence or \"prompt\" on music-gen. \"in\" is the generic input the canvas draws, which picks a port by media type at run time; name the port whenever the target has more than one input.", + "minLength": 1, + "type": "string" + } +} - removed
Input schema / properties / edges / items / propertyNamesRemoved value: -{ - "type": "string" -} - added
Input schema / properties / edges / items / requiredAdded value: +[ + "source", + "sourceHandle", + "target", + "targetHandle" +] - added
Input schema / properties / nodes / descriptionAdded value: +"The complete new node list. Pass together with edges; the graph is replaced whole." - added
Input schema / properties / nodes / items / descriptionAdded value: +"One node: an id, a type from list_node_types, and its config." - added
Input schema / properties / nodes / items / propertiesAdded value: +{ + "config": { + "additionalProperties": {}, + "description": "Settings, as get_node_type's configSchema describes them. A node this call adds starts from its type's defaults, and what you pass overrides them.", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "id": { + "description": "Unique id. Edges, and run_pipeline inputs, refer to the node by it.", + "minLength": 1, + "type": "string" + }, + "label": { + "description": "Name shown on the canvas.", + "type": "string" + }, + "position": { + "description": "Canvas position. Laid out automatically when omitted.", + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + }, + "required": [ + "x", + "y" + ], + "type": "object" + }, + "type": { + "description": "A node type from list_node_types, e.g. \"file\", \"music-gen\", \"sequence\", \"output\".", + "minLength": 1, + "type": "string" + } +} - removed
Input schema / properties / nodes / items / propertyNamesRemoved value: -{ - "type": "string" -} - added
Input schema / properties / nodes / items / requiredAdded value: +[ + "id", + "type" +]
1 tool update
- Removed
create_api_key
Related MCP Connectors
Plan, compare, price, generate, and recover AI video from compatible MCP clients.
MCP server for QPost — lets AI agents publish video and image posts to YouTube, TikTok, Instagram.
Generate AI video from any MCP client. Pick the model, see the per-second price before you spend.
Generate images, video, audio and short films with 140+ AI models from any MCP client.
Related MCP Servers
AlicenseAqualityBmaintenanceCreate AI-powered videos from any MCP-compatible client. Generate videos with AI narration, visuals, and synced captions for short-form and long-form content.250 npm5MIT- FlicenseNot gradedqualityBmaintenanceMCP server for managing video pipelines, integrating media processing (TTS, STT, image generation) and video editing, with a structured plugin system and tunnel to Claude AI Web.-
- AlicenseAqualityBmaintenanceEnables MCP clients like Claude or Cursor to upload videos from your local machine directly to YouTube, schedule them, and manage channel content through Runsheet.11567 npmMIT
- FlicenseNot gradedqualityDmaintenanceEnables automated generation and publishing of TikTok Shop Affiliate videos using 7 AI agents. Integrates research, script writing, video production, and publishing through the MCP protocol.26-
Glama MCP Gateway
Add one secure layer between your agents and this server.