Change Slides
edit_slidesChanges Slides read at "base". All ops apply, or none. Boxes are s3.b2 (or s3.). Ops: set, text (html, find/with, insert, delete, format, append), insert, delete, move, z, group, ungroup, slide.insert, slide.delete, slide.move, slide.set, slide.html, media, theme, density. A person's edit since base is refused, naming them; text find/with still lands. "intent" lights up boxes before you change them; "answers" closes an ask. Replies with each change and what to fix (overflow, overlap, contrast). Render after changing how slides look.
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": {
"doc": "<doc>"
},
"name": "edit_slides"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| doc | Yes | The doc's link or its code. | |
| key | No | A retry key, up to 64 characters. Default: one made from the request. | |
| ops | No | At most 200, applied in order. Boxes "s3.b2" or "s3.<name>"; slides "s3" or a name. {"op":"text","id":"s3.b2","find":"$48k","with":"$52k"} · {"op":"text","id":B,"html":"Revenue <b>grew</b>"} · "insert":{"at":N,"html":H} · "delete":{"from":N,"to":M,"expect":"$48k"} · "format":{"from":N,"to":M,"marks":{"b":true}} · "append":H · "field":"cell.r2.c3" or "notes" {"op":"set","id":B,"props":{"class":"card accent","style":{"color":"accent"},"alt":"…","build":1}} (null removes; build: the click it comes in on when presenting, the same number together) · {"op":"move","id":B,"x":96,"y":240,"w":800,"h":400} · {"op":"z","id":B,"to":"front"} {"op":"insert","slide":"s3","box":{"kind":"text","at":[96,240,800,200],"class":"body","text":"…"},"after":B} · {"op":"delete","ids":[B]} · {"op":"group","ids":[B,B]} · {"op":"ungroup","id":B} {"op":"slide.html","id":"s3","html":"<section>…</section>"} (rewrite a slide from get's HTML; keep data-box on boxes you keep) · {"op":"slide.insert","after":"s3","html":"<section>…</section>"} · {"op":"slide.delete","ids":["s6"]} · {"op":"slide.move","ids":["s6"],"after":"s2"} · {"op":"slide.set","id":"s3","props":{"class":"bg-soft","notes":"…","transition":"fade"}} (transition as it arrives when presenting: none, fade, push, zoom, morph; morph glides boxes with the same name on both slides) {"op":"media","id":B,"file":"<library name>"} (or "stock": an ID, "url": https) · {"op":"theme","theme":"Paper"} (Harbor, Harbor Dark, Paper, Slate) · {"op":"density","density":"compact"} · {"op":"table","id":B,"insert":"row","after":"r2"} ("delete":["r5"]) | |
| base | No | The version you read: v N in get. | |
| note | No | Why, in a few words. Shown in changes and History. | |
| undo | No | Undo your own change that made this version. Goes alone. | |
| dryRun | No | Work it out and answer, saving nothing. | |
| expect | No | Fields that must still hold these values, or nothing applies: {"s2.b1": "92%"}. | |
| intent | No | Light up boxes before a change, for people watching: {"boxes": ["s4.b2"], "say": "Updating the revenue chart"}. Alone (no ops) it lights them before a long think. | |
| answers | No | The ask this change answers ("a12"). With intent and no ops, it takes the ask; with ops, it closes it. |