Skip to main content
Glama

studio.place_product_card

Place a product card: a price_tag text clip showing a stock item's name and price, built from values you already hold. studio.insert_product_card reads them from the stock record for you; use this op inside studio.apply_ops or when the values come from elsewhere. The price prints as the currency code and the amount with two decimals (SGD 12.90), never a symbol. style: tag (name over price, lower left), banner (name and price on one line, bottom centre), price_only (the price alone, large, top right); default tag. A name longer than 32 characters is shortened on screen and kept whole in the card's record. Lands on the first text track, or the one track_id names, at start_ms (default 0) for duration_ms (default 4000). Refuses, naming the fix: a blank product_name, an unknown or non-text track_id, a locked text track, a card past the timeline cap, a full track, or an overlap with another clip (the refusal gives the nearest start_ms that fits).

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>",
      "stock_item_id": "<stock_item_id>",
      "product_name": "<product_name>",
      "sell_price_cents": "<sell_price_cents>",
      "currency": "<currency>"
    },
    "name": "studio.place_product_card"
  }
}

Input Schema

NameRequiredDescriptionDefault
styleNoThe card's layout; tag when left out.
currencyYesThe ISO code the price prints with; the business's sales_settings default_currency.
start_msNoTimeline millisecond where the card appears; 0 when left out.
track_idNoA text track (vtr_) from get_composition; the first text track when left out.
project_idYesThe studio project (vp_…) this tool acts on.
duration_msNoHow long the card shows, in milliseconds; 4000 when left out.
product_nameYesThe item's name as the stock record holds it.
stock_item_idYesThe stock item's id from stock_item_list; kept on the card so it can be refreshed from the record.
sell_price_centsYesThe selling price in cents (1290 prints as 12.90).

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; the description carries the rest and does so richly: price rendering format (currency code + two decimals, never a symbol), name truncation (32 chars on screen, whole in record), landing track/timing defaults, and an enumerated list of refusal conditions each paired with the nearest fitting fix. This is exactly the behavioral context an agent 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?

Purpose and the sibling distinction are front-loaded, and nearly every clause carries information (formatting, truncation, placement, refusals). It is a single very dense sentence-cluster, though, and the refusal enumeration could be slightly tightened.

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 9-parameter mutation tool with no output schema, the description covers formatting, defaults, placement, failure modes and remedies. Nothing an 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.

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds real meaning beyond it: style values are explained by layout (tag = name over price lower left, banner = one line bottom centre, price_only = large top right), currency printing behavior, and name truncation semantics. It stops short of covering every parameter but comfortably exceeds the schema baseline.

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 ('Place a product card') and defines the artifact precisely ('a price_tag text clip showing a stock item's name and price'). It also explicitly distinguishes itself from the sibling studio.insert_product_card, so an agent can pick correctly without opening either 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?

Gives explicit routing: studio.insert_product_card reads values from the stock record, while this op is for use inside studio.apply_ops or when values come from elsewhere. It names the alternative and the exact condition that selects each.

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