Skip to main content
Glama

🖌️ KitchenSink4PPT

Tests PyPI License: AGPL-3.0

Landing page · llms.txt (machine-readable capability manifest for agents and LLM crawlers)

Everything plus the kitchen sink for Microsoft PowerPoint: an MCP server for .pptx files, engineered not to corrupt. Slides, text, tables, charts, notes, export, and the one thing no other server in the ecosystem does: arbitrary vector graphics as native, editable PowerPoint shapes.

New here? Start with the Quickstart.

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.

Related MCP server: PowerPoint Editor MCP Server

Install

Claude Desktop: one click

Download kitchensink4ppt.mcpb from the latest release and double-click it, or drag it into the Claude Desktop window. Desktop adds it as an extension and the sink is connected. Nothing to type, nothing to configure. The bundle launches the server with uv, so uv needs to be on your PATH (pip install uv); if Desktop does not pick the file up on a double-click, use Settings > Extensions > Advanced settings > Install extension.

Claude Code: one line

claude mcp add powerpoint -s user -- uvx kitchensink4ppt

That fetches and runs the server for you, so there is nothing to install first.

For developers: pip, source, other MCP clients

Install the package and point any MCP client at the executable:

pip install kitchensink4ppt
{"mcpServers": {"powerpoint": {"command": "kitchensink4ppt"}}}

The ppt-mcp executable is an equivalent entry point. From a clone:

git clone https://github.com/KitchenSink4AI/KitchenSink4PPT
cd KitchenSink4PPT
python -m venv .venv
.venv\Scripts\pip install -e .
claude mcp add powerpoint -s user -- <absolute-path>\.venv\Scripts\ppt-mcp.exe

Requires Python 3.12+. Everything file-based runs on any OS; PDF and image export prefer PowerPoint via COM on Windows and fall back to LibreOffice headless where available. Nothing ever needs a network connection.

Tiered loading: start light, grow mid-session

The server starts in lite mode: 24 tools, roughly 5.3k 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

KS4P_MODE

startup surface: lite (default), full, or a pack list like graphics,com

KS4P_PACK_POLICY

auto (default) or locked (enable_tools refuses; surface fixed at startup)

KS4P_ALL_TOOLS

true loads every pack at startup; false or empty keeps lite. KS4P_MODE wins when set

KS4P_LOCK_TOOLS

true fixes the surface at startup; false or empty leaves it adjustable. KS4P_PACK_POLICY wins when set

KS4P_ALLOWED_ROOTS

opt-in path sandbox; tools refuse to touch files outside these roots

KS4P_UPDATE_CHECK

off turns the update check off completely: no network call, no cache file (the older KS4P_NO_UPDATE_CHECK=1 still works)

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.

Pack inventory (141 tools total)

Pack

Tools

~Tokens

What is in it

lite core (always on)

24

5.3k

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

7.1k

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

4.1k

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

5.1k

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

5.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

2.4k

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.6k

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 live='auto'

Full surface: about 29.8k 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.

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.pptx and anchor.pptx under a hidden .ks4p-backups/ folder. manage_backups lists, restores (undoably), and purges; create_snapshot makes 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_ROOTS and 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,241-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

AGPL-3.0-only (see LICENSE and NOTICE.md). Free for personal, academic, and open-source use. If you want to embed it in closed-source commercial software, open an issue to discuss a commercial license.

Family

Sibling of KitchenSink4Word (the same engineering for .docx; site).

Available Tools

24 tools
apply_editsA

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
editsYes
atomicNo
backupNo
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

The description discloses one lock, one backup, atomic save, stale-anchor refusal, and result.changed mapping. These behavioral details go well beyond the readOnlyHint: false annotation and give the agent an accurate model of what happens during execution.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence contributes: core behavior, DSL format, op list, safety constraints, and routing to standalone tools. It is front-loaded with the most important information and contains no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a batch editor with pack-specific ops and 0% schema coverage, the description is remarkably complete. It covers the operation model, failure behavior, backup behavior, required atomicity, and single-edit alternatives. The presence of an output schema covers return-value details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at 0%, the description carries the full burden and does so admirably. It explains the edit structure, anchor addressing, valid op names, atomic/backup semantics, and result.changed, adding substantial meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Batch editor' and immediately conveys the tool's function: applying many edits atomically to a presentation. It lists the supported ops and explicitly distinguishes itself from creation tools, making its scope unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states when to use this tool ('needs two or more edits') and when to prefer standalone tools, naming each alternative. It also warns that atomic must stay True and that no partial-apply mode exists, giving clear operational guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

copy_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dest_pathYes
file_pathYes
overwriteNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

The description discloses overwrite refusal, the backup rotation behavior into .ks4p-backups, undoability via manage_backups, and the guarantee that the source file is never modified. These details go far beyond the readOnlyHint=false annotation and describe important 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences deliver the core purpose, the key alternative, and all critical behavioral caveats without fluff. The primary action is front-loaded, and every sentence adds necessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, routing, overwrite semantics, backup/undo behavior, and source safety. With an output schema present, no return-value detail is needed; an agent has enough context to invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains dest_path and overwrite behavior explicitly, and file_path is inferable as the source deck. This adds meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it copies a deck byte-for-byte and immediately contrasts with create_snapshot, which names a DTG-stamped copy. This makes the tool's purpose and distinction from its sibling obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit use case ('before heavy edits') and names the alternative tool (create_snapshot) with the criterion for choosing this one: an explicit dest_path rather than an auto-generated stamp. This is clear routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNo
dest_dirNo
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior5/5

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

Annotations only state readOnlyHint=false, so the description carries the burden of behavioral detail. It discloses non-obvious behaviors: DTG replacement instead of stacking, numeric suffixes on collisions, no auto-pruning, manage_backups never touching snapshots, and the source file not being modified. These go well beyond the annotations and add significant safety-relevant context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the primary purpose and then packs multiple distinct rules into a compact block. Every sentence carries information, though the density makes it slightly harder to parse. It is appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The main behavior and safety properties are well covered, and since an output schema exists, return values need not be described. However, the dest_dir parameter's meaning and default behavior are absent, which is a noticeable gap. An agent could still call the tool correctly, but not with full confidence about where snapshots land.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 the file_path role and the optional short label, but it never mentions the dest_dir parameter at all. One of three parameters remains semantically unexplained, so the description only partially compensates for the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Save a DTG-stamped permanent copy' and an exact naming format. It also distinguishes itself from siblings by explaining that snapshots are permanent keepers that 'manage_backups never touches,' so an agent can tell it apart from rotation/backup tools without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises 'Take one before any large or risky editing pass,' giving a clear when-to-use condition. It also contrasts snapshots with automatic prev/anchor slots and manage_backups, which routes an agent away from alternatives. It does not enumerate every sibling exclusion, but the context is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_slideA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
liveNoauto
slideYes
backupNo
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

The description goes far beyond the single readOnlyHint:false annotation by disclosing garbage-collection behavior, neutered jump links, atomic saving with two-slot backup, and the unsafe 'UNSAVED until live_save' live-editing caveat. This is exactly the behavioral risk context an agent needs for a destructive tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences cover the core action, side effects, alternatives, backup semantics, and live-editing behavior without fluff. The most critical destructive effects are front-loaded, and every clause adds operational value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive tool with complex side effects, the description is complete: it covers what gets removed, how to avoid permanent deletion, backup behavior, locked-file behavior, and the live-saving implication. With an output schema present, the lack of return-value detail is not a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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 defines the slide parameter's accepted forms ('0-based index or {"slide_id": N}'), explains backup=False behavior, and clarifies live mode values. This turns potentially ambiguous schema properties into actionable semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with the specific action 'Delete a slide' and names the resource, then elaborates the destructive scope: notes, charts, embeddings, comments, custom-show references, section membership, and jump links. This clearly distinguishes it from sibling slide operations like insert_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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says to prefer set_slide_hidden when the slide might come back, giving a concrete alternative for a common scenario. The live parameter values 'auto', 'force', and 'off' also explain when each mode applies, including the locked-file case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

diagnoseA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
verboseNo
file_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

ReadOnlyHint already marks it read-only, and the description reinforces this with 'WITHOUT mutating anything.' It also adds valuable behavioral context: output is PASTE-SAFE by default, verbose=True exposes paths, and it is the only place the update-check runs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence contributes: what it checks, optional file behavior, output safety, when to run it, and the boundary with validate. The key purpose is front-loaded in the first sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, the description need not enumerate return fields. It covers the diagnostic scope, safety profile, parameter effects, invocation timing, and the sibling tool boundary, making it complete for an agent deciding whether and how to call diagnose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description carries full responsibility for explaining parameters. It clearly explains file_path enables file-level checks, and verbose=True adds sandbox roots, engine locations, and the full file path, which goes beyond the schema's bare types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Self-check') and resource ('this environment and, optionally, one file'), and enumerates exactly what it reports. It also differentiates itself from the validate tool, so an agent can distinguish diagnose from a real PPT opens-clean check.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Run it first when any tool refuses unexpectedly or an export engine seems missing,' and tells the agent that validate is the tool for the actual opens-clean check in PowerPoint. This gives clear when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

disable_toolsA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
packsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

The annotation only provides readOnlyHint=false, leaving the description to carry behavioral context. It excellently discloses idempotency ('already-disabled packs are reported, not errors'), the lack of file changes ('Nothing about the presentation files changes'), session-scoped impact, and output behavior ('Reports the approx token cost removed and the remaining active surface'). 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is five compact sentences, each adding unique value: the action, parameter semantics, idempotency, side-effect clarification, and output. It is front-loaded with the core purpose and contains no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with an output schema present, the description fully covers the operation, parameter domain, important side-effect constraints, and expected report output. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Since the schema has 0% description coverage, the description must compensate. It does so by defining the parameter as pack names shared with enable_tools and allowing the special value 'everything'. It does not enumerate the actual pack names, but the pointer to enable_tools is sufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Switch pack tools back off to shrink the tool surface'. It clearly identifies the tool's scope, mentions the lite core always staying on, and references enable_tools as the counterpart, so an agent can distinguish it from siblings without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly ties itself to enable_tools ('Takes the same pack names as enable_tools, or "everything"'), making the alternative obvious, and the context of shrinking the tool surface implies when to use it. However, it does not give an explicit 'use this when...' or when-not rule, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

duplicate_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slideYes
backupNo
positionNo
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the single readOnlyHint=false annotation, the description discloses deeply relevant behavior: cloned vs shared content, GUID regeneration to avoid corruption, atomic saving with two-slot backup, and backup=False skipping rotation. This is exactly the kind of operational context an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but purposeful: copy semantics come first, then parameter details, then the pack prerequisite and save behavior. No filler is present; the design-pack sentence is slightly tangential but still relevant to the tool's capability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex mutation tool with an empty slide schema and minimal annotations, the description covers all non-obvious aspects: deep-copy behavior, parameter formats, destructive-corruption warning, backup behavior, and a capability prerequisite. Given the existing output schema, nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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 succeeds. It explains slide's index/object form, position's 0-based meaning and default, and backup's rotation-skip effect. file_path is not explicitly described, but it is the most self-explanatory parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Deep-copy a slide', a specific verb and resource, then clarifies the exact scope: notes, charts with embedded workbooks, and embeddings are cloned, while layout/media stay shared and GUIDs are regenerated. This clearly distinguishes the tool from insert_slide, delete_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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete invocation guidance: slide can be a 0-based index or an object, position defaults to right after the original, and the design pack prerequisite for move/hide is stated. It does not explicitly name sibling alternatives or say when not to use this tool, so it stops short of full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

enable_toolsA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
packsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

The description goes well beyond the minimal readOnlyHint annotation by disclosing side effects: the tool list grows, the client is notified to re-fetch, the operation is idempotent, it reports approximate token cost added and the active surface, and it can be reversed with disable_tools. This is rich behavioral context that annotations do not provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long, but the length is justified because it must enumerate seven distinct pack names and their contents plus legacy aliases. It is front-loaded with the core action and effect, then systematically lists each pack. Some internal parentheses are dense, but the structure is understandable and every sentence contributes useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having only one simple parameter, the description provides a complete picture: what packs are available, what each contains, legacy name resolution, idempotency, side effects on the client, cost reporting, and how to reverse the operation. Nothing essential is missing for an agent to decide whether and how to call this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and there are no enums, so the description carries the full burden of explaining the 'packs' parameter. It does this thoroughly by listing every valid pack name, including aliases for legacy names, and describing what each pack includes. This gives the agent concrete, actionable parameter values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses a specific verb ('Switch on') and resource ('optional tool packs'), and clearly distinguishes itself from disable_tools by naming the inverse. It enumerates exactly which packs exist and what each contains, so an agent can understand the tool's purpose without any ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states this is for enabling optional tool packs mid-session, provides the full list of valid packs, and explicitly says disable_tools reverses the operation. It gives clear context for when to use the tool, though it doesn't elaborate on scenarios where it should not be used or contrast with other tools beyond disable_tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_textA
Read-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 &amp;. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
regexNo
scopeNo
offsetNo
compactNo
file_pathYes
include_notesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only provide readOnlyHint=true, and the description adds substantial behavior beyond that: regex is guarded against catastrophic backtracking, matching is against displayed text rather than raw XML, count is always the true total, pagination exposes an omitted count and next offset, and compact changes the shape. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but free of filler; every clause adds operational information, and the first sentence front-loads the core purpose. Subsequent details are grouped by related behavior (regex safety, XML escaping, pagination, compact output, tool routing).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value details are covered structurally. The description covers matching semantics, address format, pagination, and routing to sibling tools. Minor gap: scope and include_notes parameters are not described, but the overall behavior is sufficiently complete for an agent to call the tool correctly for common cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description compensates well by explaining regex=True, compact=True, limit/offset pagination via the 'page' block, and the meaning of budget. However, scope and include_notes are left unexplained, and file_path/query rely on context rather than explicit semantics, so it is not complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource: 'Search the deck's text.' It then defines the exact return shape (slide index, shape id, paragraph index, and character offsets) and ties it to sibling tools by naming the addresses format_text and apply_edits consume. This clearly distinguishes find_text from get_text, which reads text in order.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes usage: 'Use this to locate text; to read it in order, use get_text.' It also directs formatting-aware replacement to the graphics pack via enable_tools(packs=['graphics']), and notes apply_edits consumes its output, so an agent knows how this tool fits into a workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fit_textA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
shapeNo
slideYes
backupNo
min_sizeNo
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Discloses much more than readOnlyHint=false: the result is an ESTIMATE lacking font metrics, a shape that cannot fit at min_size reports still_overflowing, and saves are atomic with a two-slot backup where backup=False skips rotation. These traits (estimation caveat, failure reporting, atomic save semantics) materially affect how an agent trusts and invokes the tool, and none contradict the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four dense sentences, each earning its place: purpose/mechanism, shape=None scope, estimation caveat with verification, and atomic/backup save behavior. The main purpose is front-loaded and there is no filler, even though the overall density is high.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating 5-parameter tool with an output schema present, the description covers the heuristic, the failure report (still_overflowing), scope selection, verification guidance, and save behavior. The only minor gaps (shape's type, slide reference convention) appear to be shared conventions across the sibling toolset, so little is left unknown for an agent making the call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description carries the load and meaningfully clarifies min_size (floor in pt), shape (None means every overflowing shape), and backup (False skips rotation). file_path and slide are left implicit, and shape's type is unspecified, but the otherwise-ambiguous parameters are compensated for.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Shrink overflowing text to fit') and details the mechanism (largest uniform font scale via an average-glyph-width heuristic, rewriting run sizes, enabling normAutofit). This clearly separates it from sibling text tools like get_text, find_text, and search_and_replace, which read or edit text content rather than fit it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear when-to-use context: apply when text overflows, with shape=None extending the operation to every overflowing shape and min_size acting as the floor. It also advises a concrete verification step with export_slide_images due to the estimate heuristic. It stops short of naming sibling alternatives or stating when not to use it (e.g., when exact font metrics are required).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_presentation_infoA
Read-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']).

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description reinforces this as a read-only 'facts' call. It adds useful behavioral context beyond annotations: it is a 'cheap first look', it returns deck-level metadata including notes presence, and it explicitly excludes rendering, validation, and PDF export. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: it states the tool's purpose first, then lists contents, then provides routing to alternatives. Every sentence earns its place, and the line breaks aid scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists and the operation is read-only, the description covers the essential invocation context: what facts are returned, when to prefer this over siblings, and where related capabilities live. No critical information for selecting or calling this tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one parameter, file_path, with no description, and the description does not clarify its expected format, bounds, or access semantics. The parameter name is self-explanatory enough to avoid a score of 1, but with 0% schema description coverage, the description should have compensated and did not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Deck-level facts in one call' about a presentation, and enumerates exactly what is returned. It also draws clear lines against sibling tools like get_presentation_view and list_elements, so an agent can distinguish it without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool: 'The cheap first look before get_presentation_view.' It also names alternatives and exclusions: use list_elements for enumerating one kind of element, and use the assembly-export pack for rendering, validation, and PDF export.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_presentation_viewA
Read-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']).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
scopeNo
detailNotext
offsetNo
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, it discloses the output format ('slide headers with durable anchors', 'pipe tables', 'quoted blocks'), cell address conventions, budgeted rendering behavior, and how to enable graphics editing. This gives an agent a rich, accurate model of what will happen when the tool is called.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and front-loaded with the core purpose, followed by structured details for output, scope, detail, and pagination. It is slightly run-on, but every clause contributes meaningful behavior, so the length is justified despite some stylistic informality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers output shape, anchor semantics, all parameter families, budgeted behavior, and the relationship to editing workflows. An output schema exists for return values, and readOnlyHint handles safety, so nothing critical is left unexplained 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.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description takes on full parameter documentation. It explains scope (None, index, slide_id object, or list), detail levels ('outline', 'text', 'full'), and limit/offset pagination semantics. The 1-based table addresses vs 0-based table-tool convention also clarifies offset-related behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as 'anchored markdown projection of a deck' and 'THE cheap way to read it', with a specific verb and resource. It conveys the core purpose of reading a presentation efficiently and distinguishes it from edit-oriented siblings by mentioning stable anchors for apply_edits.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides strong usage context: scope values, detail modes, budgeted pagination, and how to feed anchors to apply_edits. It does not explicitly name alternative tools or state when not to use this tool, but the 'cheap way to read it' phrasing and detailed invocation options make intended usage clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_slide_infoA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
liveNoauto
limitNo
slideYes
offsetNo
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior1/5

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

The description states that "live='auto' edits the open PowerPoint copy" while the annotations declare readOnlyHint=true. This directly contradicts the read-only annotation and could mislead an agent into thinking the tool mutates the presentation. Despite other useful behavioral disclosures, the contradiction is severe.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a clear summary, then adds shape-id relevance, slide addressing, pagination, and live-mode behavior. It is dense but each clause contributes useful information. A bit of restructuring or bullets could improve skimmability, but it is not bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers return fields, shape IDs, pagination, and sibling routing well, and an output schema is present. However, the live-mode 'edits' contradiction creates a significant completeness problem: an agent cannot safely infer whether this tool has side effects, which undermines the otherwise rich context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning. It explains slide input as '0-based index or {"slide_id": N}' and describes live modes in detail. It also gives contextual meaning to limit/offset through the budgeted page-block explanation, though file_path and exact numeric semantics are left implicit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly names the tool's purpose: retrieve detailed information about a single slide, listing concrete fields like durable slide_id, layout, hidden flag, notes presence, and shape geometry. It also distinguishes itself from siblings by explicitly pointing to get_presentation_view for all slides.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit routing: 'All slides: get_presentation_view.' It also explains the live parameter modes, locked-file behavior, and pagination via 'page' block with omitted count and next offset, giving the agent actionable guidance on when and how to use the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_textA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
liveNoauto
limitNo
scopeNo
offsetNo
file_pathYes
include_notesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior1/5

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

The description says 'live=auto edits the open PowerPoint copy when the file is locked by it' and mentions UNSAVED changes until live_save, which directly contradicts the annotation readOnlyHint=true. This is a serious inconsistency: a read-only tool should not be editing the target file.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but purposeful: it front-loads the primary purpose and then systematically covers parameters and special behaviors. The main drawback is heavy jargon such as 'com pack' and 'assembly-export pack' that assumes domain knowledge, but there is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers reading order, scoping, notes, paging, live behavior, and sibling routing, while the output schema handles return shape. It is nearly complete, but unexplained domain-specific terms and the unresolved contradiction with readOnlyHint prevent a perfect score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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 parameter semantics. It covers scope (None, 0-based index, slide_id dict, list), include_notes, limit/offset paging behavior, and live values ('auto', 'force', 'off'). Only file_path is left implicit, but its meaning is self-evident.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns 'Plain text of the deck in reading order' and specifies the ordering rules without ambiguity. It also differentiates itself from siblings by pointing to get_presentation_view for edit anchors and noting that rendered-appearance checks live elsewhere.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly describes scope options, include_notes behavior, limit/offset paging, and live mode semantics. It also provides an exclusion: for edit anchors, use get_presentation_view. This gives an agent clear, actionable guidance on when and how to invoke the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_workflowsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the description does not need to restate read-only behavior. It adds useful context about the two call modes (index vs full steps) and the content of the recipes. This goes beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and then lists workflow names, which is necessary information. The list is long but each item is useful for selecting a task. Slightly verbose, but every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and readOnlyHint=true, the description provides everything needed to invoke the tool correctly: purpose, parameter semantics, and when to use it. There are no missing prerequisites or ambiguous behaviors that would prevent correct use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the parameter explanation. It does: no task returns the index, a task name returns full steps. It also enumerates many valid task names, effectively compensating for the lack of enums in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool provides step-by-step recipes for common jobs, each naming required packs and tool order. It lists many workflow names, giving a concrete sense of the resource covered. It is distinct from the sibling operation tools, though it lacks an explicit verb like 'retrieves' or 'returns'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit invocation guidance: call with no task for the index, with a task name for full steps. It also advises reading the matching recipe before the first deck edit to prevent wrong-tool detours. However, it does not explicitly name alternative tools or conditions for using them, only implies them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insert_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
liveNoauto
backupNo
layoutYes
positionNo
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

The annotations only mark readOnlyHint=false, yet the description discloses atomic saving, two-slot backup rotation, the backup=False opt-out, and the three live= modes with their locked-file behavior and UNSAVED caveat. This is substantial behavioral context well beyond the structured annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and runs several clauses together, but each clause earns its place and the core action is front-loaded. A bit more separation of parameter definitions would improve readability without adding length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity—layout selection, positional insertion, backup semantics, and live PowerPoint-lock handling—the description covers all essential behaviors and references the relevant discovery/list commands. With an output schema present, not detailing return values is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must add parameter meaning, and it does: layout is disambiguated by name/index and how to list them, position is defined as 0-based final index with end default, backup is tied to rotation behavior, and live receives explicit auto/force/off semantics. Only file_path is left to obvious inference.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with a specific verb and object ('Add a slide built from a layout') and distinguishes the operation from sibling slide tools like delete_slide, duplicate_slide, and reorder_slides. It also states the key mechanism (placeholder skeleton inheritance) so the agent understands what this insertion accomplishes beyond a generic add.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly positions this as the tool for adding a slide to an existing deck and points to list_elements kind='layouts' for discovering valid layout identifiers. It names create_presentation as the alternative for whole-deck creation, which is an explicit boundary, though it doesn't spell out exclusions for sibling slide-editing tools because those are implied by their names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_elementsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
limitNo
scopeNo
offsetNo
compactNo
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

The description goes well beyond the readOnlyHint annotation by explaining exact output behavior: count is always accurate, paging reports held-back items and continuation offsets, compact mode reduces payload size, and scope handling is defined. There is no contradiction with annotations, and the read-only nature is consistent with the enumerator framing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence earns its place: element kinds, return shape, paging/count behavior, compact mode, concrete use cases, and sibling routing. It is front-loaded with the core purpose and does not waste words on restating the name or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter tool with no schema descriptions, the description covers nearly all invocation-relevant behavior and output semantics, and an output schema exists for the rest. It explains paging, scope, compact mode, and when to choose alternatives, making it complete enough for correct selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates strongly: kind enumerates valid values, scope explains None/selector/list, limit/offset are described as explicit paging, and compact is tied to a smaller response format. Only file_path is left to inference, and the exact selector/list syntax for scope is not specified, so it is not quite perfect.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a precise verb and resource: it is 'THE multiplex enumerator' that returns flat item lists for many presentation element kinds. It immediately enumerates the supported kinds and contrasts itself with sibling tools, so an agent can tell it apart from get_slide_info and get_presentation_view without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is explicit: use it to find layout names for insert_slide and shape ids for editing, while get_slide_info and get_presentation_view are named as alternatives for other needs. It also tells the agent that editing tools live in the enable_tools packs, giving clear routing for follow-up actions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

manage_backupsA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNo
actionYes
sourceNo
dry_runNo
directoryNo
file_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior5/5

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

The description goes far beyond the single readOnlyHint=false annotation. It discloses that restore overwrites file_path, rotates current content into prev first to make restore undoable, validates the payload before atomic replacement, and that purge deletes only when dry_run=False. These are exactly the behavioral details an agent needs before invoking a destructive tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and information-rich with no fluff, and it front-loads the backup-location concept before diving into actions. The single-paragraph semicolon-heavy structure is a little harder to parse than a bulleted breakdown, but every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 parameters, destructive restore/purge modes), the description covers the critical details: undoability, validation, atomic replacement, dry-run defaults, and scoping. An output schema exists, so return values are not the description's job. It still leaves a few gaps around parameter interactions and edge cases, but it is fundamentally complete for safe invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description carries the full burden and largely succeeds: it explains action values ('list', 'restore', 'purge'), source options ('prev', 'anchor', '.pptx path'), scope values ('orphans', 'slots'), and dry_run's default behavior. Some combinations remain implicit, such as how file_path and directory interact for list, but the essential parameter semantics are covered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool's domain—managing automatic backups in .ks4p-backups/—and enumerates three concrete actions (list, restore, purge) with their effects. It is specific enough to understand what the tool does, though it never explicitly contrasts itself with the sibling create_snapshot, so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context for each action: list for slots/orphans, restore for overwriting from a source, and purge for cleanup with dry-run semantics. However, it does not explicitly state when to prefer this tool over alternatives or when not to use it, leaving the selection guidance implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reorder_slidesA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
orderYes
backupNo
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

The description discloses key behaviors beyond the readOnlyHint annotation: atomic save with two-slot backup, backup=False skipping rotation, durable slide_ids surviving reordering while plain indices do not, and validation rejecting partial lists. This gives the agent important expectations about side effects and persistence.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core action. Every sentence adds either parameter semantics, an alternative tool, or behavioral side effects. No filler or repetition exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with three parameters, mutation semantics, and validation constraints, the description covers all essential aspects: required permutation, index semantics, backup behavior, and when to use a different tool. An output schema exists, so not describing the return value is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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. It thoroughly explains the order parameter as a complete permutation of current 0-based indices, and explains backup semantics including the default rotation behavior. file_path is left to its name, but it is self-explanatory in context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Rearrange the whole deck in one call.' It clearly communicates the scope (whole deck), the operation (reorder), and differentiates itself from one-slide moves by explicitly pointing to move_slide as the simpler tool for that case.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states when to use this tool (reordering the entire deck) and provides an explicit alternative: 'For moving ONE slide, move_slide in the design pack is simpler.' It also specifies that partial lists are refused, so the agent knows a full permutation is required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_and_replaceA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
findYes
liveNoauto
regexNo
scopeNo
backupNo
replaceYes
file_pathYes
match_caseNo
include_notesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Beyond readOnlyHint=false, it discloses atomic saves with two-slot backup, the formatting-preservation guarantee across fragmented runs, regex capture-group refusal in live mode, and skipped slide-number/date fields. These are concrete side-effect and edge-case behaviors an agent cannot infer from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is about 60 words yet covers purpose, safety, regex/live modes, backup, and sibling routing. It is front-loaded with the core operation and every clause adds information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with output schema available, it covers most invocation-relevant behaviors: locking, backup, formatting, and exclusions. The main gap is the scope parameter, whose semantics are not clarified, which keeps it from being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

It adds meaningful behavior for regex (capture groups, refused live) and live (auto/force/off), and mentions the backup behavior. However, with 0% schema description coverage, the description still leaves several parameters unexplained, notably scope, and only implies match_case/include_notes from their names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first clause, 'Deck-wide find and replace', names a specific verb and resource with clear scope, and the rest adds distinguishing traits (fragmented-run safety, SmartArt inclusion, excluded fields). It also points to set_table_cells and apply_edits as different tools, which separates it from nearby siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit routing: bulk cell rewrites go to set_table_cells, batched edits go to apply_edits. It also defines the live parameter's three modes (auto/force/off) with the exact locked-file behavior, which tells an agent when to select each setting.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_placeholder_textA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
liveNoauto
textNo
slideYes
backupNo
file_pathYes
paragraphsNo
placeholderYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

With only readOnlyHint=false in annotations, the description carries the disclosure burden and meets it. It reveals atomic two-slot backup behavior and the backup=False opt-out, explains that live='auto' edits the open PowerPoint copy of a locked file, and notes that styling inherits from the layout rather than accepting direct formatting.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and each clause adds value, but the density and the cryptic 'Free text boxes: graphics pack' aside make it harder to parse than the best examples. It is information-dense rather than ambiguous, but not quite as clean.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-param, 0%-coverage tool, this description covers nearly all non-obvious parameters and behaviors, including output-free return assumptions (output schema exists). The main gaps are the undefined 'file-mode' concept and the unspecified semantics of the 'slide' parameter (index vs ID), which an agent would need to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description is the only source of parameter meaning. It thoroughly documents placeholder (named strings, raw types, index int with file-mode restriction), text (newline/tab parsing), paragraphs (object shape with level 0..8), backup, and live. Only file_path and slide are left self-evident.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening verb 'Fill' plus object 'layout placeholder' states exactly what the tool does, and the parenthetical about inherited styling adds precision. The closing 'Batches: apply_edits' creates a clear boundary against the sibling batch tool, so an agent can select it from the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly names alternatives and conditions: 'Batches: apply_edits' tells the agent when to use a different tool, and 'Free text boxes: graphics pack' indicates a separate path for a different placeholder type. It also restricts idx/paragraphs to 'file-mode only', preventing misuse in other modes, though the 'graphics pack' reference is terse and not a listed sibling.

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. 24 tool updatesv1.2.1
    • Changedapply_edits1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcopy_presentation1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcreate_snapshot1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changeddelete_slide2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / slide / title
        Removed value: -"Slide"
    • Changeddiagnose1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changeddisable_tools1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedduplicate_slide2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / slide / title
        Removed value: -"Slide"
    • Changedenable_tools1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedfind_text4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / compact
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "type": "integer"
        +}
    • Changedfit_text2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / slide / title
        Removed value: -"Slide"
    • Changedget_presentation_info1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_presentation_view3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / limit
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "type": "integer"
        +}
    • Changedget_slide_info4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / limit
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "type": "integer"
        +}
      • removedInput schema / properties / slide / title
        Removed value: -"Slide"
    • Changedget_text3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / limit
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "type": "integer"
        +}
    • Changedget_workflows1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedinsert_slide2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / layout / title
        Removed value: -"Layout"
    • Changedlist_elements4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / compact
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "type": "integer"
        +}
    • Changedlist_hyperlinks1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedmanage_backups1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedremove_hyperlink3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / slide / title
        Removed value: -"Slide"
      • removedInput schema / properties / target / title
        Removed value: -"Target"
    • Changedreorder_slides1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedsearch_and_replace1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedset_hyperlink3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / slide / title
        Removed value: -"Slide"
      • removedInput schema / properties / target / title
        Removed value: -"Target"
    • Changedset_placeholder_text3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / placeholder / title
        Removed value: -"Placeholder"
      • removedInput schema / properties / slide / title
        Removed value: -"Slide"
  2. 1 tool updatev1.1.3
    • Changeddiagnose1 field changed
      • addedInput schema / properties / verbose
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
  3. 24 tool updatesv1.0.0
    • First observedapply_edits
    • First observedcopy_presentation
    • First observedcreate_snapshot
    • First observeddelete_slide
    • First observeddiagnose
    • First observeddisable_tools
    • First observedduplicate_slide
    • First observedenable_tools
    • First observedfind_text
    • First observedfit_text
    • First observedget_presentation_info
    • First observedget_presentation_view
    • First observedget_slide_info
    • First observedget_text
    • First observedget_workflows
    • First observedinsert_slide
    • First observedlist_elements
    • First observedlist_hyperlinks
    • First observedmanage_backups
    • First observedremove_hyperlink
    • First observedreorder_slides
    • First observedsearch_and_replace
    • First observedset_hyperlink
    • First observedset_placeholder_text

TDQS

A4.2/5.0

Scored across 24 tools

Disambiguation4/5

Most tools have clearly distinct jobs, especially around hyperlinks, slides, text search/replace, and backup management. A few read-related tools (get_presentation_view, get_slide_info, get_presentation_info, list_elements, get_text) could be confused at first glance, but their descriptions clearly separate scopes and output formats.

Naming Consistency5/5

Tool names follow a consistent snake_case verb_noun pattern: get_*, set_*, list_*, insert_*, delete_*, duplicate_*, reorder_*, create_*, manage_*, enable_*, disable_*. There are no camelCase outliers or unpredictable verb styles.

Tool Count3/5

24 tools sits at the high end of the borderline range and feels heavy for a core surface. The count is somewhat mitigated by general-purpose tools like list_elements and apply_edits, but the server also advertises many additional pack-gated tools, making the actual surface much larger when fully enabled.

Completeness4/5

The core covers deck reading, text manipulation, slide lifecycle operations, hyperlink management, and safety/backup workflows well. Advanced creation and export features live in optional packs rather than the base set, so there are minor gaps in the visible surface, but enable_tools makes those capabilities discoverable and avoid major dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers