Skip to main content
Glama

Server Details

AI video producer: directs your idea or script into a finished, fact-checked video. MCP-native.

Ownership verified
Status
Healthy
Uptime
38.1% over 41 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL

TDQS

A3.9/5.0

Scored across 24 tools

Disambiguation3/5

The set contains several tools that all execute edit ops — author_op (paid LLM ops), stage_op (free deterministic ops), direct (NL multi-op), and the deprecated run_op alias — whose boundaries overlap and share op names like rewrite_scene and set_scene_fields. Similarly, assign_material and set_visual both target a scene's visual. The detailed descriptions do clarify the intended split, but an agent could easily misselect between them.

Naming Consistency4/5

Names are uniformly snake_case and verb-first (assign_material, get_project_status, list_versions, request_upload, set_head, stage_op), which is largely predictable. Minor deviations are single-verb tools like cancel, commit, direct, estimate, produce, and the odd whoami, but they remain readable and action-oriented.

Tool Count3/5

24 tools is on the heavy side for a single server, and the surface includes a deprecated alias (run_op) plus multiple tools that run the same op vocabulary (author_op, stage_op, direct), suggesting some redundancy. The domain is genuinely broad (creation, editing, production, uploads, library, cast, status), so the count is borderline rather than grossly excessive.

Completeness4/5

The surface covers project lifecycle (list/create/status/VBP/versions), editing (stage_op, author_op, direct, commit, set_head), production (generate_script, produce, cancel, estimate), uploads/material (request_upload, complete_upload, list_material, assign_material), and cast/referents. Gaps exist: there is no publish tool despite publication being tracked in status, and no delete/archive operation, but core workflows are covered.

Available Tools

24 tools
assign_materialAssign material to a sceneA
DestructiveIdempotent
Inspect

Puts a library asset (own material from a registered upload, or any asset the org can see) as the visual of ONE scene — the same act as the human's «Mi Media» in the Studio. scene_index is 0-based like the VBP. For video, clip {start_sec, duration_sec|end_sec} selects the segment (≥2 s); images take no clip. Applies to the Studio version directly (it takes effect without committing a draft); the next final render picks it up. On a piece whose final is already delivered that next render is a NEW paid render, which the line does not start by itself; the answer says so (deliveredFinal). Requires write. $0.

ParametersJSON Schema
NameRequiredDescriptionDefault
clipNo
showsNoOptional: why this material fits this scene (kept with the assignment).
asset_idYesThe `assetId` of a registered upload or of an asset in the material library.
project_idYes
scene_indexYes0-based scene index (as in the Video Blueprint).

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (destructiveHint=true, idempotentHint=true) by disclosing that the change applies directly to the Studio version without committing a draft, that the next final render picks it up, that a delivered final triggers a NEW paid render the line won't start itself, the `deliveredFinal` response flag, the `write` requirement, and $0 cost.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and packs high-value constraints (clip rules, render implications, cost) into dense sentences. Slightly long with nested parentheticals, but nearly every clause carries operational value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, no-output-schema mutation tool, the description covers effect model, delivery/paid-render consequences, the response flag, auth, and cost — everything an agent needs to call it correctly and warn the user.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds real meaning beyond the 60%-covered schema: `scene_index` is 0-based like the VBP, and the `clip` object is explained ({start_sec, duration_sec|end_sec}, ≥2 s, images take no clip). The `shows` and `asset_id` params rely on schema text, so it isn't fully compensating but does clarify the trickiest nested parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource (put a library asset as the visual of ONE scene) and anchors it to a known human workflow («Mi Media»), making scope unambiguous. An agent can tell this apart from list_material or list_versions without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for when to use it (assigning a specific asset to a single scene, video vs image handling, requires `write`). It does not name sibling alternatives (e.g., list_material to discover assets first), so it stops just short of explicit when-not/alternatives guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

author_opRe-author with the LLM (paid)A
Destructive
Inspect

Runs ONE edit op that re-authors with the LLM — the SAME op the human director runs from the chat — and stages its result into the project's conversation draft, which becomes a new version when it is committed. The call waits up to 60 s for the pass (50 of the 58 authoring turns measured finished within that) and answers with the staged edit (outcome: completed_inline); a longer pass keeps running and the answer is its job (outcome: still_running, runId), which the project status reports by run_id. An identical call while the job runs, or within 15 minutes after it succeeded, returns the SAME job, so a retry is not charged twice; request_id names a deliberately repeated request. One authoring turn at a time per project (authoring-in-progress). Ops:

  • rewrite_scene: Re-author one scene (script and visual) under a brief. LLM. Args: scene_index, brief (the WHOLE scene is re-authored under the brief).

  • tighten_hook: Strengthen the opening hook (scene 0). LLM. Args: brief? (scene 0). Requires the write scope. Spends LLM budget (charged like a chat turn).

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
argsYesOp arguments (see description).
project_idYes
request_idNoOptional: a caller-chosen key for this request (up to 64 characters). The same key returns the same job for 24 h; a new key runs it again. Without it, an identical call within 15 minutes is the same request.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the annotations: it documents the 60 s wait window with measured hit rate, both outcome shapes (completed_inline vs still_running with runId), the 15-minute dedup window that makes retries free, request_id as an explicit repeat key, and the per-project concurrency limit. It also states the required write scope and that LLM budget is spent, which the destructive/idempotent hints do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core behavior, timing, and dedup semantics are front-loaded and the op list is scannable. It is dense and occasionally repetitive (the retry/dedup idea is stated twice), but nearly every clause carries operational meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description supplies the return contract, timing behavior, idempotency story, concurrency constraint, and auth/budget requirements. An agent has everything needed to call it and interpret the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema coverage at 50%, the description compensates by spelling out each op's args (scene_index, brief) and clarifying that brief re-authors the WHOLE scene, while request_id's 24 h key semantics are stated in both places. Only the nested args object remains loosely specified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence gives a specific verb and resource: runs one authoring edit op that re-authors with the LLM and stages the result into the conversation draft. It enumerates the supported ops with their targets (rewrite_scene, tighten_hook), so purpose is unambiguous. It stops short of differentiating itself from near-siblings like run_op, stage_op, or rewrite_script, which are never named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied through the op list and the note that only one authoring turn runs at a time per project, plus the write-scope and budget caveats. There is no explicit when-to-use-this-vs-alternatives guidance despite several plausible siblings (run_op, stage_op, rewrite_script, direct).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancelStop the production lineA
DestructiveIdempotent
Inspect

Stops a project's production: the line stops taking stations (drive → manual) and every run still alive (script, build, final render) is marked cancelled. Honest limits, declared in the answer: a worker already inside a step may finish that step (its artifacts are kept and reused), money already spent is spent, and nothing is deleted — production resumes later from what exists. Idempotent. Requires write. $0.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoOptional: why (kept on the cancelled runs).
project_idYes

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (destructiveHint, idempotentHint), disclosing honest limits: an in-flight worker may finish its step and artifacts are kept/reused, money already spent is spent, nothing is deleted, and production resumes later. Also declares the write-auth requirement and $0 cost — rich behavioral context an agent needs before invoking.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then spends each subsequent clause on a distinct, load-bearing fact (side effects, limits, idempotency, auth, cost). No filler; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description carries the full burden and does so: it explains what changes, what survives, reversibility/resumption, idempotency, and auth. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50% (project_id has no description), and the description never explains either parameter. It implies project scoping via 'a project's production', but adds no syntax or meaning beyond the names, leaving the undocumented project_id to inference.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (stops) and resource (a project's production), then enumerates the concrete effects: line moves drive → manual, live runs (script, build, final render) are marked cancelled. An agent knows exactly what this tool does without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the semantics (halt an in-flight production), but the description never states when to reach for this vs. doing nothing or using a sibling like get_project_status, nor any preconditions beyond requires-write. Adequate but no explicit 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.

commitCommit a versionAInspect

Commits the project's staged conversation draft as a new version and makes it THE CUT the production line renders (isHead: true in the answer). Re-validates coherence (the same blocking/non-blocking report the human sees); force=true overrides a blocking report; as_branch=true keeps the new version as a branch instead, in the version timeline, where it can become the cut later. Requires write. $0.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoOverride a blocking-coherence gate.
as_branchNoKeep the commit as a navigable branch INSTEAD of making it the cut the line renders. Default false: a commit is the cut.
project_idYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover safety hints (writes, non-idempotent, non-destructive), so the description carries the important behavioral load: it re-validates coherence with the same blocking/non-blocking report the human sees, force overrides a blocking report, and the operation requires `write` scope and is `$0`. These are substantive traits 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence that front-loads the core action and the resulting state, then appends the two option behaviors and cost/auth facts. No filler and each clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description covers the state transition (`isHead: true` in the answer), the gating behavior, the branch alternative, the required scope, and cost. An agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% – force and as_branch already have descriptions – but the description sharpens them with concrete semantics ('overrides a blocking report', 'keeps the new version as a branch ... where it can become the cut later'). project_id remains undocumented in both places, keeping it from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('commits') and resource ('staged conversation draft as a new version') and clarifies the resulting state ('makes it THE CUT the production line renders'). The agent can distinguish this from siblings like set_head or cancel without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly signals the precondition (a staged draft) and the two behavioral modes (force to override a blocking gate, as_branch to keep it as a branch instead of the cut). It stops short of explicitly naming when to use set_head instead, so routing against siblings 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.

complete_uploadRegister uploaded materialA
Idempotent
Inspect

Confirms that uploads finished and registers them in the creator's personal library: one upload (handle) or several (uploads, each with its own outcome). Each file is verified without any provider being involved — it has to be in storage with the declared size and be real media; its content identifies it (the same file twice is one asset) and it is measured (kind, size, duration). declared_content is WHAT the material shows (≤240 chars): it is what lets a director place it on the right scene. The answer carries stage — uploading (the bytes are not all in storage yet) · verifying (the file is in storage and is being checked, identified by its content and measured) · ready (the file is in the library and has an assetId) · failed (the file did not make it into the library, and reason says why). Small files answer ready at once, with the assetId that places them on a scene; a larger one answers verifying, and the same request repeated later returns its current stage. $0.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleNoOne upload: the `handle` of its ticket.
uploadsNoSeveral uploads at once; the answer has one outcome per item, in the same order.
declared_contentNoWhat the material shows, e.g. 'Interview with the harbour master, 2024, dock in background'.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: it discloses that no provider is involved, the exact verification criteria (in storage, declared size, real media), content-based dedup ('the same file twice is one asset'), the measurement of kind/size/duration, and the meaning of each `stage` value including `failed` with `reason`. The idempotency note ('the same request repeated later returns its current stage') is consistent with idempotentHint=true.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and reasonably dense, but the stage enumeration and verification rules arrive as one long block rather than being structured, which makes it slightly heavy to scan. Nearly every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the full burden and does so: it documents the returned `stage` lifecycle (`uploading`/`verifying`/`ready`/`failed`), the `assetId`, and the `reason` field. An agent has everything needed to call it and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, but the description still adds meaning: it explains that `declared_content` is WHAT the material shows (with a ≤240-char limit and the purpose of scene placement), that `uploads` yields one outcome per item in order, and the handle/ticket relationship. It adds real value on top of the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 confirms finished uploads and registers them in the creator's personal library, with a clear single-vs-batch scope. It is easy to distinguish from write-side siblings like request_upload or commit, though it never names an alternative to sharpen the contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: it 'confirms that uploads finished', so an agent infers it comes after an upload, and the note that a repeated request returns the current stage gives useful polling context. However, there is no explicit when-to-use vs. sibling guidance and no stated prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

directDirect the pieceA
Destructive
Inspect

A natural-language instruction to the project's Director — the same chat turn the human director types: the planner reads the instruction, picks the ops (rewrite_scene / set_scene_fields / set_visual / swap_voice / replan_scenes / tighten_hook) and applies them to the staged draft. Suited to an editorial change that spans several fields or scenes («make scene 3 quote the source verbatim and shorten the closing»); a single exact op has its own tools. The call waits up to 60 s for the turn (50 of the 58 turns measured finished within that) and answers with the reply, the staged ops and the coherence report (outcome: completed_inline); a longer turn keeps running and the answer is its job (outcome: still_running, runId), which the project status reports by run_id. An identical call while the turn runs, or within 15 minutes after it succeeded, returns the same job, so a retry does not pay a second turn; request_id names a deliberately repeated request. One authoring turn at a time per project (authoring-in-progress). The staged draft becomes a version when it is committed. Requires write. Spends LLM budget (charged like a chat turn); a turn whose planned edits all fail stages nothing and is not charged (editOutcome: none_applied).

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesThe instruction to the Director, in any language.
qualityNoReasoned authoring pass (slower, better). Default false.
project_idYes
request_idNoOptional: a caller-chosen key for this request (up to 64 characters). The same key returns the same job for 24 h; a new key runs it again. Without it, an identical call within 15 minutes is the same request.
active_scene_indexNoOptional: the scene the instruction refers to (0-based).

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only give a coarse safety profile (non-read-only, destructive, non-idempotent, closed-world); the description far exceeds that by disclosing the 60 s wait and the outcome branches (completed_inline vs still_running with runId), retry deduplication (same job within 15 min, request_id for deliberate repeats), the one-turn-at-a-time lock, and budget charging including the none_applied exemption. This is exactly the behavioral context annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and scope before dropping into timing, outcomes and budget detail; every sentence carries information. It is dense and long for a single paragraph, which costs a point, but there is little pure filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return contract itself (reply, staged ops, coherence report, both outcome values, runId) and the state model (draft becomes a version on commit). Combined with the schema and annotations, an agent has everything needed to call it, wait for it, and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 80% and the schema already documents message, quality, request_id and active_scene_index. The description adds real meaning beyond the schema for request_id (names a deliberately repeated request, interacts with the 15-minute dedup window) and quality (spends LLM budget), though it does not explicitly explain active_scene_index. Slightly above the 3 baseline because the request_id semantics are genuinely enriched.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+mechanism: a natural-language instruction is read by a 'planner' that picks ops (rewrite_scene / set_scene_fields / ...) and applies them to the staged draft. It explicitly distinguishes itself from siblings that handle 'a single exact op', so an agent can tell it apart from run_op/stage_op without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names the situation this tool is for (an editorial change spanning several fields or scenes, with a concrete example) and points to alternatives for the opposite case ('a single exact op has its own tools'). Prerequisites (requires write, one authoring turn at a time) are also stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

estimateEstimate cost
Read-onlyIdempotent
Inspect

What a piece would cost and whether it can launch, BEFORE anything is spent — the same verdict the human cockpit shows. Accepts the same arguments as project creation (idea, format, source, cast, production). $0, no LLM. The answer has two parts: launch.ready says whether the REQUEST is complete and allowed (launch.blockers names what is missing); economics says what it costs and whether the wallet governs it: estimateUsd (typical) with estimateMinUsd/estimateMaxUsd (a band, not a quote — production charges what it actually spends), walletBalanceUsd, and reason, one of: guard_inactivo — billing is not active in this environment: no wallet governs the launch. · saldo_desconocido — the wallet balance could not be read; nothing is inferred from that. · pedido_sin_cotizar — not enough to price yet: the request needs an idea (prompt_seed or source) and a duration_profile (or the platform default). · alcanza — the wallet covers the estimated band. · casa_invita — first piece of this account: it is on the house; the band is informational. · excede_bienvenida — first piece of this account, but this request exceeds the welcome allowance; exits lists the adaptations that fit (shorter, no presenter). · operador_de_la_casa — this credential belongs to a platform operator: production is not charged to this wallet; the band is informational. · no_alcanza — the wallet does not cover the estimated band; exits lists the adaptations of the request that fit the balance (a shorter profile, no presenter), when there are any. economics.applies is true only when the wallet does not cover the request; estimateMaxUsd against walletBalanceUsd is what decides whether a real wallet covers the piece; hint restates the reason in words. WHERE THE LINE STOPS FOR FUNDS: the script (first station) is written and charged BEFORE any wallet check; the first station that checks the wallet is the studio build, then the final render — if the wallet does not cover a station the line stops there (the project status reports waitingForFunds with the station and the shortfall) and what was already produced stays paid. vocabulary in the answer glosses every typed value that is not English.

ParametersJSON Schema
NameRequiredDescriptionDefault
castNoThe cast, as at creation. A presenter on screen (`face`, `on_camera` or `describe_face`) moves the price.
sourceNoThe creator's OWN material. `kind=script` + `respect=strict`: the piece narrates the text verbatim (word-level control from the start); `kind=content`: an article or notes the Director adapts (`respect` guided|adaptive). Without it the Director writes from `prompt_seed`.
materialNoThe creator's own uploaded files that belong to this piece (footage, photos, a recorded voice). Each item names one file of the personal library by its `assetId`: the id alone, or an object with `asset_id` and a `purpose` (what the file is for in the piece). The files are stored with the piece; the answer says what the piece does with them (`direction`), and they are not part of the price. While a file is still being verified, the `handle` of its upload is accepted in place of the id, and the request is answered as not ready; a file that is not in the caller's library is answered as not usable.
productionNo
prompt_seedNoThe idea (the same field as at creation). Optional here: without an idea or a `source` the verdict says `no_idea` and there is no price yet.
target_languageNo
creative_referentYesA referent id from Vixdeo's catalogue of formats.
generate_scriptCreate a project
Destructive
Inspect

SPENDS the organization's wallet by default, behind the same gates the human passes (the org's quota, the daily free-action cap and the wallet): with production.auto_produce=true (the default) the whole production line runs without further calls. Creates a NEW project from an idea and launches it — the creation→edition crossing (a project is a conversation that starts from an idea). By default the same production line the human's button runs takes the piece to the final video: script → studio build → final render; publishing is not part of it. The script (first station) is written and charged BEFORE any wallet check; the studio build and the final render check the wallet and stop the line with waitingForFunds when it does not cover them — the script stays paid. With auto_produce=false the line stops after the script, so the piece can be edited before production. Returns the project id and the cast as pinned (cast.voice / cast.face with id and @handle); the project status reports progress until finalVideoUrl is set (typically 20-60 min). Requires write. creative_referent: a referent id from the catalogue of formats. Premium formats (requiresSpendConfirmation) also need production.confirm_spend=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
castNoWho narrates and who appears, in THREE ways that combine: (a) a name from the catalogue of voices and presenters, by `id` or `@handle` (`voice` / `face`) — a name that does not resolve is an error, not a silent fallback; (b) the wanted presenter DESCRIBED in `describe_face`, which casting resolves to the closest face of the catalogue — with enough detail (features, or two of gender/age/ethnicity) it can GENERATE a new one for this piece, which costs money and needs `production.confirm_spend=true`; (c) nothing, and casting decides by ear. `on_camera` puts the presenter on screen. A named `face` wins over `describe_face`.
titleNoOptional project title (else derived from the idea).
sourceNoThe creator's OWN material. `kind=script` + `respect=strict`: the piece narrates the text verbatim (word-level control from the start); `kind=content`: an article or notes the Director adapts (`respect` guided|adaptive). Without it the Director writes from `prompt_seed`.
materialNoThe creator's own uploaded files that belong to this piece (footage, photos, a recorded voice). Each item names one file of the personal library by its `assetId`: the id alone, or an object with `asset_id` and a `purpose` (what the file is for in the piece). The files are stored with the piece; the answer says what the piece does with them (`direction`), and they are not part of the price. While a file is still being verified, the `handle` of its upload is accepted in place of the id, and the request is answered as not ready; a file that is not in the caller's library is answered as not usable.
productionNoThe production settings; without them, the platform defaults apply.
prompt_seedNoThe request, in the creator's words. A single idea is enough; a full brief is honored whole: title, thesis, structure and timing, how the piece opens and closes, what it may claim and from which sources, its look and sound, what to avoid, text that appears on screen. The writers and the direction receive it complete, up to 16000 characters; a longer request is rejected, and long reference material travels in `source`. Sources named by URL are read as primary material; when the request states that facts come only from them, nothing outside those sites is used.
target_languageNoISO-639-1 of the piece (en, es, pt, …). Default en.
creative_referentYesThe format referent id from Vixdeo's catalogue of formats.
get_project_statusGet project status
Read-onlyIdempotent
Inspect

Where a project stands: lifecycle status, production drive (auto | manual | none), whether the line is waiting on funds, the cut (headVersionId, latestVersion), the runs (script, build, final render, publication) with status and cost, publication (whether the piece is published and whether the cut changed since), and — when delivered — finalVideoUrl with finalVideoDurationSec, the measured length of the delivered file. latestRunByKind is a compact index by run kind; the full objects live in runs. With run_id — the id of a job that an asynchronous authoring, rewrite or publication call returned — job reports that job: its status and, once completed, its result (a Director turn's reply and staged ops; a rewrite's new version; a publication's URL), or the reason it failed. fidelityReport is derived without a model from what the pipeline already wrote on the cut: per scene, the figures the narration says (the cited fact, the date the material gives for it and the figure's period when the data codex derived one), what the screen draws (each chart stage in drawing order with every value drawn, approx or withheld) and the facts the scene cites; per piece, the corpus policy, the closing card, the axes of the delivered final measured out of band, and the critic's scope — the house critic judges the script and does not see the charts or each figure's period. next names the following step. The server pushes no notifications: progress is visible only through a new call. $0.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idNoOptional: a job id (`runId`) returned by an asynchronous tool of this project.
project_idYes
get_project_vbpRead Video Blueprint
Read-onlyIdempotent
Inspect

The Video Blueprint of a project's CUT — the version that edits change and the production line renders (the structured score of scenes) — plus cast.voicePin: the voice named when the piece was created, the row it names, which rows narrate each scene and whether the pin was honored. Paged so every answer fits the size a host accepts for one tool result: without scene_from the answer carries the piece-level fields and as many scenes as fit, from scene 0; with scene_from (and optionally scene_count) it carries only that window of scenes. page says where the page starts, how many scenes the piece has, nextSceneFrom (null on the last page) and whether the answer holds the whole blueprint (complete). Scene positions are 0-based, the same positions the edit ops take, and so is every reference to a scene inside the blueprint (score, chapters, colour, thumbnail): sceneReferences states the base and, per group, whether those references were verified. Each scene's factual_backing.artefactos lists the researched facts the scene cites, each with its id in the piece's material (A7 a fact, N3 an anecdote), its source and URL; pantalla says whether a screen is documentada, reconstruida (labelled) or retenida (content absent from the declared sources was withheld). A scene's duration_target_sec is the window written before the voice exists: the render fits each scene to its narration, so those windows add up to more than the delivered video, whose measured length the project status reports as finalVideoDurationSec. Each page also carries fidelity: the per-scene rows of the project status's fidelityReport for the scenes of that page. Org-isolated: a project outside the caller's organization is not found. $0.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project id.
scene_fromNo0-based position of the first scene of the page (`page.nextSceneFrom` of the previous answer). Without it the answer is the first page, which also carries the piece-level fields.
scene_countNoOptional: at most this many scenes. The page may carry fewer when they would not fit in one result.
judge_scriptJudge the scriptInspect

The house critic's judgement of a script version — the same independent critic the writing pipeline uses, reading the deterministic quality report alongside. Returns scores 0-100 (global, fidelity to the material, channel voice, rhythm), per-scene notes with severity, and the quality report. Each note says where it comes from (source): critic is the model's reading, audit is a contradiction checked against the research material without a model. factualAudit is the deterministic half: per scene, which facts it cites (citations), whether that backing was cited by the script, inferred from its text, or is text the author dictated in the request (dictated_in_the_request: a disclosure or a closing line — it is not a factual claim and is left out of factualScenes), and what happened to each on-screen figure the material does not carry (onScreenClaims[].outcome): notAsserted = it is not shown (stripped from the text, or its magnitude withheld from the chart), drawnWithoutFigure = plotted without its number, stillAsserted = left on screen; placeholders counts, also without a model, text that names with a letter or an order number what the source does not name («Repository A», «Server 1») or leaves a template marker («N/A», «TODO»), per scene and surface (narration, screen, caption); inputs.script says which document was judged (vbp = the version's blueprint, with its citations). scope states what the critic judges (judges: script) and what it does not see (seesCharts, seesPeriods): the charts and each figure's period are covered by the fidelityReport of the project status. Judgement only: it does not rewrite. The verdict is kept on the version as the critic wrote it; the critic judges in one language for every reader, and the notes returned are presented in the reader's language (notesLanguage says which, and whether they were translated). Defaults to the head version. Requires write. Spends one critic call (small, seconds), plus a short translation of its notes when the reader's language is not the critic's.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
version_idNoOptional: a specific version; default the project's head.
list_castList voices and presentersA
Read-onlyIdempotent
Inspect

The voices and presenters (faces) that can be named in a piece right now: the organization's own plus the curated platform catalogue, each with a stable id, a readable @handle and attributes (platform voices: language, accent, gender; platform presenters: gender, age, ethnicity, framing; the organization's own voices and presenters carry name, handle and language or framing only, since they may be real people). The id or the handle is how a piece names its voice or presenter at creation (the id is the key; the handle is a label). Voices whose handle is shared by several distinct voices come with handle: null and are named only by id (ambiguousHandles lists those handles). language (BCP-47 prefix), gender and q filter the catalogue (100+ voices, 50+ presenters). scope says whether each one belongs to the organization (mine) or to the platform catalogue (platform). $0.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSubstring on name, accent or style.
limitNoMax voices returned (default 40, max 200).
genderNoApparent gender as catalogued (e.g. `male`, `female`).
languageNoBCP-47 prefix filter, e.g. `es` (matches es-MX, es-ES…) or `en-GB`.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), yet the description adds substantial behavioral context beyond them: ambiguous handles come back as handle:null and are exposed via `ambiguousHandles`, id is the key while handle is only a label, org-owned entries carry fewer attributes because they may be real people, and the call is $0. This is exactly the kind of disclosure the annotations cannot provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, but it is delivered as a single dense run-on paragraph with nested parentheses that is hard to scan. Content is largely relevant, but the structure would benefit from breaking out return shape, references, and filters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the full burden of explaining the return shape, and it does: per-item attributes by source, id/handle semantics, the ambiguousHandles edge case, and the scope field. For a four-optional-param listing tool with clear annotations, nothing the agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents q, limit, gender and language. The description restates the filters ('language (BCP-47 prefix), gender and q filter the catalogue') but adds little syntax or semantics beyond the schema, and never mentions the `limit` parameter. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('lists voices and presenters/faces that can be named in a piece right now') and immediately scopes what comes back: the organization's own plus the platform catalogue. An agent can distinguish this from list_material, list_referents or list_projects 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the entries are 'how a piece names its voice or presenter at creation', which tells the agent the context of use. However, there is no explicit when-to-use/when-not guidance, no prerequisites, and no alternative sibling named for a similar listing task.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_materialList own materialA
Read-onlyIdempotent
Inspect

The creator's own material in the personal library — assetId, kind, filename, what it declares, size, duration and how many times a piece uses it — and, in uploads, the uploads still in progress or refused in the last day, each with its stage and reason. kind keeps one kind of file; asset_id returns one file with its content hash; handle returns the state of one upload. Nothing is written. $0.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoOnly files of this kind.
limitNoHow many files to return, newest first.
handleNoOne upload, by the `handle` of its ticket: its `stage`, and its `assetId` once it is ready.
asset_idNoOne file of the library, by its `assetId`; the answer adds its content hash (`sha256`).

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower. The description still adds real context beyond them: 'Nothing is written', the '$0' cost, and the semantics of in-progress/refused uploads with their stage and reason. It does not cover pagination or freshness ordering beyond 'limit', so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Information-dense and front-loaded: return fields come first, then parameter roles, then the write/cost disclaimer. No wasted sentences, though the em-dash-heavy packing makes it slightly dense to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates the returned fields (assetId, size, duration, usage count, upload stage/reason), covering the return contract. Cost and no-write behavior are stated, making it largely complete for a 4-param read tool, missing only ordering/pagination specifics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description restates each parameter's effect (kind keeps one kind, asset_id adds the content hash, handle returns upload state), which marginally reinforces the schema but adds little that isn't already documented there.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (the creator's own material in the personal library) and enumerates exactly what is returned — assetId, kind, filename, declarations, size, duration, usage count — plus the uploads section. It is clearly distinct from list_cast/list_ops/list_projects, though it never names a sibling to route against, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implicitly tells the agent which parameter to use for which goal (kind filters by type, asset_id fetches one file with hash, handle fetches one upload state), which is useful routing. But there is no explicit when-to-use/when-not-to-use guidance or named alternative, 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_opsList edit opsA
Read-onlyIdempotent
Inspect

The unified op vocabulary of a Vixdeo project conversation (creation, transition, edition) — the same grammar the human director uses by chat. Returns each op's name, lifecycle phase, a one-line summary and the tool that runs it (invocableVia), the edition ops' parameter schema, and visualTypes: the visual sources a scene can use (the visual_type of set_visual), with relative cost. compact=true leaves out the parameter schema and the notes; locale selects the language of the readable strings (default en; es adds the Spanish mirrors). $0.

ParametersJSON Schema
NameRequiredDescriptionDefault
phaseNoOptional: only ops of this lifecycle phase.
localeNoLanguage of the readable strings. Default `en` (English only); `es` adds the Spanish mirrors (`nameEs`, `toneSignatureEs`, `summaryEs`).
compactNoDefault false. True omits the heavy, rarely needed parts (parameter schemas, curves, measures, notes) and keeps ids, names and one-line meanings.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds real behavioral context: exactly what is returned, what `compact` prunes (parameter schemas and notes), what `locale` changes, and the cost hint "$0". It stops short of describing ordering/pagination, but for a read-only listing tool this is solid added value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: the core resource is named first, then return contents, then parameter behaviors. Some parenthetical nesting and backtick-heavy phrasing add friction, but nearly every clause conveys a distinct fact and nothing is redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly carries the burden of describing the return payload, enumerating the fields an agent will receive, including the `invocableVia` mapping that ties ops to callable tools. Completeness is good; only the absence of ordering/pagination and of an explicit hand-off to run_op keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description goes further than the schema by explaining the practical effect of `compact` (drops heavy, rarely-needed parts while keeping ids, names, one-line meanings) and clarifying the `locale` default and Spanish mirror fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource and scope: the unified op vocabulary of a project conversation (creation, transition, edition), and enumerates the return fields (name, lifecycle phase, summary, invocableVia, parameter schema, visualTypes). It is clearly distinct from mutating siblings like run_op/author_op, though it never names those siblings to make the contrast explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied (discover the op grammar and which tool runs each op) but there is no explicit when-to-use or when-not-to-use statement, nor any routing to siblings such as run_op. The only conditional guidance is about `compact`, which is a parameter concern rather than a tool-selection one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_projectsList projectsA
Read-onlyIdempotent
Inspect

The projects in the caller's organization (id, title, status, creative referent), ordered by most recent update. status (one of the statuses the answer glosses, e.g. EDITORIAL_BLOCKED, STUDIO_READY, FINAL_REVIEW, PUBLISHED) and q (a substring of the title) filter the list (100+ projects). Archived projects are left out by design (they are closed for work). $0.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoCase-insensitive substring of the title.
limitNoMax projects (default 50, max 200).
statusNoExact project status to keep.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds genuinely new behavioral context: results are ordered by most recent update, archived projects are omitted by design, and the call is free ("$0"). It still doesn't state pagination behavior beyond the schema's limit, which keeps it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Compact and front-loaded: purpose and returned fields come first, then filtering, then the archived exclusion, then cost. The parenthetical asides ("the answer glosses", the trailing "$0.") add some noise and awkwardness but no sentence is truly wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with annotations carrying the safety profile and no output schema, the description supplies fields, ordering, filters, default exclusions, and cost. Only minor gaps remain, such as result-size/pagination behavior when the limit is exceeded.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the baseline is 3, but the description adds value the schema lacks: concrete example status values (EDITORIAL_BLOCKED, STUDIO_READY, FINAL_REVIEW, PUBLISHED) for a parameter with no enum defined, plus a scope note (100+ projects). The phrasing "one of the `statuses` the answer glosses" is circular, but the examples compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (list the caller's organization's projects) and enumerates returned fields plus default ordering, which is more than a bare restatement. It does not explicitly contrast itself with sibling readers like get_project_status or list_versions, but the scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Filter behavior for `status` and `q` is described, and the caller learns archived projects are excluded by design, which implies when results are relevant. However, there is no explicit guidance on when to prefer this tool over siblings such as get_project_status or list_cast, so usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_referentsList formatsA
Read-onlyIdempotent
Inspect

The creative referents — the formats a piece can be produced in (documentary, explainer, viral short, critical essay…): id, name, purpose, narrator modality, pacing curve, the format's own defaults (null where the platform default applies, listed in platformDefaults), and whether the format requires an explicit spend confirmation. The referent id is the value of creative_referent when a piece is created or priced. Also returns the duration profiles, output formats and budget tiers that production accepts, and the writingProfiles catalogue (how a script gets written, with the measured cost/time ratio per format when there is data). locale selects the language of the readable strings (default en; es adds the Spanish mirrors); compact=true leaves out the pacing curve, the per-format writing measures and the writing catalogue. $0.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoLanguage of the readable strings. Default `en` (English only); `es` adds the Spanish mirrors (`nameEs`, `toneSignatureEs`, `summaryEs`).
compactNoDefault false. True omits the heavy, rarely needed parts (parameter schemas, curves, measures, notes) and keeps ids, names and one-line meanings.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuinely useful behavioral context: it is '$0', and it precisely discloses what `compact=true` omits and how null defaults are represented, going beyond the annotation profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the core definition, and every clause carries information, but it is delivered as one dense run-on sentence packing output-structure details together. It would be more scannable if split into short points; the length is on the heavy side.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the full burden of describing return values and does so thoroughly: it lists the referent fields, explains the null/platformDefaults semantics, names the additional catalogues (duration profiles, output formats, budget tiers, writingProfiles), and covers cost and both parameters. An agent has enough to call and interpret it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description's parameter content ('locale selects the language', 'compact=true leaves out...') largely restates what the schema already documents, adding only marginal specificity about which catalogues drop out.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (list) and resource (creative referents / formats a piece can be produced in) and defines the concept precisely with examples (documentary, explainer, viral short). It also explains the referent id's role ('the value of creative_referent when a piece is created or priced') and enumerates the additional catalogues returned, making it distinguishable from sibling list_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the note that the referent id is used when a piece is 'created or priced' and that 'production accepts' these duration/format/budget values hints at the workflow, but there is no explicit 'call this before produce/estimate' instruction or named alternative. No when-not guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_versionsList versionsA
Read-onlyIdempotent
Inspect

The project's version timeline (ordered from the newest) with lineage: id, number, sequence (global position in the timeline, unique), parent, origin (script generation, an agent's or a human's edits, a rewrite…), branch label, status, scene count, and isHead — the cut the line renders. Version status vocabulary: working = the operable cut · approved = script approved by the editorial gate · draft = a branch not promoted · superseded = replaced as the cut, kept in history (it can be made the cut again) · discarded = a Studio copy replaced when a script was approved or re-applied, kept in history (older versions: also a replaced cut) · rewrite = produced by a rewrite run. $0.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax versions (default 20, max 100).
project_idYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds real behavioral context beyond them: ordering (newest first), the meaning of each status, and the important non-obvious fact that 'superseded' and 'discarded' versions are kept in history and can be re-promoted. It also flags ordering as fixed. Missing only pagination/response-shape behavior, which is defensible given 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core statement, then the status vocabulary delivered as a scannable definition list. It is long, but with no output schema the field/status enumeration earns its space; the trailing '$0' is a slightly cryptic appendage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly carries the return-field burden and explains the domain-specific status vocabulary thoroughly. Gaps remain around the required project_id and pagination behavior across the limit, but the semantic coverage is strong for a list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%: 'limit' is documented in the schema but 'project_id' has no description anywhere. The description enumerates return fields (id, number, sequence, parent, origin...) rather than explaining the inputs, so it does not compensate for the undocumented required parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('The project's version timeline ... with lineage') and enumerates exactly what is returned. In a sibling set crowded with list_* tools (list_projects, list_ops, list_cast, list_material, list_referents), it unambiguously stakes out the version/lineage domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to call this versus siblings like get_project_status, set_head, or get_project_vbp — all of which touch the same version/cut concept. The 'isHead' and status semantics imply a use case (finding the current cut), but the agent must infer it; no prerequisites or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

produceProduce the videoA
Destructive
Inspect

Starts (or resumes) the production line of an EXISTING project: sets its drive to auto and dispatches the next station — the same sequence the human's «produce» button runs (enrich → studio build → final render). Publishing is not part of it. Applies to a project created without auto-production once edited, and to a line that stopped. The answer says whether the tick was really enqueued (dispatched, dispatch.reason) and what the line will do (line). On a piece whose final is already delivered the line does not render again by itself: the answer then carries finalRender — whether the studio changed after that final, and the quote of a NEW final render — and with confirm_spend=true the new render is launched, the same act as the human's «produce again» in the studio. Requires write. Spends budget under the org's quota and the daily free-action cap (each call counts as one action).

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
confirm_spendNoOnly for a piece whose final is already delivered: true launches a new final render (a paid render, quoted in `finalRender.quote`). Default false: the answer quotes it and launches nothing.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare destructive/non-idempotent/non-readOnly; the description goes well beyond them by disclosing the `write` permission requirement, budget/quota consumption and the daily free-action cap, and the exact response signals (`dispatched`, `dispatch.reason`, `line`, `finalRender`) including the no-op behavior when a final is already delivered. This is the kind of cost and side-effect context an agent needs before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and scope, then layers the edge cases; every sentence carries information (permissions, spend, response fields). It is dense and heavily parenthesized with backticks and guillemets, which costs some readability but not accuracy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still names the meaningful response fields and their conditional presence (finalRender only when a final exists, finalRender.quote, dispatch.reason), and covers auth, cost, and idempotency-adjacent behavior. 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50% (project_id is undocumented), but the description compensates by fully explaining confirm_spend's semantics: default false quotes only, true launches a paid render equivalent to «produce again». project_id's meaning is left to inference, but it is self-evident from the purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('starts or resumes the production line of an EXISTING project') and pins down scope: the same sequence as the human «produce» button (enrich → studio build → final render), with publishing explicitly excluded. An agent can distinguish this from run_op/direct/stage_op by the described end-to-end pipeline and the existing-project constraint.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete when-to-use conditions ('a project created without auto-production once edited' and 'a line that stopped') and a when-not ('Publishing is not part of it'), plus the special case for already-delivered finals. It stops short of naming an alternative sibling tool for the cases it does not cover, so it is clear context rather than full routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

request_uploadRequest upload ticketAInspect

Upload tickets for the creator's OWN material (a recorded interview, a product photo, drone footage, a recorded voice) so it can be kept in the personal library and placed in a piece. Three forms: one file (filename + size_bytes); a batch (files: one ticket per file, and a file that is refused carries its reason without stopping the others); or handle alone, which resumes an upload in parts — it returns the parts that arrived, the ones missing and signed URLs for the missing ones. The bytes travel outside this tool, straight to storage: a ticket's upload is one signed PUT (url + headers) or, with resumable, a list of parts — consecutive slices of partSizeBytes, each sent by PUT to its own url with its headers — that can be continued after an interruption until expiresAt (the session, about a day); each signed part url is valid until upload.partsExpireAt (about 1 h), and a 403 on a part past that is an expired url, not a failed upload: request_upload with only the handle re-signs the missing parts for free. The declared size is part of the signature. A video container that only carries sound (a browser recorder) is declared as audio/webm or audio/mp4 and is registered as audio. Each ticket states the limit per file in force (maxBytes) and the space in use (quota); a refusal says which limit was reached and with which numbers. Accepted: gif/heic/heif/jpeg/jpg/png/webp images, mov/mp4/webm video and aac/m4a/mp3/wav audio. $0.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesNoA batch: one ticket per file, in the same order.
handleNoResumes an upload in parts: the `handle` of its ticket, with nothing else.
filenameNoOne file: its original filename with extension (the extension decides image, video or audio).
resumableNoDefault false. True asks for an upload in parts that can be resumed, for the single file or for every file of the batch; a file that fits in one part still gets one PUT.
size_bytesNoExact size of that file in bytes. Required with `filename`: the upload is signed for that size.
content_typeNoOptional MIME type of that file, accepted when it matches the extension.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only generic annotations (non-read-only, non-idempotent, non-destructive), the description carries real behavioral weight: signed-PUT mechanics, resumable parts that continue after interruption, expiresAt/partsExpireAt windows, and the crucial clarification that a 403 on an expired part is an expired URL rather than a failed upload and can be re-signed for free. Quota/maxBytes and refusal reporting are also disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded and every sentence carries information, but it is delivered as one very dense paragraph with heavy nested parentheses and long em-dash clauses, which costs some scannability for a description of this size.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 must convey returns, and it does: ticket upload as a signed PUT or a list of parts, part expiry fields, handle-based re-signing, quota and maxBytes, and accepted content types. Nothing an agent needs to invoke and follow through correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description goes beyond the schema: it explains that handle alone resumes and returns arrived/missing parts, that a refused batch file carries its reason without aborting the rest, that the declared size is part of the signature, and how resumable changes the part layout.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: it issues upload tickets for the creator's own material and enumerates the three supported forms (single file, batch, resume-by-handle). It never names or distinguishes itself from the closest sibling, complete_upload, so an agent must infer the relationship from the flow described.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly explains which form to use in which situation (filename+size for one file, files for a batch, handle alone to resume) and states that bytes travel outside the tool. It stops short of explicit when-not-to-use or naming alternatives such as complete_upload.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rewrite_scriptRewrite the scriptA
Destructive
Inspect

Rewrites the WHOLE piece under the brief with the format's writer (the same revision pass the writing pipeline runs), then re-dresses only the scenes whose narration changed (visuals are kept). It covers a brief that spans the piece («more rhythm in the second act, and let the ending return to the thesis»); a single scene has its own re-authoring op. Asynchronous: returns a run id, and the project status reports the job by run_id — once completed, with the new version id (job.result.editorialVersionId, also in latestRunByKind.editorial_rewrite). as_branch=false (default) makes the result THE CUT the line renders, as committing a draft does. Writers that require spend confirmation need confirm_spend=true. Requires write. Spends LLM budget: a full script pass, priced like the writing profile of the piece (writingProfiles[].measure in the catalogue of formats).

ParametersJSON Schema
NameRequiredDescriptionDefault
briefYesWhat to change, in any language (max 4000 chars).
as_branchNoKeep the rewrite as a branch instead of making it the cut. Default false.
project_idYes
version_idNoOptional: the base version; default the project's head.
confirm_spendNoRequired when the piece's writer requires spend confirmation (`requiresSpendConfirmation` in the catalogue of formats).

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond annotations: asynchronous execution with a run id, how to poll completion, the result version id location, that as_branch=false makes the result the actual cut the line renders, permission requirement, and that it spends LLM budget priced by the piece's writing profile. This goes well past the readOnly/destructive/idempotent hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and is dense with useful detail, but the run-id/result-path sentence and nested parentheticals make it heavier than necessary. Every sentence does carry information, so it is dense rather than padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description explains the return contract (run id, job.result.editorialVersionId, latestRunByKind.editorial_rewrite) plus side effects and cost. Nothing an agent needs to invoke and track this job is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 80%, but the description still adds meaning: as_branch=false is framed as "THE CUT the line renders, as committing a draft does," and confirm_spend is tied to the requiresSpendConfirmation flag in the format catalogue. brief/version_id semantics remain largely in-schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (rewrites the whole piece under a brief) and immediately scopes it against the sibling that handles a single scene ("a single scene has its own re-authoring op"). An agent can distinguish rewrite_script from author_op/run_op without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it (a brief spanning the piece, e.g. act-level rhythm changes) versus when not (single scene → its own re-authoring op). It also gives the operational conditions: async, poll status by run_id, confirm_spend when the writer requires it, requires `write`.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_opRun an edit op (deprecated)A
Destructive
Inspect

DEPRECATED since 2026-09-27, kept until at least 2026-10-27: the edit ops are split by cost between two tools, one for the free deterministic ops and one for the paid LLM re-authoring ops (invocableVia in the op catalogue names them). This alias routes each op to the tool that owns it and answers what that tool answers, plus a deprecated notice that names it. Ops:

  • replan_scenes: Reorder the scenes (a permutation of indexes). Deterministic, $0. Args: order=[int...].

  • rewrite_scene: Re-author one scene (script and visual) under a brief. LLM. Args: scene_index, brief (the WHOLE scene is re-authored under the brief).

  • set_piece_fields: Set PIECE-level fields (production_score: silence_plan, music_intent, narrative_arc…), validated by the schema. Deterministic, $0. Args: fields (partial production_score: silence_plan, music_intent, narrative_arc, expected_total_duration_sec…; lists replace).

  • set_scene_fields: Set concrete fields of one scene (narration, duration, silences, infographic data…), validated by the schema. Deterministic, $0. Args: scene_index, fields (partial scene object: narrator_text, direction_notes, pre_silence_sec, pause_after_sec, visual.duration_target_sec, visual.prompt, infographic.data, kinetic_caption…; nested dicts merge by key, null deletes; validated by the VBP schema).

  • set_visual: Set a scene's visual type and/or visual prompt. Deterministic, $0. Args: scene_index, visual_type?, visual_prompt?.

  • swap_voice: Change the voice (semantic attributes) of one scene or all of them. Deterministic, $0. Args: voice_spec={...} (semantic attributes only: timbre, cadence, accent, language, apparent_gender, voice_style — NOT a voice id: the concrete voice is a piece-level decision made when the piece is created; a scene has no voice pin of its own, for the human either), scene_index?.

  • tighten_hook: Strengthen the opening hook (scene 0). LLM. Args: brief? (scene 0). Requires the write scope. The deterministic ops are $0. Spends LLM budget only on the authoring ops (charged like a chat turn); the deterministic ops are $0.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
argsYesOp arguments (see description).
project_idYes
request_idNoOptional: a caller-chosen key for this request (up to 64 characters). The same key returns the same job for 24 h; a new key runs it again. Without it, an identical call within 15 minutes is the same request.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructive=true and idempotent=false, and the description adds substantial context beyond them: it requires the `write` scope, distinguishes $0 deterministic ops from LLM-charged authoring ops (billed like a chat turn), and notes that null deletes fields and that lists replace while nested dicts merge. It does not state reversibility of destructive ops, but the cost/scope/validation disclosure is well above baseline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The deprecation notice is front-loaded and the per-op bullet list is dense but earns its space, since each op has distinct args and cost behavior. The only real waste is the closing sentence, which repeats the '$0 for deterministic ops' fact a third time after it is already stated inside every bullet.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-output-schema tool with nested args, the description is nearly sufficient: it explains routing, return behavior ('answers what that tool answers, plus a `deprecated` notice'), scope, cost, and per-op args. The remaining gap is that the successor tool names are not surfaced, forcing a `list_ops` lookup during a deprecation window.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%, but the description compensates by documenting each enum value of `op` and the exact argument shape for every one (order=[int...], scene_index/brief, partial scene objects, voice_spec semantic-attribute caveat, etc.), far beyond the schema's 'see description' pointer for args. Only `project_id` is left implicitly understood, and it helpfully clarifies that swap_voice takes semantic attributes and NOT a voice id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states exactly what the tool is: a deprecated alias that routes each edit op to the split tool that now owns it, and it enumerates all seven ops with their semantics. It distinguishes itself from siblings by declaring its deprecation and its routing role, but it never names the two replacement tools directly (it defers to `invocableVia` in the op catalogue), so the agent must take an extra step to find the successor.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage context: DEPRECATED since 2026-09-27, kept until at least 2026-10-27, because ops were split by cost between two tools. The implied guidance is 'prefer the split tools', but the alternatives are only referenced indirectly through the op catalogue rather than named, so the when-to-use-this-vs-that decision is not fully closed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_headMake a version the cutA
Idempotent
Inspect

Makes an existing version THE CUT the production line renders — the same act as the human's «restore» on the version timeline. Non-destructive: the previous cut stays in history (superseded); the next production run renders the new cut. Requires write. $0.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
version_idYesA version id of the project's timeline.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover only the safety profile (idempotent, non-destructive, not read-only). The description goes well beyond that: it explains the state transition (previous cut marked `superseded` and retained in history, not deleted), the downstream effect (next production run renders the new cut), the write-scope requirement, and the cost ($0). That is exactly the extra context annotations cannot supply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight clauses, front-loaded with the core verb and resource, then the human-analogue, then the consequences, auth and cost. Nothing is redundant; every clause carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation with no output schema and annotations already declaring idempotency and non-destructiveness, the description supplies the important missing pieces: reversibility semantics, downstream render effect, and auth/cost. The only shortfall is parameter-level detail for project_id, which is a minor gap against an otherwise complete picture.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

At 50% schema description coverage, the description must compensate for the undocumented parameter, but it adds no parameter-level detail at all. project_id is neither explained nor qualified (scope, format, where it comes from), and version_id is only loosely implied by 'an existing version'. The schema does at least describe version_id as belonging to the project timeline, so this is not a total void, but the compensation the coverage gap calls for is absent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Makes an existing version THE CUT the production line renders' — and disambiguates it from neighbouring tools by naming the concrete state it sets (the rendered head), not a vague 'update'. An agent can distinguish this from produce, list_versions, or commit without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It anchors the operation to a familiar human action ('the same act as the human's «restore» on the version timeline'), which tells the agent when this is the right tool. It also states the 'Requires `write`' precondition and $0 cost. It stops short of naming an explicit alternative or exclusion, so it is clear context rather than full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stage_opStage a free edit opAInspect

Stages ONE free edit op on a project — deterministic, no provider is called — into the project's conversation draft: the SAME op the human director runs from a panel or the chat (agent and human edits converge on ONE op-log). The draft becomes a new version when it is committed. Only the free ops run here: the paid re-authoring ops and the creation fields have their own tools (invocableVia in the op catalogue names the tool of each op). Ops:

  • replan_scenes: Reorder the scenes (a permutation of indexes). Deterministic, $0. Args: order=[int...].

  • set_piece_fields: Set PIECE-level fields (production_score: silence_plan, music_intent, narrative_arc…), validated by the schema. Deterministic, $0. Args: fields (partial production_score: silence_plan, music_intent, narrative_arc, expected_total_duration_sec…; lists replace).

  • set_scene_fields: Set concrete fields of one scene (narration, duration, silences, infographic data…), validated by the schema. Deterministic, $0. Args: scene_index, fields (partial scene object: narrator_text, direction_notes, pre_silence_sec, pause_after_sec, visual.duration_target_sec, visual.prompt, infographic.data, kinetic_caption…; nested dicts merge by key, null deletes; validated by the VBP schema).

  • set_visual: Set a scene's visual type and/or visual prompt. Deterministic, $0. Args: scene_index, visual_type?, visual_prompt?.

  • swap_voice: Change the voice (semantic attributes) of one scene or all of them. Deterministic, $0. Args: voice_spec={...} (semantic attributes only: timbre, cadence, accent, language, apparent_gender, voice_style — NOT a voice id: the concrete voice is a piece-level decision made when the piece is created; a scene has no voice pin of its own, for the human either), scene_index?. The result carries the coherence report: a hasBlocking draft can still be committed with force=true. While an authoring turn of the same project is in flight the draft is not touched (authoring-in-progress). Requires the write scope. $0.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
argsYesOp arguments (see description).
project_idYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations it discloses that the op is deterministic and $0, that the draft becomes a new version only when committed, that a hasBlocking draft can still be committed with force=true, and that a concurrent authoring turn leaves the draft untouched (authoring-in-progress). It also states the required write scope. This is substantial behavioral context that the annotations (which merely mark non-readOnly, non-destructive, non-idempotent) do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and boundary are front-loaded before the op catalogue, and every op line earns its place by naming args and cost. It is dense and repeats 'Deterministic, $0' five times, which is redundant, but the length is defensible given five ops with nested arguments.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a five-op tool with nested args and no output schema, the description covers purpose, per-op arg semantics, cost, scope, concurrency behavior, and the shape of the result (the coherence report with hasBlocking). Nothing an agent needs to invoke it correctly appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%, so the description carries the burden and does so thoroughly: each enum value is documented with its own arg shape (e.g. order=[int...] for replan_scenes, scene_index/fields for set_scene_fields, voice_spec semantic attributes for swap_voice). It specifies merge/delete semantics ('nested dicts merge by key, null deletes'), that lists replace, and the critical constraint that voice_spec takes semantic attributes, not a voice id. This adds far more than the raw schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('Stages ONE free edit op on a project') and immediately scopes it as deterministic with no provider call, writing into the project's conversation draft. It distinguishes itself from the paid re-authoring ops and creation fields, which 'have their own tools', so an agent can separate it from siblings like author_op or run_op without opening the schema. The op list makes the exact edited surface explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly delimits when this tool applies: only the five free ops run here, and paid re-authoring / creation fields belong elsewhere. It adds a state condition (the draft is not touched while an authoring turn is in flight) and note that agent and human edits converge on one op-log. It stops short of naming a specific sibling tool for each alternative, deferring to 'invocableVia in the op catalogue', which is slightly indirect.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

whoamiWho am IA
Read-onlyIdempotent
Inspect

The principal behind this credential: credential kind and scopes (read reads; write creates, edits and produces), the organization (id, name, default locale), the user the work is attributed to, whether that user operates the platform (then production is not charged to the wallet), the wallet balance in USD, the first-piece offer in force, whether the user has accepted the legal terms in force (legal), and the server version. $0.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world behavior. The description adds meaningful context beyond that: it details the credential's scope semantics ('read' reads; 'write' creates, edits and produces), notes that platform operators are not charged to the wallet for production, and states the cost is $0. This economic and authorization context is valuable, though no rate limits or response format details are provided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that begins with the tool's purpose and then enumerates the returned fields. Every clause appears to earn its place, but the dense run-on list is slightly less structured than an ideally formatted definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the full burden of explaining what is returned, and it does so thoroughly: credential kind and scopes, organization details, attributed user, platform-operator charging behavior, wallet balance, offer, legal acceptance, and server version. Annotations cover the safety profile, so no critical context is missing for an agent to invoke and interpret this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there are no parameter semantics to explain. Per the scoring rubric, zero parameters yields a baseline of 4. The description appropriately does not discuss parameters and focuses on the returned information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly defines the identity resource: the credential principal, its scopes, organization, attributed user, platform-operator status, wallet balance, offer, legal acceptance, and server version. It is immediately distinguishable from all sibling tools, which cover production operations, materials, scripts, and projects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never states when to call this tool versus alternatives, nor does it specify any prerequisites or contexts. The only guidance-like information is the cost '$0', which is not usage guidance. Usage is implied by the name 'whoami' but not made explicit.

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. 2 tool updates
    • Changedestimate1 field changed
      • addedInput schema / properties / production / properties / target_duration_sec / description
        Added value: +"Exact target length in seconds (e.g. 210 for «3:30»). It governs the duration profile: if it falls outside the profile's range, the profile whose range contains it governs and the response says so (`durationProfileSource: target_duration_sec`, `durationProfileDisplaced` names the profile it replaced). Without a profile it picks the one that contains it. Without it the profile's own target governs."
    • Changedgenerate_script1 field changed
      • changedInput schema / properties / production / properties / target_duration_sec / description
        Previous value: -"Exact target length in seconds, inside the duration_profile's range (e.g. 300 for «five minutes» in watch_standard). Without it the profile's own target governs."New value: +"Exact target length in seconds (e.g. 210 for «3:30»). It governs the duration profile: if it falls outside the profile's range, the profile whose range contains it governs and the response says so (`durationProfileSource: target_duration_sec`, `durationProfileDisplaced` names the profile it replaced). Without a profile it picks the one that contains it. Without it the profile's own target governs."

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources