apply_slide_deck_operations Edit slides atomically on a 1920 x 1080 stage. Examples: {"type":"add_slide","slide":{"id":"intro"}}; {"type":"add_element","slideId":"intro","element":{"id":"title","kind":"text","x":160,"y":380,"width":1600,"height":200,"text":"Hello"}}; {"type":"update_element","slideId":"intro","elementId":"title","patch":{"text":"Welcome"}}. Use update_element + patch, not patch_element/patches. IDs are caller-supplied. Read first; reuse revisionAfter. Default merge_non_overlapping edits the current deck; reject requires exact revision. dryRun validates only. More operations: /docs/mcp/apply_slide_deck_operations. Edit a Slide Deck tab atomically. Slides: add_slide {slide:{id, layout?, background?, transition? (none|fade|push|zoom), notes?, hidden?, elements?}, beforeSlideId?}, update_slide {slideId, patch}, move_slide {slideId, beforeSlideId|null}, duplicate_slide {slideId, newSlideId} (copied element IDs are newSlideId_0, _1…), delete_slide. Elements on a slide, back to front: add_element {slideId, element:{id, kind (text|image|shape|line), x, y, width, height, …}} adds on top; update_element {slideId, elementId, patch}; reorder_elements {slideId, ids: every element back to front}; delete_element. Text: text (one line per paragraph), fontSize, fontWeight, italic, underline, fontFamily (sans|serif|mono), align, valign, list (none|bullet|number), lineHeight, color. Shapes: shape (rect|ellipse|triangle|diamond|arrow|star), fill, stroke, strokeWidth, cornerRadius, and optional text. Lines: stroke, strokeWidth, flip, arrowEnd. Images: media from upload_asset ({id, mimeType, filename}), fit (contain|cover); slide.backgroundMedia covers a whole slide. The deck is edited live by people too: by default operations apply to the current deck (conflictPolicy merge_non_overlapping); use reject to require your exact revision. replace_deck rewrites everything.