Skip to main content
Glama
gwmage

Rootr MCP Server

Update ONE slide of a Rootr presentation

rootr_update_presentation_slide

Merge-patch a single slide in a presentation to make targeted edits, such as updating a title or blocks, without affecting other slides.

Instructions

Merge-patch a single slide by slideId, without touching the rest of the deck. Good for a precise, targeted edit (e.g. rewrite one slide's title/blocks); use rootr_append_presentation_slides instead when you are only adding new slides. Call rootr_read_presentation first to get the exact slideId. Authoring guide: give each slide ONE assertion-style title (a claim, e.g. "Latency dropped 40% after the cache fix" — not a topic label like "Latency"), plus blocks[] (bullet-like {id, heading?, body?, icon?} items) and, where useful, a diagram ({type:"mermaid", code}) or images. Canvas is 16:9 (1280x720). Meaning must live in TEXT — title/blocks[].heading/blocks[].body/notes are what auto-connects into the knowledge graph; diagrams/code/html and the image pixels themselves are visual-only and are NOT indexed, so never put facts ONLY in a diagram or picture. Images: image is the single primary/background image (cover, section, full-bleed); images[] holds additional inserted images placed on the slide. Each image is {id?, src?, alt?, placement?, prompt?, x?, y?, w?, h?}. Set src to an uploaded file URL (upload via POST /v1/attachments/upload, then use /api/v1/attachments/{id}/raw), an https URL, or a data: URI — you cannot upload the file bytes through these MCP tools, only reference the resulting URL. To get a REAL image, call rootr_generate_image with an English prompt (say "no text"), then put the returned url into the slide image's src; rootr_remove_image_background cuts out an image's background. placement is a layout hint ("full"|"right"|"top"|...); x/y/w/h give freeform PPT-style placement in 1280x720 canvas coords. ALWAYS add an alt caption to every image — alt text is part of the graph text spine, so a captioned image connects into the knowledge graph while an uncaptioned one does not. Use kind to mark each slide's role: "cover" (deck title slide), "section" (chapter divider), "content" (body slide, the default), "closing" (last slide / call to action). Page numbers: "content" and "section" slides automatically show a page number that follows the slide order (it re-numbers itself when slides are reordered), so you do NOT set it yourself. "cover"/"closing" have none by design.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
slideYesPartial slide fields to merge into the existing slide
slideIdYesSlide id to update (must belong to the deck)
presentationIdYesPRESENTATION node id
Behavior5/5

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

Beyond annotations (readOnlyHint=false, destructiveHint=false), the description explains the merge-patch behavior and that it does not affect other slides. It also includes extensive context on how the slide content is processed (text spine, visual-only diagrams, image handling).

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 purpose and usage guidelines. The description is long due to extensive authoring tips, which are helpful but could be considered verbose. Still, every part contributes to correct tool usage.

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 tool with nested objects and 100% schema coverage but no output schema, the description covers all necessary aspects: when to use, how to obtain the slideId, how to construct the slide object (including images, diagrams, notes), and the authoring philosophy. An agent would have sufficient guidance to invoke the tool correctly.

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 coverage is 100%, and the description adds significant value: e.g., for 'slide.title' it says 'Assertion-style title (the claim this slide makes)', for 'alt' it explains its role in the knowledge graph, and for images it details the upload workflow. This goes well beyond the schema's own descriptions.

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 opens with 'Merge-patch a single slide by slideId, without touching the rest of the deck,' clearly stating the action (update) and the resource (one slide). It distinguishes from sibling rootr_append_presentation_slides by contrasting use cases.

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 states when to use ('precise, targeted edit') and when not to ('use rootr_append_presentation_slides instead for adding new slides'). Also provides a prerequisite: 'Call rootr_read_presentation first to get the exact slideId.' No room for ambiguity.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gwmage/rootr-cli'

If you have feedback or need assistance with the MCP directory API, please join our Discord server