ppt-generator
This server lets you create, edit, review, and export presentations by offloading all LLM generation to the client while the server handles prompts, schemas, validation, rendering, and file management. All generative steps follow a prepare → ingest handshake: the server returns a prompt and schema, the client generates JSON, and the server validates and post-processes.
Project Management
List all projects (topic, slide count, source, creation time)
Load a project's status, outline, or design spec
Presentation Creation
Generate a slide outline from a topic (with audience, duration, purpose)
Generate a
DESIGN.mdcapturing the overall visual theme and narrative intentGenerate individual slide design specs (supports parallel generation)
Finalize the deck: build combined
slides.htmland run deck-wide lint
Slide Editing
Add or update a slide (re-renders and reindexes)
Move or delete slides (pure file operations, no LLM)
Overwrite a single slide's outline entry before regenerating
Make narrow single-component edits (e.g., change a color, tweak one element)
Backfill a design doc for imported slides before component editing
Import & Export
Import an existing PPTX file into an editable project with auto-generated HTML preview
Export as per-slide HTML files plus an iframe container
Export as an editable PPTX file
Design Review
Run a design-rule review on a slide; high-severity findings return fix feedback to feed back into slide editing
Visual QA (Playwright-based)
Capture PNG screenshots of slides server-side
Analyze screenshots via the client's vision model to detect visual defects
Generate and ingest fixes, iterating up to a configurable limit
Finalize the deck container HTML after all QA iterations
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ppt-generatorGenerate a 5-slide presentation on quantum computing trends."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PPT Generator
An MCP (Model Context Protocol) server that automatically generates presentations from a given topic.
LLM generation is offloaded to the client. The server owns the prompts, the output
JSON schemas, and all deterministic post-processing (validation, layout, lint, HTML/PPTX
render); it never calls a model itself. Each generation step is a prepare_* /
ingest_* pair — prepare_* hands the client the prompt + schema, the client generates
the JSON, and ingest_* validates and post-processes it. This means no AWS/Anthropic
credentials and no per-call model cost on the server side — the client's own model does
the generating. See the ADR index under docs/adr/ for the design rationale.
Prerequisites
Python 3.13+
uv package manager
Claude Code (recommended — the plugin bundles the MCP server + workflow skills). Any MCP client that can generate JSON also works — no model API keys needed on the server.
Related MCP server: worklab-tools
1. Install as a Claude Code plugin (recommended)
The repo ships as a Claude Code plugin (manifest at .claude-plugin/plugin.json) that
registers the MCP server and the ppt-outline / ppt-design / ppt-modify /
ppt-visual-qa skills which drive the prepare→generate→ingest workflow.
Add the marketplace and install the plugin from within Claude Code:
/plugin marketplace add haandol/ppt-generator
/plugin install ppt-generator@ppt-generatorThe plugin runs the MCP server via uv run against the plugin's own checkout
(${CLAUDE_PLUGIN_ROOT}), so uv must be on your PATH and the plugin's dependencies
must be synced. If the server fails to start, sync deps once from the plugin directory:
uv sync # run inside the installed plugin's directoryNo model API keys are required — the client supplies the generation.
Alternative — clone and register the MCP server directly
If you are not using the Claude Code plugin system (e.g. Kiro / Claude Desktop, or you prefer a local clone), clone the repo and register just the MCP server:
git clone https://github.com/haandol/ppt-generator.git
cd ppt-generator
uv sync{
"mcpServers": {
"ppt-generator": {
"command": "uv",
"args": ["--directory", "/path/to/ppt-generator", "run", "ppt-generator"]
}
}
}Replace
/path/to/ppt-generatorwith the actual project path. This registers the MCP server only; the workflow skills are Claude Code plugin skills.
Use it as a skill in Kiro / Codex
The workflow is just the MCP server plus the prepare_*/ingest_* handshake, so any
MCP client that can generate JSON can drive it — including Kiro and Codex. The
repo ships the entry points each harness loads automatically (Kiro steering at
.kiro/steering/ppt-generator.md, Codex guidance in AGENTS.md), so you get the same
skill-level guidance without duplicating the prompts.
First clone and sync once (no model API keys needed):
git clone https://github.com/haandol/ppt-generator.git
cd ppt-generator
uv syncKiro — copy the bundled example and fix the path, then Kiro auto-loads the steering:
cp .kiro/settings/mcp.json.example .kiro/settings/mcp.json
# edit .kiro/settings/mcp.json → replace /path/to/ppt-generator with your clone path{
"mcpServers": {
"ppt-generator": {
"command": "uv",
"args": ["--directory", "/path/to/ppt-generator", "run", "ppt-generator"],
"disabled": false,
"autoApprove": ["export_html", "load_project_status", "list_projects"]
}
}
}Use ~/.kiro/settings/mcp.json instead for a global (all-workspace) registration.
Codex — register the MCP server via CLI or ~/.codex/config.toml:
codex mcp add ppt-generator -- uv --directory /path/to/ppt-generator run ppt-generator# ~/.codex/config.toml
[mcp_servers.ppt-generator]
command = "uv"
args = ["--directory", "/path/to/ppt-generator", "run", "ppt-generator"]Codex reads the repo's AGENTS.md for the prepare/ingest workflow guidance. See
docs/harness/kiro-codex.md for the full walkthrough
(Visual QA setup, custom Codex prompt, per-harness entry-point table).
For the full list of environment variables and detailed client / plugin configurations, see docs/harness/environment.md.
2. Usage
You interact in natural language; the client drives the prepare→generate→ingest handshake
behind the scenes (guided by the bundled skills). You don't call the prepare_*/ingest_*
tools by hand — just describe what you want.
Step 1 — Generate or Import PPT
Create new — Prepare your content in a file like context.md, then request via your MCP client:
Read @context.md and generate a PPT using ppt-generator.The client generates the outline JSON, then the per-slide design specs, following the prompts and schemas the server hands back — no model credentials on the server side.
Import existing PPTX — You can also import an existing PPTX file for editing:
Import @presentation.pptx using import_pptx.Importing automatically generates an HTML preview. You can skip Step 2 and directly use per-slide editing, Visual QA, and export features. Parsing is deterministic with no LLM calls.
Step 2 — Provide Project Information
Before outline generation, you will be asked for the following:
Presentation purpose — e.g., "internal tech sharing", "client proposal", "conference talk"
Presentation duration — 3–60 minutes (default: 15 minutes)
Audience type —
general/technical/executivePresenter info — name / title / organization
The flow proceeds Outline → DESIGN.md (design intent) → per-slide Design Spec. You review and confirm the outline before slides are generated, and can edit at each stage.
Step 3 — Edit Individual Slides (Optional)
After design spec generation (or PPTX import), you can modify individual slides. Instead of regenerating everything, you can add, update, delete, move, or make narrow single-component edits:
Add a bar chart comparing performance data below the diagram on slide 3.
Slide 5 has too much text — reduce it to key bullet points with icon layout.
Add a Q&A slide after slide 7.
Make the "LLM" box on slide 4 red.
Move slide 6 to position 2.Add/update/component edits use the prepare/ingest handshake; move and delete are pure file operations with no generation.
Step 4 — Visual QA (Optional)
Detects and fixes visual defects (line breaks, overlaps, margin misalignment, etc.). The server captures screenshots (Playwright); the client analyzes them and generates fixes via the prepare/ingest handshake. Does not run automatically — must be explicitly requested.
Prerequisites:
uv sync --group visual-qa
uv run --group visual-qa playwright install chromiumRun visual QA.Visual QA is an opt-in tool. A suggestion message appears after design spec generation, but it will not run until explicitly requested. If Playwright is not installed, it can be skipped without affecting existing functionality.
Step 5 — Export Files
After the design spec is finalized, request an HTML preview:
Export as HTML and open it.To export in PPTX format:
Export as PPT and open it.Debug Logging
The MCP server uses stdio communication, so stdout logs cannot be viewed directly. Enable file logging to write debug-level logs to a file.
Configuration
When registering the MCP server directly, add PPT_LOG_DIR to the env section:
{
"mcpServers": {
"ppt-generator": {
"command": "uv",
"args": ["--directory", "/path/to/ppt-generator", "run", "ppt-generator"],
"env": {
"PPT_LOG_DIR": "/tmp/ppt-generator"
}
}
}
}When installed as a Claude Code plugin, set
PPT_LOG_DIRin your Claude Code MCP environment for theppt-generatorserver. See docs/harness/environment.md.
Environment Variables
Variable | Description |
| Number of parallel screenshot-capture workers for Visual QA (Playwright, server-side; default: 8). Analysis/fix generation runs on the client |
| Maximum fix iterations for Visual QA (default: 2) |
| Per-slide screenshot capture timeout in seconds (default: 60) |
| Directory for per-project log files (recommended). e.g., |
| Single log file path (legacy). Ignored when |
Log files rotate at 10MB with 2 backups retained.
When
PPT_LOG_DIRis set, a<project_id>.logfile is created for each project.
Viewing Logs
# View logs for a specific project
tail -f /tmp/ppt-generator/<project_id>.log
# View all logs
tail -f /tmp/ppt-generator/*.logDevelopment
uv run ppt-generator # Run MCP server (stdio mode)
uv run pytest # Run all testsDocumentation
Architecture — prepare/ingest handshake, MCP tool list, workflows, project structure
Environment & Config — environment variables, MCP client / plugin config
Kiro / Codex Setup — use the workflow as a skill in Kiro and Codex
Schemas — domain models, client output models, component_hint table
Testing — test writing rules and patterns
ADR — Architecture Decision Records (the client-LLM offload decision lives under the
offload/category)
Available Tools
30 toolscapture_slidesA
Captures slide screenshots via Playwright (server-side). No LLM call.
Phase 1 of visual QA. Renders the current slide HTML to PNG so the CLIENT can
analyze them for visual defects. Requires: playwright install chromium.
Args: project_id: Target project ID (required). slide_indices: 1-based comma-separated indices (e.g. "1,3,5"). Empty = all. iteration: Iteration counter (0-based) — screenshots are versioned per iteration.
Returns: JSON with project_id, iteration, screenshots: [{slide_index, screenshot_path}].
Next: for each captured slide, call prepare_visual_qa_analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| iteration | No | ||
| project_id | Yes | ||
| slide_indices | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavioral traits: requires Playwright and chromium installation, no LLM call, server-side execution, how slide_indices empty means all, and iteration versioning. The return structure is also described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficient, with a clear structure: introductory sentence, requirement note, Args list, Returns list, and Next step. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool being part of a larger pipeline (many siblings like prepare_* and ingest_*), the description provides sufficient context: it is Phase 1 of visual QA, has an output schema (though description already explains returns), and lists required setup. No additional information is needed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description carries the full burden. It explains each parameter: project_id is required, slide_indices are 1-based comma-separated (empty means all), and iteration is 0-based for versioning. This adds essential meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool captures slide screenshots via Playwright, server-side, and distinguishes it from siblings by positioning it as Phase 1 of visual QA. The verb 'captures' and resource 'slide screenshots' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it is used for visual QA, Phase 1, and explicitly states the next step is to call prepare_visual_qa_analysis. It does not explicitly state when not to use it or mention alternatives, but the sequential usage guidance 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
Deletes a slide. No LLM call — pure file removal + reindex.
Args: project_id: Target project ID (required) slide_index: Slide position to delete (1-based).
Returns: JSON string containing project_id and the new slide_count.
After this call, call export_html(project_id=<project_id>) to refresh HTML.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| slide_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the operation is 'pure file removal + reindex', involves no LLM call, and returns a JSON with project_id and new slide_count. It also notes the necessity to refresh HTML afterward. This level of detail is excellent for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, using a few sentences plus bullet points for parameters and return. The most critical information (action, params, return, post-call) is front-loaded. Every sentence earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (delete a slide with two required parameters, an output schema inferred from the return description), the description covers all essentials: what it does, how to use it, what to expect back, and a necessary follow-up action. There is no obvious missing information for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully explain parameters. It does so clearly: project_id as 'Target project ID (required)' and slide_index as 'Slide position to delete (1-based).' These descriptions add essential meaning beyond the schema's type and title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Deletes a slide' with the verb 'deletes' and resource 'slide'. It adds 'No LLM call — pure file removal + reindex', which confirms the nature of the action. Though it does not explicitly compare to siblings, the verb and resource are unambiguous and clearly differentiate from other tools like move_slide.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a post-use instruction ('After this call, call export_html...'), which provides some workflow guidance. However, it does not explain when to use this tool versus alternatives (e.g., move_slide for reordering, or capturing slides). No explicit when-not or alternative comparisons are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_htmlA
Generates per-slide HTML files and an iframe container based on the design spec.
Operates in two modes:
When design_spec_json is provided: Deterministically converts design spec to HTML (no LLM, fast and accurate)
When only project_id is provided: Auto-loads design spec from project directory for HTML conversion (recommended)
Each slide is generated as slides/slide_NN.html, and slides.html is the iframe container.
Args: design_spec_json: Design spec JSON string project_id: Project ID (auto-generated if not specified). When provided alone, auto-loads the design spec
Returns: JSON string containing session_id, slides_html_path, slide_count, project_id
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No | ||
| design_spec_json | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description fully discloses deterministic vs auto-load mode, output file structure, and return fields. No contradictions or omissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections, but slightly verbose (3 paragraphs). Front-loaded purpose but could trim examples of mode details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given two parameters, no required fields, and presence of output schema, description provides all needed context for correct invocation without gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters (design_spec_json, project_id) are explained with their roles and defaults. Schema coverage is 0%, so description compensates fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'Generates' with specific output (per-slide HTML files and iframe container). Distinguishes from siblings like export_pptx by format. Two modes further clarify operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes two operational modes and when to use each, but does not state when to avoid this tool or name alternative tools for different scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_pptxB
Exports the design spec as an editable PPTX file.
Operates in two modes:
When design_spec_json is provided: Generates PPTX directly from design spec (fast and accurate)
When only project_id is provided: Auto-loads design spec from project directory to generate PPTX (recommended)
Args: design_spec_json: Design spec JSON string project_id: Project ID (auto-generated if not specified). When provided alone, auto-loads the design spec
Returns: JSON string containing project_id and pptx_path
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No | ||
| design_spec_json | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses two modes and return format but omits prerequisites, side effects, and error conditions. It implies read-only behavior but does not explicitly state it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Reasonably concise with a clear mode breakdown. The Args section partially repeats info from the mode descriptions, slightly reducing efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the return format and modes but lacks prerequisites (design spec existence), error handling, and differentiation from export_html. Output schema exists but does not fully compensate for missing context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description compensates by explaining the behavior of each parameter (direct generation vs auto-load). Adds meaning beyond the schema's titles and defaults, though could specify the format of the JSON string.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports the design spec as a PPTX file, with specific verb and resource. It explains two modes of operation but does not differentiate from sibling tools like export_html.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides internal mode guidance (recommended auto-load) but no external guidance on when to use this tool vs alternatives such as export_html. Missing when-not-to-use and alternative mentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
finalize_design_specA
Finalizes a freshly generated deck: builds slides.html, runs deck-wide lint.
No LLM call. Call ONCE after all slides have been ingested via
ingest_design_slide. Pass the collected overflow items (if any) as JSON.
Args: project_id: Project ID (required). overflow_json: JSON array of overflow items collected from ingest calls (optional, "" if none).
Returns: JSON with design_spec_dir, slide_count, slides_html_path, lint, overflow.
IMPORTANT — Required follow-up: call export_html(project_id=<project_id>)
and share slides_html_path with the user.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| overflow_json | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that no LLM call is made, builds slides.html, runs lint, and requires overflow_json. Also specifies return fields. No annotations provided, so description carries the burden well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with core action, then structured into args, returns, and important follow-up. Every sentence adds value with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers prerequisites, parameters, return fields, and required follow-up. Given output schema exists, the description supplements it well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description clarifies project_id as required and overflow_json as optional JSON array with default ''. Provides meaningful context beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it finalizes a deck by building slides.html and running lint. Distinguishes from siblings like ingest_design_slide and export_html by specifying the procedure order.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to call once after all slides are ingested via ingest_design_slide and provides a follow-up step to call export_html. Lacks explicit when-not-to-use but positive guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
finalize_visual_qaA
Rebuilds the deck container HTML + full export after visual QA fixes. No LLM call.
Call ONCE after all fix iterations are done.
Args: project_id: Target project ID (required).
Returns: JSON with project_id, slides_html_path.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses 'No LLM call' and implies a build action, but does not detail side effects (e.g., overwriting previous exports), permissions, or error conditions. The return type is mentioned. This is adequate but lacks depth, warranting a 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences plus optional args/returns. It front-loads the main action and usage constraint. Every sentence earns its place with no redundancy. This is an exemplary concise description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter) and the presence of an output schema, the description covers the essential purpose and usage. It lacks detail on what 'rebuilds the deck container HTML' entails (e.g., does it delete previous content?), but for a straightforward finalization step, it is sufficiently complete. Score 4.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions the only parameter 'project_id' and states it is required, adding the modifier 'target' for context. The schema lacks parameter descriptions (0% coverage), so the description compensates minimally. However, it adds no additional meaning beyond the schema (type string, required). Score 3 is baseline for basic parameter mention.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Rebuilds the deck container HTML + full export') and context ('after visual QA fixes'). It distinguishes from sibling tools like ingest_visual_qa_fix and export_html, but does not explicitly differentiate from export_html or export_pptx, which are similar. A score of 4 is appropriate for clear purpose without explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use: 'Call ONCE after all fix iterations are done.' This provides clear context. However, it does not mention when not to use or alternatives, so it scores 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_pptxA
Imports an external PPTX file and converts it to a design spec for editing.
Reads the PPTX file, extracts all design elements (shapes, textboxes, images, backgrounds, speaker notes), and creates a new project with the design spec. HTML preview is automatically generated.
After import, you can use prepare_slide_edit / ingest_slide_edit, prepare_modify_component / ingest_modify_component, export_html, export_pptx, and the visual QA tools on the imported project.
Args: file_path: Absolute path to the PPTX file to import project_id: Project ID (auto-generated if not specified)
Returns: JSON string containing project_id, num_slides, slides_html_path, and warnings
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| project_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes the import process: reads PPTX, extracts design elements, creates new project, generates HTML preview. With no annotations, this adequately discloses core behavior, though some potential constraints (e.g., file size limits) are omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Compact yet comprehensive. Front-loaded with main purpose, followed by detailed behavior, post-import tool list, parameter descriptions, and return info. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers input (file_path, project_id), process (extraction, project creation), output fields (JSON with project_id, num_slides, etc.), and follow-up tools. Missing edge cases like error handling, but overall sufficient for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the 'Args' section gives clear explanations: file_path requires absolute path; project_id is auto-generated if omitted. This fully compensates for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'imports', resource 'PPTX file', and outcome 'converts to a design spec'. Distinct from sibling ingest tools by focusing on external PPTX files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the tool's use case for importing PPTX files and lists subsequent tools to use. Does not explicitly exclude alternative approaches, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_backfillA
Ingests the design_doc backfill for an imported slide (stage="backfill").
Call AFTER a prepare_modify_component that returned stage="backfill".
Saves the backfilled design_doc and returns available_components. Pick a
component id and call prepare_modify_component again.
Args: project_id: Target project ID (required). slide_index: 1-based slide position. backfill_json: The backfill JSON generated by the client.
Returns: JSON with status="backfilled", available_components.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| slide_index | Yes | ||
| backfill_json | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that the tool saves the backfilled design_doc and returns available_components. However, it does not describe side effects, destuctiveness, auth needs, or error conditions. Basic behavior is clear but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact paragraph covering purpose, workflow, parameters, and return value. No wasted words; front-loaded with the main purpose and key workflow instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a workflow-specific tool: explains when to call, what it does, what it returns, and next action. Could add parameter validation info or error cases, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 0% coverage, so description must add meaning. It describes each parameter: project_id as target project ID, slide_index as 1-based, backfill_json as client-generated. Adds some context but not full details like format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it ingests a design_doc backfill for an imported slide with stage='backfill'. The verb+resource is specific, and the description distinguishes it from siblings like `ingest_modify_component` by specifying this is the backfill step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to call AFTER `prepare_modify_component` that returned stage='backfill' and explains the next step. Provides clear workflow context but lacks explicit when-not-to-use or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_design_doc_draftA
Ingests the client-generated DESIGN.md draft and saves DESIGN.md.
Call AFTER prepare_design_doc_draft with the draft JSON you generated.
Args: project_id: Project ID (required). draft_json: Draft JSON (theme + tone + page_requests) from the client. color_theme: Color theme (stored into the theme).
Returns: JSON with project_id and design_doc_path.
| Name | Required | Description | Default |
|---|---|---|---|
| draft_json | Yes | ||
| project_id | Yes | ||
| color_theme | No | dark |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states that the tool saves DESIGN.md and returns a JSON with project_id and design_doc_path, but it does not mention side effects (e.g., overwriting behavior), permissions required, or whether the operation is reversible. This leaves gaps for an AI agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences for purpose and sequence, then bullet-like args and return. Every sentence adds value without redundancy. It is front-loaded with the core action and usage hint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given moderate complexity (3 params, 2 required) and existence of an output schema, the description covers the essential: what it does, when to call, parameter details, and return shape. It could be improved by mentioning potential errors or idempotency, but the context is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% coverage, but the description adds meaning beyond the raw schema. It explains that draft_json contains 'theme + tone + page_requests' and comes from the client, and that color_theme is 'stored into the theme'. This helps the agent understand the parameter content and source, compensating for the schema's lack of detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Ingests the client-generated DESIGN.md draft and saves DESIGN.md.' It specifies the action (ingest and save) and the resource (DESIGN.md draft/file). It also distinguishes itself from siblings by explicitly saying 'Call AFTER prepare_design_doc_draft', which ties it to a specific preceding tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by stating 'Call AFTER prepare_design_doc_draft with the draft JSON you generated.' This indicates the correct sequence. It does not explicitly list when not to use it, but the temporal dependency is sufficient guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_design_slideA
Ingests the client-generated slide spec: validate, normalize, save, render, lint.
Call AFTER prepare_design_slide with the spec JSON you generated.
Args: project_id: Project ID (required). slide_index: 1-based slide number (same as prepare). spec_json: The slide spec JSON generated by the client, matching the schema. color_theme: Color theme ("dark" or "light").
Returns: JSON with status, slide_file, slide_html_path, optional lint and overflow.
After ingesting ALL slides, call finalize_design_spec once.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_json | Yes | ||
| project_id | Yes | ||
| color_theme | No | dark | |
| slide_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description details the internal operations (validate, normalize, save, render, lint) and the return fields. While side effects are implied but not fully detailed, this is a reasonable level of transparency for a tool lacking annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a summary, usage instruction, parameter list, return description, and workflow note. It is concise and front-loaded, with each sentence serving a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, usage guidelines, parameter semantics, and return values, and provides workflow context relative to siblings. For a tool with an output schema, this is sufficiently complete for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description compensates by explaining each parameter: required fields, 1-based slide_index, color theme options, and the nature of spec_json. This adds meaningful context beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Ingests the client-generated slide spec: validate, normalize, save, render, lint.' It also distinguishes its role in the workflow by referencing sibling tools like prepare_design_slide and finalize_design_spec.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to 'Call AFTER prepare_design_slide' and 'After ingesting ALL slides, call finalize_design_spec once.' This provides clear sequencing and context for when 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.
ingest_modify_componentA
Ingests a single-component edit: validate, apply to exactly one element, save, render.
Call AFTER a prepare_modify_component that returned stage="modify".
Args: project_id: Target project ID (required). slide_index: 1-based slide position. component_id: Target component id (same as prepare). modify_json: The ComponentModify JSON generated by the client. color_theme: Color theme ("dark" or "light").
Returns: JSON with modified_element, slide_html_path, optional lint.
After this call, share the returned slide_html_path with the user.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| color_theme | No | dark | |
| modify_json | Yes | ||
| slide_index | Yes | ||
| component_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It describes the process (validate, apply, save, render) and mentions returns (modified_element, slide_html_path, optional lint). It does not disclose destructive potential or auth needs, but for a mutation tool, it gives reasonable transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is very concise, with clear front-loading of purpose, a prerequisite note, argument list, return values, and a post-call instruction. No unnecessary words, well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters (4 required), no enums, and an output schema, the description covers the essential workflow, arguments, and returns. It mentions the output schema fields and provides the critical instruction to share slide_html_path. Minor omissions: no error handling or edge cases, but overall adequate for this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It lists parameters with basic explanations: project_id, slide_index, component_id, modify_json, color_theme. For modify_json, it specifies 'generated by the client' and for color_theme, provides allowed values ('dark' or 'light'). However, further details like modify_json format or constraints are missing, so it adds some but not comprehensive semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it ingests a single-component edit with validate, apply, save, render steps. It specifies it works on exactly one element, distinguishing it from batch edits. However, it does not explicitly differentiate from sibling tools like ingest_slide_edit, but the prerequisite reference helps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Call AFTER a prepare_modify_component that returned stage="modify"', providing clear prerequisite. Lacks when-not-to-use or alternatives, but the context is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_outlineA
Ingests the client-generated outline JSON: validates, injects presenter info, saves.
Call this AFTER prepare_outline, passing the outline JSON you generated
following the returned response_schema.
IMPORTANT: After ingesting, you must show the outline to the user and get
confirmation (number of slides, titles, content composition) before
proceeding to the next step (prepare_design_slide). If the user requests
changes, incorporate them and call ingest_outline again with the revised JSON.
Args: project_id: Project ID returned by prepare_outline (required). outline_json: The outline JSON generated by the client, matching the schema from prepare_outline ({"slides": [...]}).
Returns: JSON string containing outline_path and project_id.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| outline_json | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description fully informs about the tool's behavior: validation, injection, saving, and the return format. Also notes the required user confirmation step, providing complete transparency for a non-destructive data ingestion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise, well-structured with clear sections for Args and Returns, and uses bold for important warnings. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params) and presence of output schema, the description provides all necessary context: workflow ordering, user interaction requirement, and error handling via re-call. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description provides detailed explanations for both parameters, including source (project_id from prepare_outline) and expected format (outline_json matching a specific schema).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool's action: validates, injects presenter info, and saves outline JSON. It differentiates from siblings like prepare_outline by specifying it is called after preparation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to call after prepare_outline, highlights the need to show outline to user for confirmation before proceeding, and explains how to handle user requests for changes by calling again.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_reviewA
Ingests a slide's review result: validate, return issues (report-only).
Call AFTER prepare_review. Does NOT auto-regenerate. If has_high_severity,
the response includes fix_feedback — pass it into prepare_slide_edit( action="update") to regenerate the slide with the review feedback applied.
Args: project_id: Target project ID (required). slide_index: 1-based slide position. review_json: The review result JSON generated by the client.
Returns: JSON with has_high_severity, issues, optional fix_feedback.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| review_json | Yes | ||
| slide_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the burden. It discloses key behaviors: validates, returns issues, is report-only, and does not auto-regenerate. It also describes the return structure. However, it does not clarify whether the review is stored permanently or any side effects beyond reporting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and usage, followed by args and returns. Each sentence is informative, but the first two sentences could be combined for slight conciseness. Overall efficient and well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 params, no annotations, output schema exists), the description covers key aspects: purpose, usage order, behavioral constraints, parameter meanings, and return fields. It could discuss error handling or more detail on review_json content, but it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It lists parameters with brief descriptions: project_id (required), slide_index (1-based), review_json (generated by client). This adds meaning beyond names but lacks detail on expected format or constraints for review_json.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb and resource: 'Ingests a slide's review result: validate, return issues (report-only).' It distinguishes itself from siblings like prepare_review (which must be called first) and ingest_slide_edit (which applies edits), and provides context about its report-only nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance on when to use: 'Call AFTER prepare_review.' It also states what it does not do ('Does NOT auto-regenerate') and provides alternative action when has_high_severity: 'pass it into prepare_slide_edit(action="update")'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_slide_editA
Ingests an add/update slide spec: validate, save (insert for add), render, lint.
Call AFTER prepare_slide_edit with the same action/slide_index and your spec JSON.
Args: project_id: Target project ID (required). action: "add" | "update" (same as prepare). slide_index: 1-based position (same as prepare; use the insertion point for add). spec_json: The slide spec JSON generated by the client. color_theme: Color theme ("dark" or "light").
Returns: JSON with design_spec_dir, slide_count, slide_index, slide_html_path, optional lint.
IMPORTANT — Required follow-up: call export_html(project_id=<project_id>).
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| spec_json | Yes | ||
| project_id | Yes | ||
| color_theme | No | dark | |
| slide_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool validates, saves (insert for add), renders, and lints. It describes the return JSON fields. It does not detail error conditions or side effects beyond state modification, but the behavioral traits are sufficiently conveyed for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a concise opening line, a clear usage instruction, bulleted parameter list, return details, and a highlighted follow-up. Every sentence adds value, and the critical information is front-loaded. No unnecessary text is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the return type with key fields, and the output schema exists to provide full details. It notes a required follow-up, which is crucial for the tool's workflow. Given the complexity of 5 parameters and the presence of many sibling tools, the description provides sufficient context to use the tool correctly, though it could briefly mention prerequisites like project existence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides explicit explanations for each parameter: project_id as mandatory, action with values 'add' or 'update', slide_index as 1-based and same as prepare, spec_json as client-generated, and color_theme with default 'dark'. This adds significant meaning beyond the schema's minimal type/default information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'ingests an add/update slide spec' and the resource 'slide spec'. It lists the sequence of actions: validate, save, render, lint. It distinguishes from the sibling 'prepare_slide_edit' by explicitly stating to call it after that tool, making its role in the pipeline unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to call this tool 'AFTER prepare_slide_edit with the same action/slide_index and your spec JSON'. It also notes a required follow-up call to 'export_html'. While it does not explicitly state when not to use it, the context of sibling tools and the sequential instruction provide clear usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_visual_qa_analysisA
Ingests the client-generated analysis: validate, report issues. No fix applied.
Call AFTER prepare_visual_qa_analysis. If has_issues, call
prepare_visual_qa_fix with the returned issues to generate a fix.
Args: project_id: Target project ID (required). slide_index: 1-based slide position. analysis_json: The analysis JSON generated by the client.
Returns: JSON with has_issues, issues (dicts to feed into the fix step), overall_quality.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| slide_index | Yes | ||
| analysis_json | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It discloses validation, issue reporting, and that no fix is applied. However, it does not state whether the tool has side effects (e.g., storing data) or is idempotent, leaving some uncertainty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences of purpose, then bullet-pointed args and returns. Every sentence adds value, and key info is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description adequately summarizes return values (has_issues, issues, overall_quality) and the workflow. It lacks details on storage or error handling, but overall provides sufficient context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully documents parameters. It adds meaning: 'project_id' is Target project ID and required, 'slide_index' is 1-based, and 'analysis_json' is the client-generated JSON. This is clear and useful, though could detail the JSON structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool ingests client-generated analysis, validates it, reports issues, and explicitly says 'No fix applied.' It also mentions the correct preceding step (prepare_visual_qa_analysis), distinguishing it from sibling tools like prepare_visual_qa_fix.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit workflow guidance: 'Call AFTER prepare_visual_qa_analysis' and 'If has_issues, call prepare_visual_qa_fix...' No ambiguity about when to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_visual_qa_fixA
Ingests the client-generated fix: validate, save, re-render HTML.
Call AFTER prepare_visual_qa_fix. Restores images/slide_type the LLM can't produce. Re-run capture → analysis on this slide to verify (up to max_iterations).
Args: project_id: Target project ID (required). slide_index: 1-based slide position. fix_json: The corrected slide spec JSON generated by the client.
Returns: JSON with status ("fixed" | "unfixed"), slide_html_path.
| Name | Required | Description | Default |
|---|---|---|---|
| fix_json | Yes | ||
| project_id | Yes | ||
| slide_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses validation, saving, re-rendering, restoration of images/slide_type, and re-running capture/analysis. It does not mention authorization or failure handling beyond status, but covers core behavior well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured: a one-line summary, followed by usage guidance, then Args, then Returns. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 required parameters, no enums, and presence of output schema, the description covers purpose, usage, parameters, and return values comprehensively. It is complete for an AI agent to understand and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description's Args section adds meaning: project_id is required, slide_index is 1-based, fix_json is the corrected slide spec JSON. This goes beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool ingests a client-generated fix, with actions validate, save, re-render HTML. It distinguishes itself from the sibling 'prepare_visual_qa_fix' by specifying it should be called after that step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Call AFTER prepare_visual_qa_fix', providing clear sequencing. Also mentions it restores LLM-unproducible content and re-runs verification up to max_iterations, giving context for when to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsA
Retrieves the list of existing projects.
Checks the ~/.ppt-generator/ directory and returns the list of saved projects. Includes each project's ID, topic, slide count, completed steps, source, and creation time. Most recent projects are listed first.
The "source" field indicates how the project was created:
"generated": Created via the prepare_outline / ingest_outline pipeline (has outline)
"imported": Created via import_pptx (no outline — edit the design spec directly)
When to use: Always call this tool first before starting the PPT generation pipeline.
If no projects exist: Start a new project (call prepare_outline).
If projects exist: Guide the user to choose whether to continue an existing project or start a new one.
For imported projects: Skip outline step and work directly with design spec.
Returns: Project list JSON string. Empty array [] if no projects exist.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It describes the directory check, returned fields, ordering, and source semantics. Lacks explicit mention of error handling (e.g., missing directory) but is otherwise transparent for a read-only list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections, including a 'When to use' block and return description. It is slightly verbose but front-loads the main action and uses bullet points for fields. Could be more concise without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and presence of an output schema, the description fully covers the tool's role: listing projects with field explanations, ordering, and how to interpret the source field. It fits seamlessly into the sibling tool ecosystem by providing pipeline context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, and schema coverage is 100% (trivially). The description adds no param info, but the baseline for zero parameters is 4. The description does not need to add param semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool retrieves the list of existing projects from a specific directory, includes detailed field information, and orders by recency. It distinguishes itself from sibling tools by positioning itself as the first call in the pipeline.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use the tool: 'Always call this tool first before starting the PPT generation pipeline.' It then outlines decision points based on results (no projects, existing projects, imported projects), offering clear alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_design_specA
Loads the saved design spec.
Retrieves the previously generated design spec (PptxSlideSpec JSON) from the project directory. The project_id can be passed to export_html(project_id=...) or export_pptx(project_id=...).
Args: project_id: Project ID
Returns: JSON string containing design_spec_dir, slide_count, slide_files
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the return structure (design_spec_dir, slide_count, slide_files) and implies a read operation (load/retrieve). However, it does not mention error handling or side-effects, but the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with two short paragraphs plus args/returns. It is well-structured, though the return section is slightly redundant. Overall, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description provides adequate context: what the tool does, what it returns, and a hint about downstream usage. It could be more complete by clarifying its place in the workflow (e.g., after finalize_design_spec), but it is mostly sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description must add meaning to the parameter. It only repeats 'Project ID' and uses it in an example without elaborating on format or constraints. This adds minimal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Loads'/'Retrieves'), the resource ('design spec'), and the scope ('from the project directory'). It distinguishes from sibling tools like load_outline and export_html/pptx by specifying it retrieves a previously generated PptxSlideSpec JSON.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description hints at usage by mentioning project_id can be passed to export tools, but it does not explicitly state when to use this tool versus alternatives, nor does it provide when-not-to-use or prerequisites. The guidance is implicit and could be improved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_outlineA
Loads the saved outline JSON.
Retrieves the previously generated slide outline from the project directory. The loaded result can be used directly as input for prepare_design_slide or export_html.
Args: project_id: Project ID include_content: If True, returns full slide outline content alongside path. Defaults to False (path and slide_count only).
Returns: JSON string containing outline_path, slide_count, and optionally slides array
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| include_content | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the return format (path, slide_count, optionally slides) but does not mention error handling, prerequisites, or whether the operation is read-only. This is adequate but leaves some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is clear but includes a docstring-style Args section that largely repeats the schema, making it slightly longer than necessary. The first sentence is efficient, but the rest could be condensed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple parameters and existence of an output schema, the description covers the main functionality and return values well. It could briefly mention error cases, but overall it is sufficiently complete for a straightforward loader.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates well by explaining include_content's behavior (returns full content if True, else only path and count) and its default value, adding meaning beyond the schema's minimal titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool loads a saved outline JSON from the project directory, and mentions its use as input for downstream tools like prepare_design_slide and export_html, distinguishing it from siblings like prepare_outline or save_outline_slide.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit context for when to use the tool by stating the loaded result can be used as input for other tools, but does not explicitly compare to alternatives like capture_slides or mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_project_statusA
Loads project status and metadata.
Checks the saved project's topic, slide count, and completion status of each step. The "source" field indicates how the project was created:
"generated": Created via the prepare_outline / ingest_outline pipeline (has outline)
"imported": Created via import_pptx (no outline available)
For imported projects: Since there is no outline, skip outline modification steps. Use prepare_slide_edit / ingest_slide_edit or prepare_design_slide / ingest_design_slide directly to modify slides.
Args: project_id: Project ID
Returns: Project metadata JSON string including source field
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. It explains the 'source' field meanings, details return value (JSON string including source), and implies a read-only operation. No hidden behaviors or contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with a clear intro, detailed paragraphs for source field and imported projects, and explicit Args/Returns sections. No unnecessary words; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description appropriately summarizes the return value. It covers purpose, parameter, and special usage instructions for imported projects, making it complete for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It adds an 'Args' section but only says 'project_id: Project ID', which is minimal. The parameter meaning is clear from context, but the description does not add much beyond the schema's title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it loads project status and metadata, listing specific items (topic, slide count, completion status). It distinguishes between generated and imported projects, providing unique value beyond the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description provides explicit context for when to use: to check status before further operations. It gives specific instructions for imported projects to skip outline steps and use other tools, helping the agent decide when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_slideA
Moves a slide from one position to another. No LLM call — pure file reordering.
Reorders all related files (outline, design_spec, slide HTML) atomically.
After this call, you must call export_html(project_id=<project_id>) to refresh HTML.
Args: project_id: Target project ID (required) from_index: Current slide position (1-based). to_index: Desired slide position (1-based).
Returns: JSON string containing project_id, slide_count, from_index, to_index.
| Name | Required | Description | Default |
|---|---|---|---|
| to_index | Yes | ||
| from_index | Yes | ||
| project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses atomic reordering of related files, no LLM call, and the need for a subsequent export. However, it does not mention potential side effects like undo ability or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections. It starts with the main action, then key notes, then Args and Returns. Every sentence adds value, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 simple parameters and an output schema, the description covers the main purpose, parameter semantics, side effects, and required follow-up. It doesn't detail the output schema but states what fields are returned, which is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description compensates. It explains all three parameters, noting that indices are 1-based, which adds meaning beyond the schema types. No further constraints like valid ranges are given, but it's adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Moves a slide from one position to another' with a specific verb and resource. It also mentions it's a file reordering without LLM call, distinguishing it from siblings like delete_slide or export_html.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states a required post-action: 'After this call, you must call export_html to refresh HTML.' This provides clear usage context, but could be stronger on when to use this tool vs alternatives, though siblings are quite distinct.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_design_doc_draftA
Prepares the prompt for the CLIENT to draft DESIGN.md (design intent).
No LLM call. If DESIGN.md already exists, returns {"skip": true} — reuse the
existing design intent (do not regenerate). Otherwise returns system_prompt,
user_prompt, and project_id. Generate the draft JSON (theme + tone +
page_requests) following the prompt's output_format, then call
ingest_design_doc_draft.
Call this ONCE before generating slides, so every slide shares one design theme and narrative arc.
Args: project_id: Project ID. Loads outline from the saved project. outline_json: Full outline JSON. Optional if project_id is given. color_theme: Color theme ("dark" or "light", default: "dark").
Returns: JSON with system_prompt, user_prompt, project_id, color_theme — or {"skip": true}.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No | ||
| color_theme | No | dark | |
| outline_json | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that no LLM call is made, returns skip if DESIGN.md exists, and returns prompts. It also instructs the agent to generate the draft externally. However, it does not explicitly state side effects (e.g., whether it modifies any state), though it appears to be read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: purpose first, then behavior, then instruction, then args, then returns. It front-loads key info. However, it is somewhat lengthy and repeats parameter details that could be streamlined.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (so return values are partially covered), the description adds preconditions (DESIGN.md existence), dependencies (loads outline from project), and a clear action for the agent (call ingest_design_doc_draft). It covers the tool's role in the workflow despite missing annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains each parameter: project_id loads outline from saved project, color_theme with default 'dark', and outline_json as optional. It adds value by linking project_id to saved outlines and color_theme to dark/light options. However, the format of outline_json is not detailed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Prepares the prompt for the CLIENT to draft DESIGN.md (design intent).' It distinguishes from siblings like 'ingest_design_doc_draft' by explicitly instructing to call this once before generating slides and then use its output to call the ingest tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: call this 'ONCE before generating slides' and what to do if DESIGN.md already exists (returns skip). It also guides the agent to generate the draft and call ingest_design_doc_draft. However, it does not explicitly list when not to use it or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_design_slideA
Prepares the prompt + JSON schema for the CLIENT to generate ONE slide's design spec.
No LLM call. Returns the system prompt, user prompt (with adjacent-slide
context and DESIGN.md directives baked in), the response_schema the spec
must match, and a thinking_budget hint. Generate the slide spec JSON that
conforms to response_schema, then call ingest_design_slide.
Parallelize across slides: call prepare→generate→ingest for each slide
concurrently. Slides are independent server-side. Call
prepare_design_doc_draft/ingest_design_doc_draft FIRST so all slides share
one theme.
Args: project_id: Project ID (required). slide_index: 1-based slide number to generate. outline_json: Full outline JSON. Optional if project_id has a saved outline. total_slides: Total slide count (0 = infer from outline). color_theme: Color theme ("dark" or "light").
Returns: JSON with system_prompt, user_prompt, response_schema, slide_type, thinking_budget, project_id, slide_index.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| color_theme | No | dark | |
| slide_index | Yes | ||
| outline_json | No | ||
| total_slides | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although no annotations are provided, the description discloses key behavioral traits: no LLM call, returns a prompt and schema, and slides are independent for parallel execution. This fully informs the agent of the tool's safe, non-destructive role.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose and key constraint ('No LLM call'), but the description is slightly verbose with the 'Returns' list and could merge some lines without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and an output schema listed but not detailed, the description sufficiently covers the tool's role in the pipeline, its dependencies (prepare_design_doc_draft), and the expected output fields, making it fully actionable for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond schema names by explaining each parameter's role (e.g., slide_index is 1-based, outline_json optional, total_slides default infers). However, it does not specify the JSON format for outline_json or validate constraints, leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it prepares the prompt and JSON schema for generating one slide's design spec, distinguishing it from related sibling tools like ingest_design_slide and prepare_design_doc_draft.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit instructions to generate the slide spec JSON conforming to response_schema and then call ingest_design_slide, plus guidance on parallelization across slides and ordering relative to prepare_design_doc_draft.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_modify_componentA
Prepares a narrow single-component edit on a content slide.
No LLM call. Returns a generation task with stage:
stage="modify": generate the ComponentModify JSON, then callingest_modify_component.stage="backfill"(imported slides with no design_doc): generate the backfill JSON, callingest_backfillto getavailable_components, then callprepare_modify_componentagain with a valid component_id.
Use for narrow changes like "make the LLM box red". For broader changes use
prepare_slide_edit(action="update").
Args: project_id: Target project ID (required). slide_index: 1-based slide position. component_id: Target component id from design_doc.layout leaf. instruction: Natural-language description of the change. color_theme: Color theme ("dark" or "light").
Returns: JSON with system_prompt, user_prompt, response_schema, stage, project_id, slide_index, component_id.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| color_theme | No | dark | |
| instruction | Yes | ||
| slide_index | Yes | ||
| component_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. It discloses that no LLM call is made, describes the return object with stage field, and explains the two-stage workflow including backfill process. Lacks details on error handling or idempotency but covers main behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is moderately long but well-structured with clear sections. The opening sentence is direct, followed by usage context and then parameter list. A bit wordy in the stage explanation but efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, no annotations, and presence of output schema (not shown), the description explains the return JSON structure and workflow stages. It provides enough context for an agent to use the tool correctly, but could include more about possible stage values and error scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description compensates by listing each parameter with brief semantic descriptions (e.g., '1-based slide position', 'Natural-language description of the change'). Adds useful context beyond schema but could provide more constraints or examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it prepares a narrow single-component edit on a content slide, using specific verbs and resource. It explicitly distinguishes from sibling `prepare_slide_edit` by noting the broader scope of that tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use (narrow changes like 'make the LLM box red') and when-not-to-use (broader changes, use `prepare_slide_edit`). It also explains the two possible stages and subsequent actions needed for each.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_outlineA
Prepares the prompt + JSON schema for the CLIENT to generate a slide outline.
This tool does NOT call an LLM. It normalizes inputs, creates/loads the
project, saves the presentation metadata, and returns the system prompt,
user prompt, and the JSON schema the outline must conform to. You (the
client) then generate the outline JSON that follows response_schema, and
pass it to ingest_outline.
IMPORTANT — Required checks before calling: Before calling this tool, you must ask the user to confirm the following items:
Presentation purpose (purpose): e.g., "internal tech sharing", "customer proposal", "conference talk"
Presentation time (presentation_minutes): how many minutes the presentation will be
Audience type (audience_type): general/technical/executive
Presenter info (presenter_name, presenter_title, presenter_org): presenter_org can be empty if not applicable. If the user has not explicitly provided these, never use default values — always ask.
Args: topic: Presentation topic (e.g., "2024 Cloud Computing Trends") purpose: Presentation purpose. Must confirm with the user before setting. audience_type: "general" | "technical" | "executive". Must confirm with the user. presentation_minutes: 3~60 min. Must confirm with the user. num_slides: Recommended number of slides (0 = auto-calculate from presentation time). presenter_name: Presenter's name. Must confirm with the user. presenter_title: Presenter's job title. Must confirm with the user. presenter_org: Presenter's organization (can be empty). Must confirm with the user. project_id: Project ID (auto-generated if not specified)
Returns: JSON string with: system_prompt, user_prompt, response_schema, project_id.
Next step: Generate the outline JSON matching response_schema, then call
ingest_outline(project_id=<project_id>, outline_json=<your JSON>).
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | ||
| purpose | No | ||
| num_slides | No | ||
| project_id | No | ||
| audience_type | No | general | |
| presenter_org | No | ||
| presenter_name | No | ||
| presenter_title | No | ||
| presentation_minutes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully explains what the tool does (normalize inputs, create/load project, save metadata, return prompts and schema) and what it does NOT do (LLM call). It could mention side effects like overwriting existing project data, but the detail is high.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with sections (main purpose, important notes, args, returns, next step). Despite length, every sentence adds value. Front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters (1 required), no annotations, and an output schema, the description covers workflow, user confirmations, output format, and next step. It leaves no ambiguity for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, but the description provides detailed semantics for each parameter, including user confirmation requirements for key parameters (purpose, audience_type, presentation_minutes, etc.). This adds meaning far beyond the schema defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it prepares prompts and schema for outline generation, explicitly says it does NOT call an LLM, and distinguishes from sibling `ingest_outline` by specifying this tool is for preparation and the client generates the outline.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description provides explicit required checks before calling, listing four items to confirm with user. It also gives a clear next step: generate outline JSON and call ingest_outline. This guides the agent precisely 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.
prepare_reviewA
Prepares a design-rule review task for ONE slide (mechanical lint baked in as a hint).
No LLM call. Returns the review prompt + response_schema. Generate the
review JSON, then call ingest_review. Review slides in parallel.
Args: project_id: Target project ID (required). slide_index: 1-based slide position.
Returns: JSON with system_prompt, user_prompt, response_schema, project_id, slide_index.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| slide_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that no LLM call is made and describes the return format (review prompt + response_schema). Without annotations, this is helpful but could mention mutability or side effects. The description is straightforward about its non-destructive nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Highly concise with two well-structured paragraphs covering purpose, usage, arguments, and return. Uses formatting (bold, bullet-like) to highlight key points. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 required params, clear output schema), the description covers all essential aspects: purpose, output format, workflow integration (call ingest_review), and parallelization hint. No gaps are apparent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds crucial details: project_id as 'Target project ID' and slide_index as '1-based slide position'. Since schema had 0% description coverage, this fully clarifies the parameters' meaning and usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it prepares a design-rule review for ONE slide, distinguishes it from other 'prepare_*' siblings by specifying the review focus and mentioning mechanical lint. It also directs to call ingest_review, clarifying its role in the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear instructions: generate review JSON then call ingest_review, and suggests reviewing slides in parallel. Does not explicitly state when not to use or compare to alternatives, but the context implies it's the only tool for this task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_slide_editA
Prepares to add or update ONE slide — updates the outline, returns a generation task.
No LLM call. For add: shifts files and inserts the new outline. For update:
updates the outline (if title/content_summary given). Returns the slide
generation prompt + response_schema. Generate the slide spec JSON, then
call ingest_slide_edit with the SAME action and slide_index.
For narrow single-element tweaks, use prepare_modify_component instead.
Args: project_id: Target project ID (required). action: "add" | "update". slide_index: 1-based position. add: insertion point (-1 = end). update: target. title: Slide title (required for add; required for update on imported projects). content_summary: Content description (required for add; required for update on imported). component_hint: Layout hint (default: "bullets"). slide_type: "title" | "content" | "closing" | "agenda" (default: "content"). speaker_notes: Optional speaker notes. color_theme: Color theme ("dark" or "light").
Returns: JSON with system_prompt, user_prompt, response_schema, action, project_id.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| action | Yes | ||
| project_id | Yes | ||
| slide_type | No | content | |
| color_theme | No | dark | |
| slide_index | No | ||
| speaker_notes | No | ||
| component_hint | No | bullets | |
| content_summary | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behaviors: no LLM call, shifts files for add, updates outline, returns prompt and response_schema. Lacks explicit mention of side effects or permissions, but overall good transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured: summary, usage guidance, parameter list, return value. Front-loaded purpose, every sentence adds value. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete coverage: explains what tool does, how to use, parameter details, return value, and next step (ingest_slide_edit). Output schema exists but description still covers return JSON.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 9 parameters are described with defaults, allowed values, and conditional requirements. The schema has 0% description coverage, so the description fully compensates and adds significant meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool prepares to add or update one slide, updating outline and returning a generation task. Distinguishes from sibling by naming prepare_modify_component for narrow tweaks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (add/update slide) and when not (use prepare_modify_component for single-element tweaks). Also provides conditional requirements for title and content_summary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_visual_qa_analysisA
Prepares the vision analysis task for ONE captured slide. No LLM call.
Returns the system prompt, user prompt, response_schema, and images (the
screenshot path to read). Read the screenshot, analyze it against the spec,
generate the analysis JSON matching response_schema, then call
ingest_visual_qa_analysis. Analyze slides in parallel.
Args: project_id: Target project ID (required). slide_index: 1-based slide position. iteration: Iteration counter matching the capture (default 0).
Returns: JSON with system_prompt, user_prompt, response_schema, images, project_id, slide_index.
| Name | Required | Description | Default |
|---|---|---|---|
| iteration | No | ||
| project_id | Yes | ||
| slide_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It states 'No LLM call' and describes the return structure, but does not disclose potential side effects or idempotency. The lack of destructive/readOnly hints makes the behavioral transparency adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a summary sentence, an important instruction in bold, and an Args section with bullet points. No fluff; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description explains the return fields (system_prompt, user_prompt, response_schema, images, etc.) and the workflow (analyze in parallel, then call ingest). It is nearly complete, though could elaborate on 'analyze against the spec'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description compensates by explaining each parameter: project_id (required), slide_index (1-based position), iteration (default 0). This adds meaning beyond the bare schema. Could include valid ranges or constraints but suffices.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool prepares the vision analysis task for one slide, explicitly notes 'No LLM call', and instructs the agent to read the screenshot, analyze, and call ingest_visual_qa_analysis. This differentiates it from sibling prepare_* tools by specifying its scope and next step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells when to use this tool (after capturing slides, before ingesting analysis) and advises to analyze slides in parallel. It explicitly mentions calling ingest_visual_qa_analysis next. It does not provide explicit when-not-to-use scenarios, but context is clear enough among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_visual_qa_fixA
Prepares the fix task for a slide with detected issues. No LLM call.
Returns the fix prompt, response_schema, and images (the screenshot).
Generate the corrected full slide spec JSON, then call ingest_visual_qa_fix.
Args: project_id: Target project ID (required). slide_index: 1-based slide position. issues_json: JSON array of issues from ingest_visual_qa_analysis. iteration: Iteration counter matching the capture (default 0).
Returns: JSON with system_prompt, user_prompt, response_schema, images, project_id, slide_index.
| Name | Required | Description | Default |
|---|---|---|---|
| iteration | No | ||
| project_id | Yes | ||
| issues_json | Yes | ||
| slide_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explicitly states 'No LLM call.', which is a key behavioral trait. It discloses that the tool returns a fix prompt, response schema, and images, and that the agent must generate full slide spec JSON before calling the ingest tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, around 10 sentences, front-loaded with purpose and key return info. The 'Args' section is well-formatted. It could be slightly more structured by separating input and output, but it's efficient and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters, no annotations, and an output schema (not shown), the description covers inputs, outputs, and workflow context (next step). It mentions the return structure but does not detail the output schema fields, which is acceptable since output schema exists. Minor gap: no mention of prerequisites or errors.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does: each parameter is explained with context (e.g., 'issues_json: JSON array of issues from ingest_visual_qa_analysis', 'slide_index: 1-based slide position', 'iteration: Iteration counter matching the capture'). This provides full semantics beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Prepares the fix task for a slide with detected issues.' It uses a specific verb (prepares) and resource (fix task for a slide), and implicitly distinguishes from the sibling tool 'ingest_visual_qa_fix' by explicitly instructing to call that tool afterward.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after 'ingest_visual_qa_analysis' through the 'issues_json' argument, but does not explicitly state when to use this tool versus other prepare tools like 'prepare_visual_qa_analysis'. It provides the next step but not alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_outline_slideA
Saves (overwrites) a single slide outline to the project.
Creates or overwrites the outline file for a specific slide index. Use this before calling prepare_slide_edit(action="update") to provide the updated slide content that the LLM will use for design spec generation.
For adding new slides: Use prepare_slide_edit(action="add") directly — it accepts outline parameters (title, content_summary, etc.) and handles all file shifts automatically. No need to call this tool first.
For updating existing slides:
Call save_outline_slide to overwrite the outline at slide_index.
Call prepare_slide_edit(action="update", slide_index=...) to regenerate the design. (Or pass title/content_summary directly to the slide_edit update.)
Args: project_id: Target project ID (required) slide_index: Target slide position (1-based). E.g., 1 for the first slide. title: Slide title content_summary: Detailed slide content description for the LLM component_hint: Layout hint ("bullets", "step_cards", "comparison_table", "arch_diagram", etc.) slide_type: Slide type ("title", "content", "closing", "agenda") speaker_notes: Optional speaker notes layout_plan: Content layout plan (arrangement direction, elements, relationships)
Returns: JSON string containing project_id, slide_index, outline_path
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| project_id | Yes | ||
| slide_type | No | content | |
| layout_plan | No | ||
| slide_index | Yes | ||
| speaker_notes | No | ||
| component_hint | No | bullets | |
| content_summary | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses overwrite behavior and return value, but lacks details on prerequisites (e.g., project existence) and error conditions. No annotations to contradict.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections, bullet points, and code examples; no wasted sentences despite thoroughness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers usage flow, return value, and parameter details, but does not address error handling or prerequisites like project existence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 8 parameters are described with meaning, examples, and defaults in the 'Args' section, fully compensating for zero schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Saves (overwrites) a single slide outline to the project' and distinguishes from sibling tools like prepare_slide_edit by specifying when to use each.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use (before prepare_slide_edit for updates) and when not to (use prepare_slide_edit directly for additions), with step-by-step instructions.
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. Dates show when Glama detected each change.
30 tool updates
v0.7.0- First observed
capture_slides - First observed
delete_slide - First observed
export_html - First observed
export_pptx - First observed
finalize_design_spec - First observed
finalize_visual_qa - First observed
import_pptx - First observed
ingest_backfill - First observed
ingest_design_doc_draft - First observed
ingest_design_slide - First observed
ingest_modify_component - First observed
ingest_outline - First observed
ingest_review - First observed
ingest_slide_edit - First observed
ingest_visual_qa_analysis - First observed
ingest_visual_qa_fix - First observed
list_projects - First observed
load_design_spec - First observed
load_outline - First observed
load_project_status - First observed
move_slide - First observed
prepare_design_doc_draft - First observed
prepare_design_slide - First observed
prepare_modify_component - First observed
prepare_outline - First observed
prepare_review - First observed
prepare_slide_edit - First observed
prepare_visual_qa_analysis - First observed
prepare_visual_qa_fix - First observed
save_outline_slide
TDQS
Each tool has a distinct purpose clearly described. Prepare/ingest pairs are for generation and saving, while tools like capture_slides, export_html, and list_projects have unique roles. No overlap or ambiguity.
All tools follow a consistent verb_noun pattern (e.g., prepare_outline, ingest_design_slide, export_html). The verbs are action-oriented and the nouns describe the target object, making the tool set predictable.
30 tools is a high count, reflecting the comprehensive pipeline (outline, design, editing, QA, export, import). While each tool is justified, the number is at the upper edge of 'heavy' and may be overwhelming for simple use cases.
The tool set covers the full lifecycle: project listing, outline creation, design doc, slide design, editing, visual QA, export to HTML/PPTX, and import from PPTX. No obvious gaps for the stated purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Presentations.AI MCP server — create designed slide decks from a topic, text, or document.
AI presentation and report generation: slides, diagrams, PPTX export, live preview MCP App.
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server for generating rough-draft project plans from natural-language prompts.
Related MCP Servers
- FlicenseNot gradedqualityAmaintenanceMCP server for generating slides from natural language, with interactive preview and export to PDF, PPTX, and Markdown.19-
- FlicenseAqualityDmaintenanceMCP server for personal knowledge management providing AI-powered tools for semantic search, audio transcription, image generation, and PPT creation.7-
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI assistants to create, read, and edit Google Slides presentations directly from chat, with 39 tools for presentations, slides, elements, and export.321MIT
- AlicenseAqualityBmaintenanceAn MCP server that turns an AI agent into a slide author, enabling drafting decks in Pandoc Markdown, compiling to PDF or PowerPoint, validating with PNG exports, and pulling in research from the web, Wikipedia, and Semantic Scholar.17MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/haandol/ppt-generator'
If you have feedback or need assistance with the MCP directory API, please join our Discord server