Decks
Space MCP tools in the Decks scope (decks). Reach these with a wks_live_ key over space-mcp or space-api.
Tools in the decks scope, callable over space-mcp (tools/call) or space-api (REST) with a wks_live_* key that grants decks.
add_deck_slide
Scope: decks:write
Add one slide to a deck, at position (1 = first; default last).
| Parameter | Type | Required | Description |
|---|---|---|---|
deck_id | string | yes | |
html | string | yes | |
notes | string | ||
position | integer |
create_deck
Scope: decks:write
Make a presentation deck with all its slides. Each slide is the HTML + CSS inside one 1280×720 box (no scripts, no forms); the deck's theme_css (CSS variables, shared classes) sits above every slide and fonts are Google Fonts with their weights. Pictures and videos must be files of this space's Assets, bound by id: <img data-wakato-asset="<asset id>" src="<url>">. Read get_deck_guide first, and look at the result with preview_deck before you say it is ready.
| Parameter | Type | Required | Description |
|---|---|---|---|
title | string | yes | |
description | string | What the deck is for, in a sentence. | |
theme_css | string | CSS above every slide, e.g. :host{--ink:#17153a;--accent:#5b4cdb} .wk-slide{background:#fff} .title{font:800 72px 'Bricolage Grotesque'} | |
fonts | string[] | Google Fonts families with weights, e.g. ["Bricolage Grotesque:wght@500;700;800", "Inter:wght@400;600"]. At most three. | |
transition | none | fade | slide | ||
slides | object[] | yes |
delete_deck
Scope: decks:write
Delete a deck: it leaves the space and its links stop working. Send confirm_title with its exact title.
| Parameter | Type | Required | Description |
|---|---|---|---|
deck_id | string | yes | |
confirm_title | string | yes |
edit_deck_slide_html
Scope: decks:write
Change one piece of a slide's html: find (exact text as it is now) → replace. The rest of the slide stays as it is. all: true changes every place it appears.
| Parameter | Type | Required | Description |
|---|---|---|---|
slide_id | string | yes | |
find | string | yes | |
replace | string | yes | |
all | boolean |
get_deck
Scope: decks:read
Read one deck as it is NOW: its look (theme_css, fonts, transition) and every slide with its slide_id, html, speaker notes and builds. Read it before changing anything: the person may have replaced pictures or changed words in the editor.
| Parameter | Type | Required | Description |
|---|---|---|---|
deck_id | string | yes |
get_deck_guide
Scope: decks:read
How to make a presentation deck people want to show: who decides the look, how to work with the person, the 1280×720 frame, pictures and video from Assets, type sizes that read on a phone, builds and speaker notes. Read it before create_deck. Pass kind for one kind's playbook: pitch (Pitch to investors), proposal (Sales proposal), report (Report or update), workshop (Course, class or workshop).
| Parameter | Type | Required | Description |
|---|---|---|---|
kind | pitch | proposal | report | workshop |
get_deck_views
Scope: decks:read
Who watched a deck: every person (by their own link, the email they gave, or the city of a public-link visitor), each visit with when it started, phone or computer, the slides in the order they went through with seconds on each, the video, where they stopped, whether they got to the end or downloaded the PDF, and who is watching right now.
| Parameter | Type | Required | Description |
|---|---|---|---|
deck_id | string | yes | |
viewer_id | string |
list_decks
Scope: decks:read
List the space's presentation decks: title, how many slides, who made it, when it was changed, how it is shared, and its link in the editor.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Words in the title. | |
limit | integer |
move_deck_slide
Scope: decks:write
Move one slide to a new place in its deck (to: 1 = first).
| Parameter | Type | Required | Description |
|---|---|---|---|
slide_id | string | yes | |
to | integer | yes |
preview_deck
Scope: decks:write
Look at a deck: one picture of every slide, numbered (or one slide at full size with slide_id), and for each slide whether its words run out of the 1280×720 frame or are too small to read on a phone. Fix what it finds and look again before you say a deck is ready.
| Parameter | Type | Required | Description |
|---|---|---|---|
deck_id | string | yes | |
slide_id | string |
remove_deck_slide
Scope: decks:write
Take one slide out of a deck. It stays in the deck's history and can be put back from there.
| Parameter | Type | Required | Description |
|---|---|---|---|
slide_id | string | yes |
share_deck
Scope: decks:run
Share a deck outside the space. people: [{name, email} or {contact_id}] each get a link of their own, so the person you work for sees who opened it, when and how far they got (get_deck_views). public_link: true turns on one link for anyone; ask_email makes it ask for an email first, check_email sends a code to that email. pdf lets them download it. Nothing is sent: write the email or message yourself. remove_people takes person_link_ids away.
| Parameter | Type | Required | Description |
|---|---|---|---|
deck_id | string | yes | |
people | object[] | ||
remove_people | string[] | ||
public_link | boolean | ||
ask_email | boolean | ||
check_email | boolean | ||
pdf | boolean |
swap_deck_media
Scope: decks:write
Replace one Assets file with another wherever a deck uses it (or on one slide with slide_id): a picture for a picture, a video for a video. to_asset_id must be a file of this space's Assets.
| Parameter | Type | Required | Description |
|---|---|---|---|
deck_id | string | yes | |
from_asset_id | string | yes | |
to_asset_id | string | yes | |
slide_id | string |
update_deck
Scope: decks:write
Change a deck's title, description or look (theme_css, fonts, transition). To change one slide use update_deck_slide or edit_deck_slide_html.
| Parameter | Type | Required | Description |
|---|---|---|---|
deck_id | string | yes | |
title | string | ||
description | string | ||
theme_css | string | ||
fonts | string[] | ||
transition | none | fade | slide |
update_deck_slide
Scope: decks:write
Write one slide's html and/or its speaker notes again. Start from the html get_deck gave you now, never from memory: the person may have changed it.
| Parameter | Type | Required | Description |
|---|---|---|---|
slide_id | string | yes | |
html | string | ||
notes | string |