Skip to main content
Glama

Render a Studio project

studio_render

Costs the project's render price (quote.render_cents from studio_estimate_project): renders the saved project exactly as it is. confirm_cents is the most you agree to pay: the step charges what it costs, never more, and refuses with price_changed (charging nothing) when it costs more. Call it with confirm_cents: 0 to learn the price of a paid step (the answer is price_changed with price_cents; nothing is charged). A free step (a standard voice, a visual already bought) just runs. Idempotency is keyed on (this token, this tool, idempotency_key), not on the arguments.

Args: project_id: from studio_list_projects (or ai_short_create when it asks you to finish). confirm_cents: the most the user agreed to pay, in cents. idempotency_key: unique per purchase (recommended).

Returns: {ok, job_id, kind:'render', poll_after_s, cents}: poll with wait_for_job (r_). Cancel with cancel_job (refunds). Errors: price_changed {price_cents}, blocked {blockers}, already_rendering, outcome_unknown (check studio_get_project before retrying).

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "project_id": "<project_id>",
      "confirm_cents": "<confirm_cents>"
    },
    "name": "studio_render"
  }
}

Input Schema

NameRequiredDescriptionDefault
project_idYesA project id from studio_list_projects.
confirm_centsYesThe most the user agreed to pay, in whole cents (0 learns the price).
idempotency_keyNoAny unique string (1-200 printable chars) so a retry never buys twice.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false and destructiveHint=false; the description adds substantially beyond that: charging is capped by confirm_cents, a price change refuses and charges nothing, idempotency is keyed on (token, tool, idempotency_key) rather than arguments, cancellation refunds, and outcome_unknown requires checking studio_get_project before retrying. These are exactly the money-safety and retry semantics an agent needs and cannot get from structured fields.

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

Conciseness4/5

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

Front-loaded with the cost/action statement, then compact Args and Returns blocks with no filler sentences. Dense jargon (price_changed, outcome_unknown, r_ polling suffix) is packed tightly, but every sentence carries operational information.

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 documents the success return shape (ok, job_id, kind, poll_after_s, cents) and the full error surface (price_changed, blocked, already_rendering, outcome_unknown) plus next-step tools. For a paid, side-effecting three-parameter tool this is complete enough to call and recover from failures.

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; the description goes somewhat further by elaborating the ceiling semantics of confirm_cents and, importantly, explaining that idempotency is keyed on the token/tool/key triple rather than the argument values, which the schema does not say. It repeats the schema's own note that 0 learns the price, so it is value-adding rather than transformative.

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 ('renders the saved project exactly as it is') and immediately ties it to the cost source (quote.render_cents from studio_estimate_project), which cleanly separates it from the estimate sibling. An agent can tell what this does and what it does not do (it does not modify the project) 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 Guidelines5/5

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

Explicit guidance on when and how to call: use confirm_cents as a price ceiling, call with confirm_cents: 0 to learn the price of a paid step, free steps just run. It also routes post-call behavior to wait_for_job and cancel_job (refunds) and names studio_estimate_project as the price source, leaving little to inference.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources