Skip to main content
Glama

Add slide

add_slide

Insert a new slide before or after an explicit anchor. Provide exactly one of before or after, naming an ordinary narration paragraph by 1-based ordinal, an existing slide by slideUid, or a project section by itemUid. after also accepts {type: "end"}. For an opening slide, use before: {type: "composition-item", itemUid: }. This places the slide immediately after that section marker, including source-less and empty sections. Use before with the first slide uid to open a slides-only project. An after composition-item anchor places the slide at the end of the authored section scope, after its slides and any explicit playback cue. If the section has no explicit playback cue, implicit remaining playback still follows the slide, so returned placement is internal rather than closing. Repeated inserts using the same after anchor land in reverse order; insert in reverse or anchor each next slide after the one just created. Use the returned placement to confirm whether the result is opening, internal, closing, or standalone; placement describes authored order; exact playback boundaries require generated timing. Use blank for a media-led slide with no script-bound visual text; do not create and then empty a title slide. Blank takes zero items. It may take narration, or be silent when narration is omitted; never invent placeholder narration. Silent slides require a positive minDuration in slide.settings.timing. For a video asset without an audio track, omit settings.audio entirely; do not add muted audio settings or re-encode the asset with a silent audio track. Title takes exactly one item; list takes an optional heading and at least two items. slide is the complete SlideElement tree to store; its root uid and container/item uids must match the generated script markup. Blank has no title/list container in the tree. For title use root_S/root_I. For list use root_T/root_TI for an optional heading, root_S for the list, and root_I1, root_I2, etc. for its items. Preview with dryRun, summarize the proposal in user language, and wait for approval before writing.

Input Schema

NameRequiredDescriptionDefault
afterNoInsert after a paragraph or slide, after the authored project section scope, or at document end. In a section without an explicit playback cue, implicit remaining playback may still make the returned placement internal. Reusing the same after anchor reverses insertion order. Provide exactly one of before or after.
itemsNoblank: empty. title: exactly one item. list: at least two.
slideYesComplete slide tree. All script-bound uids derive from slide.uid. blank: no title/list containers; free image, video and text elements are allowed. title: container <uid>_S and item <uid>_I. list: optional heading container <uid>_T with item <uid>_TI, list container <uid>_S, and list items <uid>_I1, <uid>_I2, and so on.
beforeNoInsert before a paragraph or slide, or at the start of a project section after its structural marker. Section insertion also supports empty, source-less, and narration-free sections.
dryRunNoWhen true, validate without writing anything.
headingNolist only: optional heading above the bullets. A title slide takes no heading.
narrationNoblank only: narration spoken while the slide is shown. Omit for a silent slide; set slide.settings.timing to minDuration only when a specific minimum duration is requested.
projectUidYes
sectionTypeYesblank: no script-bound visual text; it may be narrated or silent with an explicit duration. title: a lone title, exactly one item. list: a heading plus bullet items.

Output Schema

NameRequiredDescriptionDefault
elementYes
slideUidYes
placementYes

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 declare destructiveHint=false, idempotentHint=false, and openWorldHint=false; the description goes far beyond by disclosing the reverse-order behavior of repeated after inserts, the difference between returned placement and actual playback boundaries, and write-affecting conventions such as omitting settings.audio for silent video and requiring minDuration for silent slides.

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 critical insertion semantics are front-loaded, but the body is a single dense paragraph of roughly 350 words mixing anchor rules, placement semantics, slide-type rules, and media caveats with no headings or grouping. For a tool this complex the length is defensible, but the lack of structure costs it.

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 deep nested objects, the description covers the correctness traps an agent would otherwise hit (reverse ordering, silent slides, muted-audio workaround, script-bound uid conventions). An output schema exists, so return values need not be explained.

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 89%, so the baseline is 3; the description adds real meaning on top by explaining what each anchor type resolves to, that after also accepts {type: "end"}, and the trailing-effect semantics of a composition-item anchor. Some content, like container uid naming and item counts, restates the schema's own descriptions, which keeps 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?

The opening sentence states a specific verb, resource, and anchoring model ("Insert a new slide before or after an explicit anchor"), which is enough to distinguish it from update_slide, remove_slide, and reuse_slide 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?

It gives explicit routing rules: exactly one of before/after, which anchor types each accepts, how to open a slides-only project, when to choose blank vs title vs list, and the dryRun-preview-then-approve workflow. Concrete alternatives and exclusions are named rather than implied.

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