Skip to main content
Glama

Sparka

Save a presentation

sparka_presentation_save
Destructive

Creates or fully replaces a presentation's interactive questions in one call. Each call carries the COMPLETE presentation: title, optional settings, and the ordered list of all questions including correct answers for scored types (valid types and fields: sparka_question_types_list). Without presentation_id it creates a new presentation; with it, it replaces that presentation entirely — the ID stays the same, so a deck already using it keeps working, and unchanged question IDs keep matching the deck's slides. The questions without answers are readable by anyone who has the presentation_id; that is how decks and participants' phones load them. Returns presentation_id, the stored questions WITHOUT answers, and embed_block: a ready-to-paste <script type="application/json" id="sparka-questions"> element for the deck. A working deck contains embed_block exactly once with no answers added, and never the user's Sparka secret key (spk_live_…) — the presentation_id is all a deck needs. The deck's JavaScript pattern is in sparka_deck_guide. After the questions change, a deck needs the new embed_block; an outdated one shows a mismatch banner. Validation problems come back as an error with JSON paths.

Input Schema

NameRequiredDescriptionDefault
titleYes
settingsNo
questionsYesAll questions, in slide order.
presentation_idNoOmit to create. Pass to replace that presentation entirely.

Output Schema

NameRequiredDescriptionDefault
titleYes
createdYestrue if new, false if replaced.
settingsYes
warningsYes
next_stepYes
questionsYesPublic copy (no answers) — exactly what GET /v1/presentations/{id} returns.
embed_blockYes
live_sessionYes
presentation_idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true, but the description goes well beyond them: it explains that replacement preserves the presentation ID, that unchanged question IDs keep matching slides, that answers are stripped from what the deck exposes, that questions are publicly readable by anyone holding the presentation_id, and that the secret key must never be embedded. It also discloses return contents and that validation failures return JSON paths.

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 create/replace contract, then return values, then deck-integration warnings. Every sentence carries operational information, though the embed_block/secret-key passage drifts toward deck-authoring guidance that sparka_deck_guide arguably owns.

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 destructive full-replace tool with nested question types and an output schema, the description covers the mutation semantics, ID stability, answer-stripping, return shape, and the failure mode. An agent has everything needed to call it correctly without trial and error.

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 only 50%, but the description compensates for the key top-level params: it defines presentation_id as omit-to-create/pass-to-replace, and states that questions must be the COMPLETE ordered list carrying correct answers for scored types. The title and settings params are left wholly to the schema, so it is not quite full coverage.

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?

Opens with a specific verb+resource pair ('Creates or fully replaces a presentation's interactive questions') and immediately clarifies the create-vs-replace split on presentation_id, which cleanly separates it from sparka_presentation_get/list/delete siblings.

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 both modes and when each applies ('Without presentation_id it creates a new presentation; with it, it replaces that presentation entirely'), and routes the agent to siblings for adjacent needs: sparka_question_types_list for valid types/fields and sparka_deck_guide for the deck JS pattern.

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