KitchenSink4PPT
KitchenSink4PPT is an MCP server that lets AI assistants create, inspect, edit, and export PowerPoint decks locally, with editable native shapes, diagrams, tables/charts, themes, and safety backups.
Read and inspect decks: presentation view, slide info, text extraction, find text, hyperlink listing, element enumeration, diagnostics, and workflow recipes.
Edit content atomically: batch edits via apply_edits, search-and-replace, placeholder text, fit text, and set/remove hyperlinks.
Manage slides: insert, delete, duplicate, and reorder slides with durable IDs, plus backups and snapshots.
Build graphics: native shapes, connectors, groups, alignment, SVG-to-shapes compilation, diagram generators, images/video/audio, text boxes, run formatting, bullets, format painter, and LaTeX equations.
Create and edit tables/charts: table creation, bulk cell edits, merge/unmerge, row/column surgery, borders/styles, CSV/JSON import/export, and bar/line/pie/scatter/combo charts with editable data workbooks.
Design decks: create from templates, apply layouts, read/write themes, brand extract/apply, slide size, backgrounds, master/layout editing, and accessibility audit/repair.
Assembly and export: speaker notes, sections, footers, PDF/PNG/handout export, validations, deck merge/split, cross-deck copies, agenda slides, properties, anonymization, custom shows, transitions, and animations.
Review and sweeps: threaded comments, deck comparison, font/color/language/logo replacements, and compress/purge.
Live PowerPoint editing on Windows: edit decks already open in PowerPoint, save explicitly, scroll to slides, and check PowerPoint status.
Adjust the tool surface mid-session: enable/disable optional packs (graphics, tables-charts, design, assembly-export, review-sweeps, com) while the lite core stays on.
Safety: atomic validated saves, two-slot backups, snapshots, optional path sandboxing, file locks, and structured refusals.
Uses a supported LibreOffice installation as a rendering engine to export PowerPoint presentations to PDF or PNG images when PowerPoint is not available.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@KitchenSink4PPTTurn this org chart SVG into editable PowerPoint shapes with glued connectors."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🖌️ KitchenSink4PPT Community Edition
Landing page · llms.txt (machine-readable capability manifest for agents and LLM crawlers)
Build and revise PowerPoint decks with your AI assistant, with diagrams made of shapes you can still edit.
Create and revise real PowerPoint presentations from Claude Code, Codex CLI, Copilot CLI or any other MCP client that runs local tools. KitchenSink4PPT connects your assistant to .pptx files, and its diagrams are built from native shapes and connectors, so the slide is still yours to change after the AI is done. Files are processed on your computer; the only thing that leaves it is what your AI app sends to its own provider. The Community edition is free under the AGPL. The Business edition adds a Windows installer, a signed update channel, a license your company can approve and support.
Works on: Windows, macOS and Linux for the file tools. Live PowerPoint features need Windows with PowerPoint. PDF and image export need PowerPoint on Windows or a supported LibreOffice.
Install
Pick the route for your AI app. The commands go in PowerShell on Windows or a terminal on macOS and Linux, not into an AI chat. The package routes need Python 3.12 or newer.
Claude Desktop
Install uv, then quit and reopen Claude Desktop. Download the .mcpb file from KitchenSink4PPT releases. In Claude Desktop open Settings, then Extensions, then Advanced settings, then Install extension, and choose the file. The bundle fetches the Python package the first time it starts, so the first launch needs a network connection. Restart your session and check that the tools show as connected.
Claude Code or Codex CLI
Install uv, then run the line for your app and restart your session:
claude mcp add ppt -s user -- uvx kitchensink4pptcodex mcp add ppt -- uvx kitchensink4pptAny other local MCP client
Use uvx as the command and kitchensink4ppt as its argument, or install the package and use kitchensink4ppt as the server command:
pip install kitchensink4pptThen follow your client's guide for adding a local MCP server. Installing the package on its own does not connect it to an AI app.
Business edition
Compare the editions on the pricing page. Already purchased? Your Windows installer and download link are in your license portal.
Related MCP server: PowerPoint Editor MCP Server
What it can do
142 tools with every pack enabled; 25 in the lite surface.
Build a deck from a template and revise its text and speaker notes.
Draw diagrams from editable shapes and connectors.
Turn supported SVG graphics into native PowerPoint shapes.
Align objects and apply consistent fonts, colors and layouts.
Build tables and charts that colleagues can keep editing.
Merge, split or compare decks and review comments.
Check slides for accessibility issues and apply the supported repairs.
Export PDF or slide images when a rendering application is installed.
What is available depends on the packs you enable and the applications installed. The full tool reference is below.
Business edition
Need a license your company can approve and a setup someone supports? The Business edition pairs these tools with a Windows installer, a signed update channel and support under the Business terms. Update checks tell you when a covered release is available; nothing installs on its own. Compare the options on the pricing page. The Community edition stays free under the AGPL, including business use that meets its terms.
Privacy Policy
The tools run on your computer, and KitchenSink4AI receives no documents and no usage data from them. Your AI app may send prompts, file contents and tool results to its own provider under that app's settings and terms. Installing downloads packages, and the Community version check contacts PyPI unless you disable it; those requests carry connection details such as your network address and never your documents. Cloud folders and backups follow their own settings. The Privacy Policy covers the product, purchases and support records.
Not affiliated with, endorsed by, or sponsored by Microsoft Corporation. Microsoft and PowerPoint are trademarks of the Microsoft group of companies. Dual-licensed: AGPL-3.0, or a commercial license for organizations that need to ship it in closed products (details).
The headline: real graphics, not pictures of graphics
Feed svg_to_shapes any SVG and it compiles into a grouped tree of NATIVE
PowerPoint shapes: custom geometry, gradients, strokes, text, nested groups.
No rasterizing, no external APIs, no PowerPoint install needed to build.
Every shape keeps its own id, so afterward you edit the diagram
semantically: recolor node 7, resize the box, rewrite its label.
Connectors are GLUED. Move the node and the arrows follow, exactly as if a person had drawn the diagram by hand in PowerPoint. The human you hand the deck to can nudge any piece in seconds, with no regeneration round trip.
insert_shape (presets and freeform geometry), insert_connector
(straight, elbow, curved, arrowheads), group_shapes, align_shapes,
distribute_shapes, and set_z_order cover from-scratch diagram building;
export_slide_image renders a PNG so the agent can look at what it made and
fix it.
Pack inventory (142 tools total)
Pack | Tools | ~Tokens | What is in it |
lite core (always on) | 25 | 7.1k | anchored deck view, atomic batch edits, get/find/replace text (live-aware, SmartArt text included), slide insert/delete/duplicate/reorder, placeholder text, hyperlinks (set/remove/list with broken-link detection), info and enumeration, copy, snapshots, backups, diagnose, workflows, enable/disable_tools |
graphics | 27 | 8.8k | shapes, glued connectors, SVG compiler, one-call diagram generators (timeline, org chart, matrix, cycle, comparison), images, video/audio embed, groups, align/distribute, z-order, text boxes, run formatting, bullets, format painter (copy_format/copy_position), native LaTeX equations |
tables-charts | 19 | 5.3k | create table, bulk cells, merge/unmerge, row and column insert/delete, borders and fills, widths/heights, 74 built-in styles, CSV/JSON export/import, bar/line/pie/scatter/combo charts with editable data workbooks, chart formatting and data readback |
design | 25 | 6.8k | create presentation FROM template, apply layouts, theme read AND write (colors, fonts), brand extract/apply, layout guardrail checks, slide size, hide/move slide, autofit report, slide and master/layout backgrounds, full master and layout editing (placeholders, decoration shapes, create_layout), accessibility audit and repair |
assembly-export | 28 | 7.2k | speaker notes, sections, footers and slide numbers, PDF/PNG/handout export, engine detection, opens-clean validation, text extraction, cross-deck slide copy, deck merge and split, agenda slides, deck statistics, document properties, anonymize, slide-show setup and custom shows, slide transitions (fade/push/wipe/split/cut/random, millisecond durations, auto-advance) and bounded entrance animations (appear/fade/wipe, click builds, by-paragraph) |
review-sweeps | 13 | 3.3k | modern threaded comments (add, replies, resolve, cascade delete, dual-system listing), whole-deck review report, structural deck-to-deck diff (compare_decks), and the deck-wide sweeps: font inventory/replace (incl. charts and phantom declarations), color remap and literal-to-theme unification, proofing language, whole-deck logo replace, compress/purge |
com (Windows only) | 5 | 0.9k | PowerPoint status and zombie process check, plus editing the deck while it is OPEN in the user's PowerPoint: explicit save, scroll-to-slide, session status; eleven file tools route here automatically via |
Full surface: about 39.4k tokens if you pin KS4P_MODE=full (numbers from
scripts/measure_surface.py, not hand-math).
v1.1 consolidated nine packs into six. The v1.0 names
transitions-animations, review, sweeps, and com-live still resolve
to their new homes in enable_tools, disable_tools, and KS4P_MODE, so
nothing that worked before stops working.
Structural table operations on the file itself (merging, inserting and deleting rows AND columns, per-edge borders) exist in no other PowerPoint MCP server; they were previously COM-or-nothing.
Tiered loading: start light, grow mid-session
The server starts in lite mode: 25 tools, roughly 7.1k tokens of tool context, covering reading, slide CRUD, text, hyperlinks, batch editing, backups, and diagnostics. The other 117 tools are registered but disabled until asked for:
enable_tools(packs=["graphics"])The tool list grows in place (the server emits tools/list_changed and the
client re-fetches), and the result reports the approximate token cost added
so the tradeoff is visible. disable_tools shrinks the surface again, and
get_workflows ships recipes that name the right pack for each job.
Environment pins for hosts and power users:
Variable | Effect |
| startup surface: |
|
|
|
|
|
|
| opt-in path sandbox; tools refuse to touch files outside these roots |
|
|
Update check. The server looks for a newer release on PyPI only when you
call diagnose, never at startup and never on a timer, at most one request
every seven days, capped at two seconds. The check is a single plain HTTPS
GET to pypi.org that sends nothing but the request itself. A failed check is
reported with its reason rather than hidden. Set KS4P_UPDATE_CHECK=off to turn it off
completely (the older KS4P_NO_UPDATE_CHECK=1 still works). The server never
downloads or installs anything.
The last two are the checkboxes the .mcpb bundle shows in Claude Desktop:
"Load every tool at startup" and "Lock the tool set at startup". Both take
true or false, treat an empty value as off, and refuse to start on
anything else rather than guessing. The server writes one line to stderr at
startup naming what decided the surface.
Tip: in Claude Desktop's Tool permissions, set the Read-only tools group to Always Allow: those tools cannot change anything, and it stops most permission prompts.
Safety story
The same discipline as KitchenSink4Word, applied from day one:
Atomic validated saves. Every mutation rebuilds the package in memory, validates the payload, then atomically replaces the file. A failed operation leaves the original byte-identical; the file is never absent from its own path, even for an instant.
Two-slot backups. Before each mutation the current content rotates into
prev.pptxandanchor.pptxunder a hidden.ks4p-backups/folder.manage_backupslists, restores (undoably), and purges;create_snapshotmakes DTG-stamped permanent keepers.Byte-identical passthrough. Parts the tool did not touch are written back byte-for-byte, so themes, media, and animations survive edits to other slides untouched.
Conservative refusals. Ambiguous targets refuse with a candidate list (no first-match guessing), merged-cell surgery that would split a span refuses, stale batch anchors refuse the whole batch before anything mutates. Refusals are structured (
{ok: false, error: {code, message, hint}}) and tell you the exact next call to make.Sandboxing, opt-in. Set
KS4P_ALLOWED_ROOTSand every path in and out is checked.Locks. Mutations of one file are serialized in-process and across processes; files open in PowerPoint are refused rather than corrupted.
Maturity
Beta. The file layer (packages, slides, text, graphics, tables, charts,
comments, animations, themes, links, media, notes, masters, equations,
accessibility, deck assembly, sweeps, export) is covered by a 1,251-test
suite, including validation that generated decks open clean in real
PowerPoint, and the server passes a raw stdio protocol round-trip suite.
Live editing of decks open in PowerPoint runs every call through one
process-wide lock with dialog detection at the window layer and bounded
timeouts, and ships with its own COM gate scripts (tests/com_gates/).
It has not yet had a long field life; treat important decks with the
respect the backup tools make easy, and expect fast point releases.
Before filing:
ask your AI to run diagnose and paste the output here; it is designed
to be safe to share.
License
KitchenSink4PPT is dual-licensed:
AGPL-3.0 (open source). Free for anyone (individuals, academics, and businesses) for any use that complies with the AGPL's terms. Those terms include sharing source, including your modifications, when you distribute the software or make it available over a network.
Commercial license. For organizations that want to build KitchenSink4PPT into their own products or services without the AGPL's source-sharing obligations. Contact licensing@kitchensink4.ai.
Copyright (c) 2026 Alvut Consulting, LLC. KitchenSink4AI is a product line of Alvut Consulting, LLC.
Not affiliated with, endorsed by, or sponsored by Microsoft Corporation. Microsoft and PowerPoint are trademarks of the Microsoft group of companies.
Family
Sibling of KitchenSink4Word (the same engineering for .docx; site).
Available Tools
25 toolsapply_editsApply EditsADestructive
Batch editor: many edits, one lock, one backup, one atomic save. Each edit is {"op": name, ...params} addressed by a view "anchor" (from get_presentation_view) or explicit {"slide", "shape"/"table"} keys. Ops: set_text, set_shape (graphics pack), set_table_cells (tables-charts pack), search_and_replace, set_placeholder_text, format_text (graphics pack), delete_shape (graphics pack). Every location is resolved BEFORE anything mutates; any stale anchor refuses the whole batch listing every failed index, and result.changed maps op index to outcome. These ops EDIT existing content; nothing here inserts shapes, tables, or slides. Creation tools live in the packs (enable_tools). atomic must stay True: v1 has no partial-apply mode. Saves atomically with two-slot backup; backup=False skips rotation. Use this when a change needs two or more edits; for a single edit use the standalone tool (set_shape, format_text, set_table_cells, set_placeholder_text, search_and_replace, delete_shape).
| Name | Required | Description | Default |
|---|---|---|---|
| edits | Yes | ||
| atomic | No | ||
| backup | No | ||
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true, and the description substantially extends this with specifics: one lock, one backup, all locations resolved before mutation, stale anchors rejecting the whole batch, atomic-only behavior, and backup rotation semantics. It also clarifies that these ops edit existing content and do not insert new objects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded with the core concept, and every sentence adds operational value: behavior, failure handling, constraints, and usage routing. There is minimal filler and no tautology.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex mutation tool with an output schema, the description fully covers what an agent needs: how to address edits, which ops are available, failure behavior, atomic and backup constraints, and when to choose standalone tools. Nothing critical is omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate, and it does for the key parameters: edits format, anchor addressing, supported ops, atomic semantics, and backup behavior. It does not explicitly describe file_path or formally enumerate all allowed op values beyond the list, so it is strong but not exhaustive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: a batch editor for applying multiple edits to existing presentation content with one atomic save. It distinguishes itself from sibling standalone tools and creation tools, and lists the exact operations it supports. The agent can tell what this tool does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use this tool: when a change needs two or more edits. It also names the standalone alternatives for single edits and notes that creation tools live in the packs. This gives clear guidance and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
copy_presentationCopy PresentationA
Copy a deck byte-for-byte, e.g. to a working copy before heavy edits (create_snapshot names a DTG-stamped copy for you; this tool takes an explicit dest_path). Refuses an existing dest_path unless overwrite=True; an overwritten destination's previous content rotates into its .ks4p-backups prev slot first, so the overwrite is undoable via manage_backups restore. The source file is never modified.
| Name | Required | Description | Default |
|---|---|---|---|
| dest_path | Yes | ||
| file_path | Yes | ||
| overwrite | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations indicate readOnlyHint=false (write operation) and destructiveHint=false (not destructive), the description goes far beyond these by detailing the overwrite refusal without overwrite=True, the backup rotation into .ks4p-backups, the undoability via manage_backups restore, and the explicit guarantee that the source file is never modified. These are valuable behavioral traits not captured in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no wasted words. It front-loads the core purpose, then provides key behavioral caveats and cross-references. Every sentence adds value, and the structure is logical: purpose → usage context → behavioral details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a copy tool with an output schema (not shown but present), the description covers all critical operational aspects: overwrite semantics, backup behavior, undo path, and source safety. It also cross-references manage_backups, which aids an agent in chaining tools. There is no missing information an agent would need to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no descriptions (0% coverage), so the description must carry the burden. It explicitly explains dest_path ('explicit dest_path') and overwrite ('Refuses an existing dest_path unless overwrite=True'), and implicitly refers to file_path as 'source file'. While file_path is not directly named, the meaning is inferable from the context. The description adds significant meaning for two of the three parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Copy a deck byte-for-byte'. It names the specific verb (copy) and resource (deck), and immediately differentiates from the sibling tool create_snapshot by explaining that this tool takes an explicit dest_path while create_snapshot names a DTG-stamped copy. This makes the tool's role unambiguous and distinguishes it from its closest alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool ('e.g. to a working copy before heavy edits') and explicitly contrasts it with the alternative create_snapshot ('create_snapshot names a DTG-stamped copy for you; this tool takes an explicit dest_path'). It also explains the overwrite behavior and backup mechanism, giving the agent clear conditions for invocation and fallback options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_snapshotCreate SnapshotA
Save a DTG-stamped permanent copy: YYYYMMDD_HHMM_.pptx (an existing leading DTG in the name is replaced, not stacked), plus an optional short label. Snapshots are the PERMANENT keepers alongside the automatic prev/anchor slots: slots rotate on every mutation, snapshots are never auto-pruned and manage_backups never touches them. Never overwrites (collisions get a numeric suffix). The source file is not modified. Take one before any large or risky editing pass.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| dest_dir | No | ||
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint=false and destructiveHint=false; the description adds substantial behavior: leading-DTG replacement, collision handling via numeric suffix, no source modification, and no auto-pruning. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence carries a distinct piece of information: naming, permanence, prune behavior, collision behavior, non-modification, and usage timing. The most important format detail is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers naming, collision, retention, source safety, and a concrete usage trigger; an output schema exists so return values need no explanation. The only material omission is the meaning and effect of 'dest_dir', which prevents a perfect completeness score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds useful meaning for 'label' (optional short label) and file_path (the unmodified source), plus the naming convention. However, 'dest_dir' is never explained, leaving one of three parameters under-specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Save') and resource (a DTG-stamped permanent copy with a precise naming format), and clearly distinguishes snapshots from automatic prev/anchor slots and manage_backups. This is far more informative than the title alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to take a snapshot before any large or risky editing pass and explains that snapshots are permanent keepers whereas automatic slots rotate. It mentions manage_backups does not touch snapshots, but does not fully spell out when to choose snapshots over that sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_slideDelete SlideADestructive
Delete a slide and garbage-collect everything only it used: notes, charts, embeddings, comments, custom-show references, section membership; jump links to it are neutered. slide: 0-based index or {"slide_id": N}. Prefer set_slide_hidden (design pack) when it might come back. Saves atomically with two-slot backup; backup=False skips rotation. live='auto' edits the open PowerPoint copy when the file is locked by it (UNSAVED until live_save, com pack); 'force' targets the open session; 'off' refuses locked files.
| Name | Required | Description | Default |
|---|---|---|---|
| live | No | auto | |
| slide | Yes | ||
| backup | No | ||
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state destructiveHint=true, but the description goes beyond that by detailing the exact side effects: garbage collection of notes, charts, embeddings, comments, custom-show references, section membership, and neutering jump links. It also explains atomic saves with two-slot backup and the behavior of backup=False and live modes. This adds substantial context not present in annotations, especially for a destructive tool where such transparency is critical. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise but packed with essential information. It front-loads the primary action and side effects, then covers parameter specifics. Each sentence has purpose: the first covers delete semantics, the second covers the slide parameter, the third gives usage guidance, and the fourth covers backup and live behavior. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (destructive, with side effects, multiple modes, output schema exists), the description is remarkably complete. It covers what is deleted, how to specify the target, backup behavior, live editing modes, and when to use an alternative. The output schema exists, so return values need no explanation. Nothing critical is missing for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries full responsibility for explaining parameters. It explains 'slide' format (0-based index or object with slide_id), 'backup' effect (skips rotation when False), and 'live' values and meanings. It does not explicitly explain 'file_path', but that is a common parameter and likely self-explanatory given the tool name. Thus, it compensates well for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete a slide' with garbage collection) and specifies the target via 'slide' parameter. It mentions the scope of cleanup (notes, charts, embeddings, etc.) which distinguishes it from simpler delete operations. The verb 'delete' plus the resource 'slide' is specific, and the mention of garbage collection sets it apart from potential sibling tools like 'duplicate_slide' or 'reorder_slides'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Prefer set_slide_hidden (design pack) when it might come back', providing a clear alternative and the condition for using it. It also explains the 'live' parameter values ('auto', 'force', 'off') and their implications, giving the agent concrete guidance on when to use each. This is exemplary usage guidance for a destructive tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnoseDiagnose PresentationARead-only
Self-check for this environment and, optionally, one file. Reports export engine availability (PowerPoint COM vs LibreOffice), sandbox state, KS4P mode/policy env, and the current pack surface with token costs. With file_path: existence, size, PowerPoint lock state, whether the package opens, and slide count, WITHOUT mutating anything. Output is PASTE-SAFE by default: no absolute paths, so it can go straight into a bug report; verbose=True adds the sandbox roots, engine locations, and full file path for local troubleshooting. Run it first when any tool refuses unexpectedly or an export engine seems missing. Reports the update-check state; the only place the check runs. The validate tool (assembly-export pack) does the real opens-clean check in PowerPoint.
| Name | Required | Description | Default |
|---|---|---|---|
| verbose | No | ||
| file_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description adds substantial behavioral detail: 'WITHOUT mutating anything' assures non-destructiveness; 'Output is PASTE-SAFE by default: no absolute paths...' explains a key default and its security benefit; 'verbose=True adds the sandbox roots, engine locations, and full file path' describes what changes with verbose; and 'Reports the update-check state; the only place the check runs' reveals a unique side effect. All of this materially enriches the annotation-only signal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place. It front-loads the core function, then successively adds parameter details, safety properties, usage guidance, and a clear sibling contrast. No filler or repetition; the structure with 'With file_path:' and 'verbose=True' cleanly maps to the two parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (so return structure need not be described) and annotations cover read-only behavior, the description completes the picture: it covers purpose, both parameters, non-mutation, paste-safety, verbose effects, and the update-check side effect. It even tells the agent the one scenario where this tool is the designated first step and where a different tool is needed. There is no obvious missing information an agent would need to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must carry full parameter meaning, and it does. For file_path it specifies the exact checks performed: 'existence, size, PowerPoint lock state, whether the package opens, and slide count.' For verbose it explains the added output ('sandbox roots, engine locations, and full file path'). This goes far beyond the bare schema names and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb and resource: 'Self-check for this environment and, optionally, one file.' It enumerates concrete diagnostic outputs (engine availability, sandbox state, KS4P mode/policy, pack surface with token costs) and explicitly contrasts itself with the validate tool, which performs the real opens-clean check in PowerPoint. This clearly distinguishes it from sibling tools like get_presentation_info and get_presentation_view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use instruction: 'Run it first when any tool refuses unexpectedly or an export engine seems missing.' It also names the alternative and its limitation: 'The validate tool (assembly-export pack) does the real opens-clean check in PowerPoint,' telling the agent when not to rely on this tool for that purpose. This is exactly the kind of routing guidance agents need.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disable_toolsDisable ToolsAIdempotent
Switch pack tools back off to shrink the tool surface (the lite core always stays on). Takes the same pack names as enable_tools, or 'everything'. Idempotent: already-disabled packs are reported, not errors. Nothing about the presentation files changes; this only trims what this session's client has to carry. Reports the approx token cost removed and the remaining active surface.
| Name | Required | Description | Default |
|---|---|---|---|
| packs | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the idempotentHint annotation, the description explicitly states that already-disabled packs are reported rather than erroring. It also explains that presentation files are untouched and that the tool reports approximate token cost removed and remaining active surface, adding meaningful behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: purpose, accepted inputs, idempotence, side-effect scope, and output are each covered in separate efficient sentences with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with only one required argument, the description combines with the annotations and output schema to cover everything needed: what the tool does, what values the parameter accepts, non-destructive behavior, idempotence, and what it reports.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides only a generic array of strings, but the description compensates by defining valid values: pack names from enable_tools or the special value 'everything.' It does not list example pack names, but enough meaning is added for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb and resource: 'Switch pack tools back off to shrink the tool surface.' It clearly positions this as the inverse of enable_tools, and adds that the lite core always stays on, distinguishing it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description names enable_tools as the counterpart and clarifies that it accepts the same pack names or 'everything.' It implies use for shrinking the tool surface, though it does not explicitly state when not to use it or name alternative tools beyond enable_tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicate_slideDuplicate SlideA
Deep-copy a slide: notes, charts with their embedded workbooks, and embeddings are cloned and retargeted; layout and media stay shared by design; creation GUIDs are regenerated (duplicates corrupt). slide: 0-based index or {"slide_id": N}. position: 0-based final index for the copy, default right after the original. The design pack adds move and hide: enable_tools(packs=['design']). Saves atomically with two-slot backup; backup=False skips rotation.
| Name | Required | Description | Default |
|---|---|---|---|
| slide | Yes | ||
| backup | No | ||
| position | No | ||
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the sparse annotations, the description discloses deep-copy semantics, GUID regeneration with a corruption warning, layout/media sharing, atomic save, and two-slot backup rotation. These are exactly the behavioral traits an agent needs to anticipate side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The paragraph is dense but efficient, front-loading the core action and parameter definitions. The enable_tools(packs=['design']) sentence is only loosely related to duplicating and adds slight noise, preventing a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers semantics, parameters, defaults, safety behavior, and backup handling; an output schema exists for return shape, and file_path is conventional. An agent has everything needed to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates for slide, position, and backup by defining formats and defaults. file_path is left unexplained, but it is a conventional self-evident parameter and the rest are well-specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the specific action 'Deep-copy a slide' and clarifies scope by enumerating what is cloned (notes, charts, embedded workbooks, embeddings) versus shared (layout/media), which clearly distinguishes it from sibling insert/reorder/delete operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives practical invocation context (slide index forms, position default, backup switch) that an agent can act on. It does not explicitly name sibling alternatives or state when not to use this tool, but the behavior described is unambiguous enough for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enable_toolsEnable ToolsAIdempotent
Switch on optional tool packs mid-session; the tool list grows and your client is notified to re-fetch it. Packs: 'graphics' (shapes, connectors, groups, align, z-order, SVG to native editable shapes, diagram generators, images, video/audio, text boxes, run formatting, bullets, format painter, LaTeX equations); 'tables-charts' (tables: create, bulk cells, merge, row/column surgery, borders, styles, CSV/JSON; bar/line/pie/scatter/combo charts, formatting, data readback); 'design' (create FROM template, apply layouts, theme colors/fonts read AND write, brand extract/apply, layout guardrails, slide size, hide/move, autofit report, slide/master backgrounds, master and layout editing, accessibility audit/repair); 'assembly-export' (notes, sections, footers, PDF/PNG/handout export, validation, text extraction, cross-deck copy, deck merge/split, agenda slides, statistics, document properties, anonymize, custom shows, slide transitions and entrance animations); 'review-sweeps' (threaded comments, compare_decks, deck-wide font/color/language/logo sweeps, compress); 'com' (PowerPoint status, zombie check, and editing the deck OPEN in PowerPoint); 'everything' (all). The v1.0 names transitions-animations, review, sweeps, and com-live still resolve to their new homes. Idempotent; reports approx token cost added and the active surface. disable_tools reverses.
| Name | Required | Description | Default |
|---|---|---|---|
| packs | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by disclosing that the client is notified to re-fetch the tool list, that the operation is idempotent, that it reports approximate token cost and active surface, and that disable_tools reverses it. This gives the agent a clear model of side effects and reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is front-loaded and clear, and the pack catalog is long but necessary because the schema provides no parameter descriptions or enums. The structure is organized by pack name and capabilities, and every sentence provides useful information, though the overall length is substantial.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter, the presence of an output schema, and annotations, the description is complete: it explains the side effect, pack vocabulary, aliases, idempotence, cost reporting, active surface reporting, and reversibility. No critical calling information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and packs has no enums, so the description carries the full burden. It compensates thoroughly by listing exact pack names ('graphics', 'tables-charts', 'design', etc.), their contents, and legacy alias resolution. An agent can correctly construct the packs argument from the description alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Switch on optional tool packs mid-session' and clearly states the observable effect that the tool list grows. It also distinguishes itself from the sibling disable_tools by explicitly saying disable_tools reverses this action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly frames when to use the tool: mid-session, to enable optional packs, and gives a comprehensive catalog of pack contents to guide selection. It names disable_tools as the reversing alternative, though it does not explicitly state when not to use it or compare against other enabling mechanisms.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_textFind TextARead-only
Search the deck's text. Returns every match with slide index, shape id, paragraph index, and character offsets, exactly the addresses format_text (graphics pack) and apply_edits consume. regex=True treats query as a regular expression (guarded against catastrophic backtracking). Matches text as displayed, not raw XML, so search for & rather than &. count is always the true total; a "page" block gives the omitted count and next offset when more matched than the budget fits. compact=True returns matches as a fields header plus one array each. Formatting-aware replacement lives in the graphics pack: enable_tools(packs=['graphics']). Use this to locate text; to read it in order, use get_text.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| regex | No | ||
| scope | No | ||
| offset | No | ||
| compact | No | ||
| file_path | Yes | ||
| include_notes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already present, the description adds substantial behavioral detail: regex is guarded against catastrophic backtracking, text matching is on displayed text rather than raw XML, count is always the true total, pagination includes a 'page' block with omitted count and next offset, and compact changes the output shape. No annotation contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence carries signal: output contract, regex safety, encoding nuance, pagination, compact mode, graphics-pack pointer, and sibling routing. It is front-loaded with the core purpose and return format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is unusually complete for a read-only search tool: output schema exists, annotations cover safety, and pagination/regex/display semantics are explained. The main residual gap is the undocumented scope and include_notes parameters, which prevents a perfect completeness score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does explain regex, compact, query escaping, and offset/pagination, but it leaves several parameters unexplained: scope, include_notes, limit, and file_path semantics. This is a meaningful gap for an 8-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Search the deck's text' and specifies exactly what is returned (slide index, shape id, paragraph index, character offsets). It also differentiates itself from get_text by stating 'Use this to locate text; to read it in order, use get_text' and explicitly links its output to format_text and apply_edits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit routing guidance: use this to locate text, use get_text to read text in order, and notes formatting-aware replacement lives in the graphics pack via enable_tools(packs=['graphics']). This is clear when-to-use and alternative selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fit_textFit TextADestructive
Shrink overflowing text to fit: estimates the largest uniform font scale (floor min_size pt) via an average-glyph-width heuristic, rewrites explicit run sizes (or writes a normAutofit fontScale when sizes are inherited), and enables normAutofit. shape=None fits every overflowing text shape on the slide; one that cannot fit at min_size reports still_overflowing. An ESTIMATE (no font metrics): verify with export_slide_images (assembly-export pack). Saves atomically with two-slot backup; backup=False skips rotation.
| Name | Required | Description | Default |
|---|---|---|---|
| shape | No | ||
| slide | Yes | ||
| backup | No | ||
| min_size | No | ||
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description richly discloses behavior beyond the annotations: it rewrites run sizes, writes normAutofit fontScale, enables normAutofit, reports still_overflowing for shapes that cannot fit, and explains atomic save/backup behavior. It also honestly warns that the heuristic is an ESTIMATE without font metrics. This goes well beyond the destructiveHint flag.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense, purposeful sentences deliver the core action, scope, failure mode, estimation caveat, verification path, and backup behavior. Nothing is wasted, and the most important behavior appears first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating text-fitting tool with five parameters and an output schema, the description covers the algorithm, scope, minimum-size floor, failure reporting, precision caveat, verification path, and save behavior. The presence of an output schema makes the lack of a return-value explanation acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden, and it does compensate for several key parameters: shape=None semantics, min_size as a floor in pt, and backup=False skipping rotation. file_path and slide are not explicitly described, but their roles are inferable from context and their parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Shrink overflowing text to fit,' and then details the mechanism, scope, and edge-case behavior. It is clearly differentiated from text-reading and editing siblings like get_text, find_text, and set_placeholder_text, so an agent can infer when this tool is the relevant one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use case is implied by 'overflowing text' and the explicit shape=None behavior, but there is no direct statement of when to choose fit_text over alternatives such as set_placeholder_text or search_and_replace. It does offer a verification suggestion with export_slide_images, which is useful, but it does not explain when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_presentation_infoGet Presentation InfoARead-only
Deck-level facts in one call: slide count and size, slide order with durable ids and titles, masters and layouts, section list, and notes presence. The cheap first look before get_presentation_view. To enumerate one kind of element, use list_elements. Rendering, validation, and PDF export live in the assembly-export pack: enable_tools(packs=['assembly-export']).
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description only needs to add scope. It does so by describing the tool as cheap, deck-level, and explicitly noting what it is not: element enumeration, rendering, validation, or PDF export. The presence of an output schema covers the need to describe return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences carry a dense, useful payload with no filler. The fact inventory is front-loaded, and the routing guidance for alternatives and the assembly-export pack is compressed into clear, actionable clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the readOnly annotations, output schema, and one obvious required parameter, the description fully covers what the tool returns, when to use it, when not to use it, and where to go for related functionality. Nothing an agent needs for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single required file_path parameter is self-evident from its name, but schema description coverage is 0% and the description never explains path format, file type expectations, or how to reference the presentation. The parameter's meaning is adequately implied by the tool's purpose, though the description could have been more explicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Deck-level facts in one call' and enumerates concrete contents: slide count and size, slide order with durable ids and titles, masters and layouts, sections, and notes presence. This clearly names the resource and distinguishes it from sibling tools like get_presentation_view and list_elements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says this is 'the cheap first look before get_presentation_view' and instructs to 'use list_elements' when enumerating one kind of element. It also redirects rendering, validation, and PDF export to the assembly-export pack, leaving no ambiguity about when this tool should be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_presentation_viewGet Presentation ViewARead-only
The anchored markdown projection of a deck, THE cheap way to read it: slide headers with durable [s:id] anchors, one block per shape with a stable [a:hex] anchor, tables as pipe tables with t:hex:rNcN cell addresses (1-based there; table tools take 0-based row/col), notes as quoted blocks. Feed the anchors to apply_edits. scope: None for all slides, an index, {"slide_id": N}, or a list. detail: "outline", "text" (default), or "full" (geometry too). Budgeted: a deck too large to render whole returns whole slides plus a "page" block giving the omitted count and the offset that continues; limit/offset page in slides. Shape and diagram editing: enable_tools(packs=['graphics']).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| scope | No | ||
| detail | No | text | |
| offset | No | ||
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the readOnlyHint annotation by disclosing stable [s:id] and [a:hex] anchors, 1-based vs 0-based coordinate conventions, notes rendered as quoted blocks, and the budgeted pagination behavior with omitted counts and continuing offsets. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded with the core purpose before diving into details. Every sentence adds useful information, though the density and parentheticals make it a little heavy; it is appropriately sized for the number of parameters and conventions it must explain.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the return format, anchor semantics, scope/detail options, pagination, coordinate system caveat, and how to use the result with apply_edits and enable_tools. With an output schema present and readOnlyHint true, nothing essential is missing for an agent to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden for parameters. It defines scope values (None, index, {'slide_id': N}, or list), detail values ('outline', 'text', 'full'), and explains limit/offset pagination in slides. This is substantial meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'the anchored markdown projection of a deck,' and explains exactly what the view contains (slide headers, shape blocks, tables, notes). This clearly distinguishes it from metadata-style siblings like get_presentation_info by emphasizing it is the cheap way to read a deck and feed anchors to apply_edits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states it is 'THE cheap way to read' a deck and that anchors should be fed to apply_edits, giving clear context for when to use it. It also explains scope, detail, and pagination options. It does not explicitly name alternatives such as get_text or get_presentation_info, but the usage intent is strongly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_server_infoGet Server InfoARead-only
Report the KitchenSink4PPT server build: product and PyPI package name, the version a client is connected to, the landing page, the sibling servers in the KitchenSink4AI suite, the registered and lite tool totals, the released test count, the active pack surface and its token bill, and the host platform and Python. A read-only orient call that needs no deck and touches no file, and the only tool that answers WHAT you are connected to. diagnose covers the environment.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the readOnlyHint annotation by explicitly stating the call is read-only, requires no deck, touches no file, and returns a specific set of server-related fields. This fully discloses the behavior and scope of the tool without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every clause earns its place: it front-loads the core purpose, then the detailed list of reported fields, then the usage distinction and the sibling pointer. No redundant or filler content is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the long list of reported fields, the description fully captures purpose, usage constraints, read-only behavior, scope, and the sibling relationship. With an output schema present, no return-value documentation is needed from the description, and nothing important is left out for an agent to call or interpret the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the default baseline is 4. The description correctly describes the fixed output scope, which is all an agent needs to know about this parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Report the KitchenSink4PPT server build' and then enumerates exactly what is covered. It also distinguishes itself from siblings by stating it is 'the only tool that answers WHAT you are connected to' and that diagnose covers the environment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: it 'needs no deck and touches no file,' making it appropriate for a direct server-info query. It also names the relevant alternative, diagnose, and assigns it a different responsibility, so the agent has clear routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_slide_infoGet Slide InfoARead-only
One slide in depth: durable slide_id, layout, hidden flag, notes presence, and every shape with id, name, kind, geometry in inches, placeholder type, and text preview. Shape ids here are the addresses every editing tool takes; edit what it lists via the graphics pack. slide: 0-based index or {"slide_id": N}. Budgeted: a crowded slide returns a "page" block with the omitted count and next offset. All slides: get_presentation_view. live='auto' edits the open PowerPoint copy when the file is locked by it (UNSAVED until live_save, com pack); 'force' targets the open session; 'off' refuses locked files.
| Name | Required | Description | Default |
|---|---|---|---|
| live | No | auto | |
| limit | No | ||
| slide | Yes | ||
| offset | No | ||
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, and the description adds value beyond that: it discloses pagination behavior ('page' block with omitted count and next offset), the durable shape-id convention, and the live-save caveat (UNSAVED until live_save). This is useful behavioral context not present in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core return semantics in the first sentence, then narrows to parameter nuance. The final live-mode sentence is dense and slightly run-on, but still conveys three distinct modes in a compact way; nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation is covered by the structured field. Given the tool's complexity (pagination, multi-mode live handling, shape-id addressing), the description is thorough enough for an agent to invoke it correctly; only minor polish around the live sentence would push it higher.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden and delivers: it explains the 'slide' parameter (0-based index or {"slide_id": N}), the limit/offset pagination semantics, and the live parameter's three modes in detail. Only file_path is left to self-evidence.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('get') + resource ('slide info') and enumerates exactly what is returned: durable slide_id, layout, hidden flag, notes presence, and every shape's id/name/kind/geometry/placeholder/text. Distinguishes from get_presentation_view, which is explicitly named as the all-slides counterpart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Routes the user to get_presentation_view for the all-slides use case and explains the live parameter's role when the file is locked by PowerPoint. Gives clear context for when to call this tool, though it does not state explicit exclusions for every sibling (e.g., apply_edits).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_textGet TextARead-only
Plain text of the deck in reading order: shapes in spTree order, table cells tab-joined, fields rendering their cached text. scope: None for all slides, a 0-based index, {"slide_id": N}, or a list; include_notes=True appends speaker notes. Budgeted, paging in whole slides: slide_count stays the deck's true total and a "page" block gives the omitted count and the next offset; limit/offset page explicitly. Rendered-appearance checks live in the assembly-export pack. live='auto' edits the open PowerPoint copy when the file is locked by it (UNSAVED until live_save, com pack); 'force' targets the open session; 'off' refuses locked files. For edit anchors, use get_presentation_view.
| Name | Required | Description | Default |
|---|---|---|---|
| live | No | auto | |
| limit | No | ||
| scope | No | ||
| offset | No | ||
| file_path | Yes | ||
| include_notes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states that live='auto' 'edits the open PowerPoint copy when the file is locked by it', which directly contradicts the readOnlyHint=true annotation. Even though scope/paging/live details add behavioral context, the rule requires score 1 when the description contradicts annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main purpose is front-loaded and the content is dense rather than padded, with semicolon-separated behavioral notes. However, the middle section on paging is terse and the live sentence is convoluted, making the structure slightly harder to parse than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with an output schema, the description covers the key invocation concerns: scope, notes, paging, lock/live modes, and sibling routing. The remaining gaps are the implicit file_path and the contradictory live-editing claim, which prevents full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description carries the full burden and largely delivers: it explains scope forms, include_notes=True, limit/offset paging semantics, and live mode values. It leaves file_path implicit and does not fully spell out limit/offset mechanics, but it adds substantial meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific outcome: 'Plain text of the deck in reading order' and defines the extraction conventions (spTree order, tab-joined cells, cached field text). It differentiates itself from siblings by explicitly routing edit-anchor needs to get_presentation_view and rendered-appearance checks to the assembly-export pack.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names concrete alternatives and when they apply: 'For edit anchors, use get_presentation_view' and 'Rendered-appearance checks live in the assembly-export pack.' It also documents live modes with conditions, helping an agent decide which setting to use for locked files.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workflowsGet WorkflowsARead-only
Step-by-step recipes for the common jobs, each naming the packs it needs and the exact tool order: build-a-diagram, one-call-diagram, equation-authoring (graphics), build-a-table-report (tables-charts), template-deck-setup, master-restyle, accessibility-pass (design), render-and-review, cross-deck-assembly, deck-merge, animate-a-build (assembly-export), batch-edit-from-view (lite, the cheap loop), review-cycle (review-sweeps), rebrand-pipeline (review-sweeps + design), live-session (com). Call with no task for the index, with a task name for full steps. Read the matching recipe before your first deck edit of a session; it prevents most wrong-tool detours.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the description doesn't need to repeat that. It adds value by explaining the parameter behavior: 'Call with no task for the index, with a task name for full steps.' This discloses how the tool behaves differently based on input, which is beyond the structured annotations. No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat long due to the recipe list, but every item serves a purpose – they are the valid values for the task parameter. The core purpose is front-loaded, and the usage instructions are clear. It's efficient given the information density, though it could be trimmed by moving the recipe list to a separate reference.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one optional parameter and an output schema, so the description covers the essential call patterns and usage context. It explains when to read recipes and lists all known task names. No critical information is missing for an agent to invoke it correctly. The output format is presumably covered by the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage, so the description must fully explain the 'task' parameter. It does so clearly: 'Call with no task for the index, with a task name for full steps.' It also provides a list of valid task names (recipes), which compensates for the lack of enums in the schema. This is excellent parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: it provides step-by-step recipes for common jobs, naming the packs and tool order. It distinguishes itself from sibling tools by being a meta-guide rather than a specific operation. The list of recipe names adds concreteness, and the instruction to call with no task for index or with a task name for full steps clarifies the resource being accessed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool: 'Read the matching recipe before your first deck edit of a session; it prevents most wrong-tool detours.' This gives a clear context of use and implies it's a precursor to other tools. However, it doesn't explicitly name alternatives or state when NOT to use it, but the guidance is strong enough to route an agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_slideInsert SlideA
Add a slide built from a layout (name, or 0-based global index; list_elements kind='layouts' lists them), carrying the layout's placeholder skeleton so inheritance binds. position: 0-based final index, default end. Whole decks start via create_presentation (design pack). Saves atomically with two-slot backup; backup=False skips rotation. live='auto' edits the open PowerPoint copy when the file is locked by it (UNSAVED until live_save, com pack); 'force' targets the open session; 'off' refuses locked files.
| Name | Required | Description | Default |
|---|---|---|---|
| live | No | auto | |
| backup | No | ||
| layout | Yes | ||
| position | No | ||
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds rich behavioral detail beyond the annotations: atomic saves, two-slot backup rotation, backup=False semantics, and the live='auto'/'force'/'off' behavior including the UNSAVED caveat until live_save. This is far more transparent than annotations alone provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely information-dense with no filler, but presented as a single run-on paragraph that mixes parameter guidance, behavioral caveats, and workflow context. A structured format would improve scannability without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all parameters, deck creation scope, backup behavior, locked-file live modes, and layout enumeration. With an output schema available on the tool, no essential operational detail appears to be missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates: layout is explained as name or index with enumeration hint, position has 0-based and default-end semantics, backup and live parameters are detailed, and file_path is self-evident from context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Add a slide built from a layout', and clarifies the layout-based placeholder skeleton behavior. This clearly distinguishes it from sibling tools like delete_slide, duplicate_slide, and reorder_slides.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear operational context: whole decks start via create_presentation, layouts can be listed with list_elements kind='layouts', and live mode behavior is specified for locked files. It lacks an explicit 'use this instead of X' statement for most sisters, so it is strong but not maximal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_elementsList ElementsARead-only
THE multiplex enumerator, one kind per call: slides, shapes, placeholders, tables, charts, images, diagrams (SmartArt frames with their editable nodes), notes, sections, layouts, masters. Returns a flat item list with ids and locations; slide-scoped kinds honor scope (None = all slides, a selector, or a list). count is always the true number found; a deck with more elements than fit the per-call output budget returns a "page" block naming how many were held back and the offset that continues, so nothing goes missing quietly. limit/offset page explicitly, and compact=True returns a fields header plus one array per item, about a third the size on large decks. Use it to find layout names for insert_slide and shape ids for editing. The packs (enable_tools) hold the tools that edit what this lists. For one slide in depth, use get_slide_info; for edit anchors, use get_presentation_view.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| limit | No | ||
| scope | No | ||
| offset | No | ||
| compact | No | ||
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint=true and openWorldHint=false; the description adds substantial behavior: one kind per call, slide-scoped kinds and scope semantics, count always being the true count, pagination with a 'page' block so nothing goes missing, and compact=True output behavior. These go well beyond the annotations and schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but information-dense; every clause contributes: capability, return shape, scope semantics, pagination guarantees, compact mode, and routing to related tools. It is front-loaded with the core behavior, making the most important disambiguation immediately visible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, 0% schema coverage, an output schema, and safe read-only annotations, the description covers all critical decision points: what kinds exist, how scope works, how paging/limits behave, how to reduce payload size, and which sibling tools to use instead. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains kind by enumerating valid values, defines scope with 'None = all slides, a selector, or a list', and describes limit/offset and compact=True behavior. Only file_path is not described, but it is obvious from the required parameter name and the tool's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with a specific verb and resource: 'THE multiplex enumerator, one kind per call: slides, shapes, placeholders, tables, charts, images, diagrams...' It enumerates the kinds it handles and states what it returns ('flat item list with ids and locations'). This clearly distinguishes it from siblings like get_slide_info and get_presentation_view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it: 'Use it to find layout names for insert_slide and shape ids for editing.' It also routes to alternatives: 'For one slide in depth, use get_slide_info; for edit anchors, use get_presentation_view.' This is exactly the when/alternative guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_hyperlinksList HyperlinksARead-only
Every hyperlink in scope (default all slides): external URLs and jump-to-slide links, on shapes and on text runs, with broken-target detection (missing rels, rels to deleted slides, empty URLs). The addresses reported are exactly what set_hyperlink and remove_hyperlink take. Media playback controls (insert_video/insert_audio, graphics pack) are not hyperlinks and are not listed. Read-only; the file is never modified.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | ||
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description reinforces this with 'Read-only; the file is never modified.' It adds useful behavioral detail beyond annotations: broken-target detection categories, address compatibility with mutation tools, and the explicit exclusion of media controls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three well-structured sentences with the core behavior front-loaded. Every sentence adds distinct value: what is listed, how it relates to mutation tools, what is excluded, and the read-only guarantee.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and annotations cover safety, the description is complete for invoking this tool correctly. It covers scope, hyperlink types, broken-target detection, exclusions, and the read-only guarantee, leaving no critical ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that scope defaults to all slides and that file_path is the file to inspect, but it does not specify the accepted format or values for scope. This is partial compensation for an otherwise sparse schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('list') and resource ('hyperlinks in scope'), enumerating exactly what counts: external URLs and jump-to-slide links on shapes and text runs, with broken-target detection. This clearly distinguishes it from sibling tools like get_text or list_elements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the scope default ('default all slides'), what is excluded ('Media playback controls... are not hyperlinks and are not listed'), and how the output relates to set_hyperlink and remove_hyperlink. It does not explicitly say 'use this when you need to inspect hyperlinks before modifying them,' but the context is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_backupsManage BackupsADestructive
The automatic backups under .ks4p-backups/ next to each mutated deck: prev (state before the last mutation) and anchor (session start). action='list': slots for one file_path or a whole directory, plus orphaned folders. action='restore': overwrite file_path from source ('prev', 'anchor', or a .pptx path); current content rotates into prev FIRST so the restore is undoable, and the payload is validated before the atomic replace. action='purge': scope 'orphans' or 'slots'; dry_run=True (default) reports only, dry_run=False deletes.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | ||
| action | Yes | ||
| source | No | ||
| dry_run | No | ||
| directory | No | ||
| file_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses several behavioral traits beyond annotations: restore is undoable because current content rotates into prev, the payload is validated before the atomic replace, and purge defaults to dry_run and only deletes when dry_run=false. This materially exceeds what destructiveHint=true conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description packs a large amount of behavior into a compact semicolon-separated block with no filler. The opening noun phrase is slightly awkward and the density could be improved with bullets, but every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given six parameters, a destructive risk profile, and no schema-level descriptions, the tool description covers the backup location, slot meanings, each action, restore safety, and deletion safeguards. Return values are not explained, but the presence of an output schema makes that unnecessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by defining all six parameters: action values, source choices, scope values, file_path vs directory, and dry_run semantics. It maps parameter names to concrete examples, adding meaning not present in the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description defines a backup-management tool by enumerating three actions—list, restore, and purge—against the .ks4p-backups/ slots, so an agent can tell what it does. It is less explicit than a clean 'manages automatic backups' statement and does not differentiate from the create_snapshot sibling, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives actionable guidance per action: list for inspecting slots or orphaned folders, restore for overwriting from a source, and purge with dry_run safety. It does not explicitly contrast with sibling tools like create_snapshot, but the action-level conditions are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_hyperlinkRemove HyperlinkADestructive
Remove hyperlinks from a shape or text range. target: a shape id (removes the shape-level link AND every run-level link inside the shape) or {"shape_id": N, "paragraph": P, "start"?: S, "end"?: E} for the covered runs only. Orphaned link rels are dropped; media playback affordances (graphics pack av inserts) are left alone. Saves atomically with two-slot backup; backup=False skips rotation.
| Name | Required | Description | Default |
|---|---|---|---|
| slide | Yes | ||
| backup | No | ||
| target | Yes | ||
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses several non-obvious behaviors beyond the destructiveHint annotation: it removes both shape-level and run-level links, drops orphaned link rels, preserves media playback affordances, and saves atomically with a two-slot backup. This gives the agent a strong model of side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence contributes critical information: target syntax, scope of removal, side effects, and save behavior. It is front-loaded with the core action and uses compact, precise phrasing without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the existence of an output schema, the description is largely complete: target semantics, side effects, and backup behavior are all specified. The only notable gap is the lack of any explanation for file_path and slide, which are required parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description carries the burden for parameters. It thoroughly explains the target parameter and the backup parameter, but file_path and slide are left implicit and are not described anywhere. Overall it adds substantial meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Remove hyperlinks from a shape or text range') with a clear resource and granular scope. It distinguishes itself from related siblings like set_hyperlink and list_hyperlinks by the verb and by detailing two target modes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use each target form: shape id for the whole shape including runs, and a paragraph/range object for only covered runs. It does not explicitly name alternatives or exclusions, but the usage conditions are effectively embedded in the target semantics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorder_slidesReorder SlidesADestructive
Rearrange the whole deck in one call. order: every current 0-based slide index exactly once, in the desired new sequence (a permutation; partial lists refuse). Durable slide_ids and view anchors survive reordering, plain indices do not. For moving ONE slide, move_slide in the design pack is simpler: enable_tools(packs=['design']). Saves atomically with two-slot backup; backup=False skips rotation.
| Name | Required | Description | Default |
|---|---|---|---|
| order | Yes | ||
| backup | No | ||
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description discloses meaningful behavior: durable slide_ids and view anchors survive reordering while plain indices do not, saves are atomic with two-slot backup, and backup=False skips rotation. This gives the agent a clear picture of side effects and safety controls without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, starting with the core operation and immediately giving the critical permutation constraint. Every sentence adds necessary operational or routing detail, and there is no filler or repetition of schema/annotation data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a reordering operation with destructive implications, the description covers the full call contract: scope, permutation rule, behavior of identifiers, backup semantics, and the simpler alternative for single-slide moves. The presence of an output schema means return-value documentation is not required here, so nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates well for the two key parameters: order is explained as a permutation where every current 0-based index must appear exactly once and partial lists are refused, and backup is tied to the two-slot backup rotation behavior. file_path is not described, but its meaning is conventional and the schema marks it as a required string.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Rearrange the whole deck in one call.' It further clarifies the scope by requiring a full permutation of all slide indices and explicitly contrasts with single-slide moves via move_slide, distinguishing it from sibling tools like insert_slide, delete_slide, and duplicate_slide.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use this tool versus move_slide: use reorder_slides for whole-deck rearrangement, and move_slide for moving a single slide. It also gives concrete activation instructions for the alternative via enable_tools(packs=['design']), so an agent knows the exact routing decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_and_replaceSearch and ReplaceADestructive
Deck-wide find and replace, safe across fragmented runs (each replacement keeps the first run's formatting), SmartArt node text included. regex=True enables capture groups (refused live); matches overlapping slide-number/date fields are skipped. Bulk cell rewrites: set_table_cells (tables-charts pack). Saves atomically with two-slot backup. live='auto' edits the open PowerPoint copy of a locked file; 'force' targets the open session; 'off' refuses locked files. Batches: apply_edits.
| Name | Required | Description | Default |
|---|---|---|---|
| find | Yes | ||
| live | No | auto | |
| regex | No | ||
| scope | No | ||
| backup | No | ||
| replace | Yes | ||
| file_path | Yes | ||
| match_case | No | ||
| include_notes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses substantial behavior: atomic saves, two-slot backup, preservation of the first run's formatting, inclusion of SmartArt node text, skipped overlapping fields, and the exact semantics of live='auto'/'force'/'off'. This meaningfully enriches the agent's model of the operation and is consistent with destructiveHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence is information-dense and the core purpose is front-loaded. The text is somewhat telegraphic and mixes multiple caveats into flowing sentences, but it remains appropriately sized for a tool with this many parameters and behaviors.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers formatting safety, SmartArt behavior, skipped fields, atomic saves with backups, locked-file modes, and sibling alternatives. Given that an output schema exists and the description already provides a full behavioral picture, nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema contains no descriptions, so the description carries the burden. It adds real meaning for regex, live, and backup, and file_path/find/replace are inferable by name. However, scope, match_case, and include_notes are not explained, leaving important parameter behavior undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Deck-wide find and replace,' which names a specific verb, resource, and scope. It further distinguishes itself by noting fragmented-run safety, SmartArt inclusion, and explicitly routing bulk cell rewrites to set_table_cells and batches to apply_edits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit alternative conditions: 'Bulk cell rewrites: set_table_cells (tables-charts pack)' and 'Batches: apply_edits.' It also defines when each live mode applies to locked files, so an agent can decide whether this is the right tool and how to invoke it safely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_hyperlinkSet HyperlinkADestructiveIdempotent
Set a hyperlink on a shape or text range, replacing any link already there. target: a shape id, or {"shape_id": N, "paragraph": P, "start"?: S, "end"?: E} for a text range. Exactly one destination: url (external) or to_slide (a jump by index or {"slide_id": N}, the structure delete_slide knows how to neuter). tooltip sets hover text. Navigation buttons pair with insert_shape (graphics pack). Saves atomically with two-slot backup; backup=False skips rotation.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| slide | Yes | ||
| backup | No | ||
| target | Yes | ||
| tooltip | No | ||
| to_slide | No | ||
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=false, destructiveHint=true), the description discloses that existing links are replaced, saves are atomic with two-slot backup, and backup=False skips rotation. These are valuable behavioral details not present in the structured data, with no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact but includes a cryptic phrase: 'the structure delete_slide knows how to neuter,' which requires cross-tool knowledge and is not self-contained. It could be clearer and tighter without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers target, destination, tooltip, backup, and save semantics, but it omits the slide parameter semantics and does not explain how 'exactly one destination' is enforced or what happens on validation errors. Given the 0% schema coverage, these are notable gaps for a 7-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description meaningfully explains target structure, url/to_slide destination, tooltip hover text, and backup behavior. It leaves file_path and slide implicit, but those are inferable from the tool's presentation context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Set a hyperlink on a shape or text range, replacing any link already there,' which names a specific verb and resource. This clearly distinguishes it from siblings like remove_hyperlink and list_hyperlinks by being the setter operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains when to use the tool by describing target types (shape vs text range) and destination selection (url vs to_slide), and it pairs navigation buttons with insert_shape. It does not explicitly state exclusions or when-not-to-use scenarios, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_placeholder_textSet Placeholder TextADestructiveIdempotent
Fill a layout placeholder (styling inherits from the layout). placeholder: "title", "subtitle", "body"/"content" (each matches both body and obj placeholders; exact type wins), a raw ph type, or an idx int (idx/paragraphs= file-mode only). text: newline = paragraph, leading tabs = levels; or paragraphs=[{"text": str, "level": 0..8}]. Free text boxes: graphics pack. Saves atomically with two-slot backup; backup=False skips rotation. live='auto' edits the open PowerPoint copy of a locked file. Batches: apply_edits.
| Name | Required | Description | Default |
|---|---|---|---|
| live | No | auto | |
| text | No | ||
| slide | Yes | ||
| backup | No | ||
| file_path | Yes | ||
| paragraphs | No | ||
| placeholder | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring readOnlyHint=false and destructiveHint=true, the description adds substantial beyond-annotation behavior: atomic saves, two-slot backup rotation with a backup=False escape hatch, and live='auto' editing of the open PowerPoint copy of a locked file. These are exactly the kind of side effects (file mutation, backup behavior) an agent needs to anticipate, and nothing in the text contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Efficiently front-loads the core purpose and packs every sentence with new information — parameter semantics, routing, save behavior, live mode — with no filler. Some phrasing is cryptically compressed ('raw ph type', 'idx/paragraphs= file-mode only'), which slightly hurts readability despite the economical structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high complexity (7 params, 3 required) and 0% schema coverage, the description covers the essential semantics, save/backup behavior, and alternative-tool routing, and an output schema exists so return values need no explanation. The remaining gaps are the undocumented required slide parameter and no guidance on invalid placeholder/error behavior, which prevent a top score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full parameter burden, and it does so extensively: placeholder matching semantics ('exact type wins', body/content synonyms, raw ph type, idx int), text encoding (newlines = paragraphs, tabs = levels), paragraphs format with level range 0..8, backup=False semantics, and live='auto' semantics. However, the required slide parameter (schema type {}) and file_path receive no clarification, leaving ambiguity on how to specify a slide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource statement, 'Fill a layout placeholder,' and immediately adds a distinguishing trait ('styling inherits from the layout'). It also separates itself from adjacent operations by naming free text boxes (graphics pack) and batches (apply_edits), so an agent can tell it apart from siblings without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit routing for the main alternatives: free text boxes go to the graphics pack, and batched operations go to apply_edits. It also constrains when idx/paragraphs input is valid ('file-mode only'). It stops short of a full when-to-use versus the broader sibling set (e.g., fit_text, get_text), but the key adjacent cases are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v1.2.2- Added
get_server_info
24 tool updates
v1.2.1- Changed
apply_edits1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
copy_presentation1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
create_snapshot1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
delete_slide2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / slide / titleRemoved value: -"Slide"
- Changed
diagnose1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
disable_tools1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
duplicate_slide2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / slide / titleRemoved value: -"Slide"
- Changed
enable_tools1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
find_text4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / compactAdded value: +{ + "default": false, + "type": "boolean" +} - added
Input schema / properties / limitAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "type": "integer" +}
- Changed
fit_text2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / slide / titleRemoved value: -"Slide"
- Changed
get_presentation_info1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_presentation_view3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / limitAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "type": "integer" +}
- Changed
get_slide_info4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / limitAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "type": "integer" +} - removed
Input schema / properties / slide / titleRemoved value: -"Slide"
- Changed
get_text3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / limitAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "type": "integer" +}
- Changed
get_workflows1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
insert_slide2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / layout / titleRemoved value: -"Layout"
- Changed
list_elements4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / compactAdded value: +{ + "default": false, + "type": "boolean" +} - added
Input schema / properties / limitAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "type": "integer" +}
- Changed
list_hyperlinks1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
manage_backups1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
remove_hyperlink3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / slide / titleRemoved value: -"Slide" - removed
Input schema / properties / target / titleRemoved value: -"Target"
- Changed
reorder_slides1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
search_and_replace1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
set_hyperlink3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / slide / titleRemoved value: -"Slide" - removed
Input schema / properties / target / titleRemoved value: -"Target"
- Changed
set_placeholder_text3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / placeholder / titleRemoved value: -"Placeholder" - removed
Input schema / properties / slide / titleRemoved value: -"Slide"
1 tool update
v1.1.3- Changed
diagnose1 field changed- added
Input schema / properties / verboseAdded value: +{ + "default": false, + "type": "boolean" +}
24 tool updates
v1.0.0- First observed
apply_edits - First observed
copy_presentation - First observed
create_snapshot - First observed
delete_slide - First observed
diagnose - First observed
disable_tools - First observed
duplicate_slide - First observed
enable_tools - First observed
find_text - First observed
fit_text - First observed
get_presentation_info - First observed
get_presentation_view - First observed
get_slide_info - First observed
get_text - First observed
get_workflows - First observed
insert_slide - First observed
list_elements - First observed
list_hyperlinks - First observed
manage_backups - First observed
remove_hyperlink - First observed
reorder_slides - First observed
search_and_replace - First observed
set_hyperlink - First observed
set_placeholder_text
TDQS
Scored across 25 tools
Each tool has a sharply distinct job: read/metadata tools are separated from mutating editors, and the hyperlink, backup, slide, and pack-management families do not overlap. Similar-sounding readers (get_presentation_info, get_presentation_view, get_slide_info, list_elements) have clearly different output contracts.
Names follow a consistent imperative snake_case pattern: get_*, list_*, set_*, insert_*, delete_*, duplicate_*, reorder_*, enable_*, disable_*. Even the compound actions like search_and_replace and manage_backups preserve the same verb-first convention, so the surface reads predictably.
25 tools is on the high side for a typical MCP server, but the count is justified by the breadth of PowerPoint editing plus backup, diagnostic, workflow, and pack-management infrastructure. A few meta tools add weight, but none are redundant.
The active surface covers the core deck lifecycle: reading, slide inserts/deletes/duplicates/reorders, text search and replacement, hyperlink management, and backup/snapshot workflows. Creation, design, export, shape, and table tools are not active by default but are explicitly available through the enable_tools packs, so gaps are documented and workaroundable rather than dead ends.
Maintenance
Related MCP Connectors
Generate, edit, merge, translate and PDF-convert PowerPoint (.pptx) over MCP. 8 tools.
Presentations.AI MCP server — create designed slide decks from a topic, text, or document.
Deterministic, fully editable PowerPoint from typed slide intents. 200+ layouts, brand templates.
AI presentation and report generation: slides, diagrams, PPTX export, live preview MCP App.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceA server that enables creating and editing PowerPoint presentations programmatically through the Model Context Protocol, supporting features like adding slides, images, textboxes, charts, and tables.8,693 PyPI1,852MIT
- FlicenseNot gradedqualityDmaintenanceA server that provides PowerPoint presentation creation and editing capabilities through the Model Context Protocol, allowing users to create slides, add text, images, shapes and other content programmatically.2-
- AlicenseNot gradedqualityBmaintenanceMCP server for creating, reading, and editing PowerPoint (.pptx) presentations.45 PyPI1MIT
- FlicenseNot gradedqualityDmaintenanceEnables creating, editing, and reading PowerPoint presentations (PPTX) with security features like ZIP bomb protection, macro detection, and path traversal prevention.-