Skip to main content
Glama

Create a component

scaffold_component

Write a compiling TypeScript skeleton and return the Asset ID. Pass name and kind (node|circle|rect|shader|counter|video|gradient). Do not pass source. Use kind=gradient for a scrim with typed colors and local coordinates; read guide/gradients-overlays. Use kind=shader for an SkSL adjustment layer. Load builtin-shaders before a shader. Required: load builtin-vidova-basics first unless that body is already in this conversation. Load builtin-fonts before setting fontFamily. After it succeeds, edit with replace_component or place with patch_film using the Asset ID. Load builtin-film-custom-components before that placement. branchId null (or left out) means the current version; a version id from list_branches writes that version without switching the editor to it. Not for a published library element; that is import_element. Not for film XML tags.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
kindYes
nameYesComponent class name, a JavaScript identifier, or shared/<name> for a shared module that components import as ./shared/<name>.
branchIdYesVersion id from list_branches to write to, without switching the editor to it. null, or leaving it out, means the current version.
projectIdYesThe project this call runs on without changing the open project. null (or leaving it out) uses the open project. wait_for_jobs takes the projectId of the calls that started the jobs.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only establish write/non-destructive/non-idempotent, while the description adds real behavioral context: a compiling skeleton is produced, an Asset ID is returned, 'do not pass source' constrains input, and branchId writes a version without switching the editor. The prerequisite skill-loading chain (builtin-vidova-basics, builtin-shaders, builtin-fonts, builtin-film-custom-components) is behavior an agent could not infer from annotations. No contradiction with the declared 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-loaded with the core action and return value, then organized as terse imperatives rather than prose, so most sentences earn their place at this tool's complexity. It is still long and mixes runtime skill-loading instructions with schema-duplicating branchId text, which slightly dilutes the signal.

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?

No output schema exists, and the description still states the return value (Asset ID) and the follow-up calls that consume it, plus every prerequisite skill. It omits what happens on failure or on a name collision with an existing component, which is the main remaining gap for a mutating create tool.

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 75%, so the schema already documents name and branchId well; the description's branchId sentence largely repeats the schema. However, it adds genuine semantics for kind that the bare enum lacks (gradient = scrim with typed colors and local coordinates, shader = SkSL adjustment layer) and states that source must not be passed, which is not in the 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?

Opens with a specific verb and artifact: 'Write a compiling TypeScript skeleton and return the Asset ID,' which is unmistakable against sibling writers like patch_component or replace_component. It then names the exact inputs (name, kind) and the explicit non-goals, so the agent can differentiate it from import_element 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 Guidelines5/5

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

Gives per-value guidance (kind=gradient for a scrim, kind=shader for SkSL), prerequisite skills to load before each mode, and the downstream workflow (edit with replace_component, place with patch_film). It also states two explicit exclusions: not for a published library element (use import_element) and not for film XML <component> tags.

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.