Skip to main content
Glama

google-slides-mcp

A uvx-runnable MCP server for low-level interaction with the Google Slides API.

It is built to be more capable than typical Slides MCPs. In addition to reading presentations and slides as structured objects, it can:

  • Find existing presentations in your Drive — native Google Slides and PowerPoint (.pptx) files — by name, content, or recency ("the last deck I created"), and import a .pptx as a native Slides deck so every other tool works on it.

  • Reuse a "model template" / showcase deck with full fidelity. Copy a styled showcase deck, duplicate the example slides you want (e.g. a 3‑column layout), fill them with content, and prune the rest — leaving a result functionally identical to hand‑editing the showcase (masters, layouts, theme and colors are all preserved).

  • Edit element bounding boxes in points (position/size) without doing affine matrix math, plus raw transform / z‑order / grouping control.

  • Render slides to PNG and diff two renders so you can verify output is pixel‑perfect.

  • Issue raw batchUpdate requests for anything the convenience tools don't cover.

Every tool makes a bounded number of API calls and returns trimmed output, so an LLM driving it has a predictable, finite cost.


Why the template workflow works this way

The Google Slides API has no native cross‑presentation slide copy. duplicateObject only works within one presentation, and recreating a slide's elements by hand in another deck loses fidelity (placeholder inheritance, master styling and theme colors are dropped).

The high‑fidelity pattern this server implements is:

  1. copy_presentation → Drive files.copy clones the entire showcase deck, preserving masters, layouts, theme and color scheme.

  2. catalog_slides → summarize the example slides so you can pick one per section.

  3. duplicate_slide → copy a chosen example slide within the new deck (full fidelity).

  4. replace_all_text / set_element_box → fill content and adjust layout.

  5. delete_objects → prune the original showcase example slides.

  6. render_page / diff_pages → verify the result.


Related MCP server: PPTX MCP Server

1. Google Cloud Console setup (one time)

  1. Go to the Google Cloud Console and create a project (or select an existing one).

  2. Enable the APIs: APIs & Services → Library → enable both Google Slides API and Google Drive API.

  3. Configure the OAuth consent screen: APIs & Services → OAuth consent screen.

    • User type: External (or Internal if you're in a Workspace org).

    • Fill in app name / support email.

    • Add the scopes .../auth/presentations and .../auth/drive.

    • Under Test users, add the Google account you'll authorize with.

    • ⚠️ While the app is in Testing status, refresh tokens expire after 7 days. Re-run the auth command when that happens, or publish the app.

  4. Create credentials: APIs & Services → Credentials → Create credentials → OAuth client ID.

    • Application type: Desktop app.

    • Download the JSON — this is your client_secret.json.

Scope note: this server requests the broad auth/drive scope so it can files.copy any template you own by ID. If you only ever copy decks the app itself created, you can narrow this via GOOGLE_SLIDES_SCOPES (see below), but the showcase workflow on existing decks needs auth/drive. Google requires the fully‑qualified scope URLs (e.g. https://www.googleapis.com/auth/drive); the short names presentations / drive are accepted and expanded for you.

2. Install & first‑time login

Auth uses a standard interactive OAuth 2.0 installed‑app flow built to roll out to a team: you distribute one Desktop OAuth client JSON, and each person logs in once in a browser to cache their own personal refresh token. There is no shared, single‑user token.

You can authorize either way:

Option A — let the server do it (zero extra commands). Just configure the MCP server (next section) with your client secret. The first launch opens a browser for consent automatically and caches the token; every launch after that is silent.

Option B — log in explicitly up front (recommended for headless/server hosts, or to authorize before wiring up your MCP client):

GOOGLE_CLIENT_SECRET=/absolute/path/to/client_secret.json \
  uvx --from git+https://github.com/justparent/google-slides-mcp google-slides-mcp-auth

Either way the token is written to ~/.config/google-slides-mcp/token.json (override with GOOGLE_TOKEN_PATH / TOKEN_PATH). Once published to PyPI you'll be able to drop --from … and just run uvx google-slides-mcp-auth.

If you're deploying somewhere without a browser, set GOOGLE_SLIDES_NO_BROWSER_AUTH=1 so the server never tries to open one, and use Option B to authorize ahead of time.

3. Configure your MCP client

Add the server to Claude Desktop / Claude Code (mcpServers config):

{
  "mcpServers": {
    "google-slides": {
      "command": "uvx",
      "args": [
        "--from", "git+https://github.com/justparent/google-slides-mcp",
        "google-slides-mcp"
      ],
      "env": {
        "GOOGLE_CLIENT_SECRET": "/absolute/path/to/client_secret.json",
        "GOOGLE_TOKEN_PATH": "~/.config/google-slides-mcp/token.json"
      }
    }
  }
}

After PyPI publication: "args": ["google-slides-mcp"].

Environment variables

Variable

Default

Purpose

GOOGLE_CLIENT_SECRET (alias CREDENTIALS_PATH)

client_secret.json

Path to the Desktop OAuth client JSON.

GOOGLE_TOKEN_PATH (alias TOKEN_PATH)

~/.config/google-slides-mcp/token.json

Where this user's cached token is stored (must be writable).

GOOGLE_SLIDES_SCOPES

presentations,drive

Comma‑separated scope override (advanced). Short names or full https://www.googleapis.com/auth/... URLs; short names are expanded.

GOOGLE_SLIDES_NO_BROWSER_AUTH

unset

Set to 1 to disable the automatic browser flow on first launch (headless).

The GOOGLE_* names and the shorter aliases (CREDENTIALS_PATH / TOKEN_PATH) are interchangeable; if both are set, the GOOGLE_* name wins.


Tools

Find / import (Drive discovery)

Tool

Purpose

API calls

search_presentations(name_contains?, full_text_contains?, file_type?, order_by?, max_results?, owned_by_me?, created_after?, modified_after?, page_token?)

Find existing Google Slides and PowerPoint files in Drive.

1

import_presentation(file_id, title?, parent_folder_id?)

Convert a Drive .pptx/.ppt into a native Slides deck (original untouched).

1

The Slides API has no listing endpoint, so discovery goes through Drive. search_presentations covers native decks and PowerPoint files; results flag directlyEditable so you know when an import_presentation conversion is needed first. Recipes: last deck I createdorder_by="createdTime desc", owned_by_me=true, max_results=1; find the corporate templatename_contains="corporate template".

Core read

Tool

Purpose

API calls

create_presentation(title)

Create an empty deck.

1

get_presentation(presentation_id, include_masters?, raw?)

Bounded structured overview of a deck.

1

get_page(presentation_id, page_id, raw?)

Bounded summary of one slide.

1

list_slides(presentation_id)

Minimal index/id/layout list.

1

Raw write

Tool

Purpose

API calls

batch_update(presentation_id, requests)

Apply raw Slides batchUpdate requests atomically.

1

Element / transform / bounding box

Tool

Purpose

API calls

set_element_box(presentation_id, element_id, x_pt, y_pt, width_pt?, height_pt?)

Place/size a box in points.

≤2

update_transform(presentation_id, element_id, transform, mode?)

Apply a raw AffineTransform.

1

set_z_order(presentation_id, element_ids, operation)

Reorder front/back stacking.

1

group_elements / ungroup_elements

Group/ungroup elements.

1

Text

Tool

Purpose

API calls

replace_all_text(presentation_id, mappings, page_ids?, match_case?)

Fill placeholder tokens.

1

insert_text(presentation_id, element_id, text, index?)

Insert text into a shape/cell.

1

set_element_text(presentation_id, element_id, text)

Replace all of one element's text.

1

Template / showcase reuse

Tool

Purpose

API calls

copy_presentation(source_id, title, parent_folder_id?)

Clone a deck preserving full styling.

1

catalog_slides(presentation_id)

Per‑slide descriptor (incl. isSkipped).

1

duplicate_slide(presentation_id, page_id, insertion_index?)

Full‑fidelity in‑deck slide copy.

1

delete_objects(presentation_id, object_ids)

Delete slides/elements (prune).

1

reorder_slides(presentation_id, slide_ids, insertion_index)

Move slides.

1

Iteration / palette

Tool

Purpose

API calls

park_slides(presentation_id, slide_ids)

Hide slides (skip) to keep them as a clone source.

1

unpark_slides(presentation_id, slide_ids)

Unhide parked slides.

1

prune_parked_slides(presentation_id)

Delete all parked slides — final cleanup.

≤2

Rendering / verification

Tool

Purpose

API calls

render_page(presentation_id, page_id, size?)

Render a slide to PNG.

1 (expensive)

diff_pages(presentation_id, page_a, page_b, size?)

Render two slides + pixel diff.

2 (expensive)

render_page/diff_pages use the thumbnail endpoint, an expensive quota operation (300/min per project, 60/min per user). Rendering is per‑page by design — there is no whole‑deck render.


Example: build a deck from a showcase template

copy_presentation(source_id="<showcase_id>", title="Q3 Review")      → new deck id
catalog_slides(presentation_id="<new_id>")                           → pick example slides
duplicate_slide(presentation_id="<new_id>", page_id="<3col_example>", insertion_index=1)
replace_all_text(presentation_id="<new_id>", mappings={"{{title}}": "Results"})
delete_objects(presentation_id="<new_id>", object_ids=["<original_examples>..."])
render_page(presentation_id="<new_id>", page_id="<new_slide>")       → verify visually
diff_pages(presentation_id="<new_id>", page_a="<new_slide>", page_b="<showcase_example>")

Example: port your latest deck into the corporate template

search_presentations(order_by="createdTime desc", owned_by_me=true, max_results=1)
                                                                      → the source deck (or .pptx)
import_presentation(file_id="<source_id>")                            → only if the source is a .pptx
search_presentations(name_contains="corporate template", file_type="google_slides")
                                                                      → the template deck
copy_presentation(source_id="<template_id>", title="Q3 Review (rebranded)")
catalog_slides(presentation_id="<source_id>")                         → read the source content
catalog_slides(presentation_id="<new_id>")                            → pick matching template layouts
duplicate_slide / set_element_text / replace_all_text                 → rebuild each slide on-brand
render_page(presentation_id="<new_id>", page_id="<slide>")            → verify

Iterative / palette workflow

You do not have to assemble the deck in one shot. Every tool is an independent call, so you can keep adding slides across many turns ("great, now add another three‑column slide that says xyz").

The key idea is a palette: because the Slides API can only duplicate slides within one deck, keep the showcase example slides present in the working deck as reusable sources, and duplicate from them on demand. park_slides hides them (skips them in present mode) so they don't clutter the in‑progress deck, and prune_parked_slides removes them all at the very end.

# Once, at the start of a project:
copy_presentation(source_id="<showcase_id>", title="Q3 Review")   → working deck (palette embedded)
park_slides(presentation_id="<new_id>", slide_ids=[<all example ids>])   → hide the palette

# Repeat any number of times, across separate turns:
catalog_slides(presentation_id="<new_id>")                        → find the 3‑column example id (isSkipped=true)
duplicate_slide(presentation_id="<new_id>", page_id="<3col_example>")    → new live slide
set_element_text(presentation_id="<new_id>", element_id="<col1>", text="xyz")
# ...or replace_all_text(..., page_ids=["<new_slide>"]) if the example uses {{tokens}}
render_page(presentation_id="<new_id>", page_id="<new_slide>")    → verify

# Once, at the end (the skill's responsibility):
prune_parked_slides(presentation_id="<new_id>")                   → delete the palette

Why park instead of delete? park_slides keeps every layout available as a clone source for later turns. If you delete_objects an example early, a layout you never instantiated is gone from the deck (there is no cross‑deck copy).

Fallback: recreating a layout

If a needed layout was already pruned, you can rebuild a slide from the deck's layouts (visible via get_presentation(..., include_masters=True)) using createSlide with a slideLayoutReference, plus createShape/createImage via batch_update. This reproduces a layout's placeholders faithfully, but recreating an arbitrary slide's elements this way is not guaranteed pixel‑perfect — theme colors, master styling and placeholder inheritance can be lost. Prefer keeping the palette parked.


Development

uv venv && uv pip install -e ".[dev]"
uv run pytest                 # unit + smoke tests (no network/credentials)
uv build                      # build sdist + wheel

A ready-to-use Claude skill describing the canonical workflow lives at example_skill/SKILL.md.

The codebase is intentionally small and modular so it can back that skill:

Module

Responsibility

auth.py

OAuth installed‑app flow, token cache, login CLI.

client.py

Builds Slides/Drive services; bounded 429/5xx backoff.

units.py

EMU/PT conversion, transform & bounding‑box math.

views.py

Trims verbose API responses into bounded summaries.

ids.py

Collision‑safe object‑ID generation.

template.py

Copy / catalog / duplicate / prune helpers.

search.py

Drive search over Slides/PPTX files; PPTX → Slides import.

render.py

Thumbnail rendering + Pillow image diff.

server.py

FastMCP server wiring the tools together.

Troubleshooting

  • "No cached Google credentials …" — run google-slides-mcp-auth first.

  • Token stopped working after ~7 days — your OAuth app is in Testing status; re-run the auth command or publish the consent screen.

  • insufficient scopes / can't copy a template — ensure the auth/drive scope is granted (re-run auth after enabling it on the consent screen).

  • "Access blocked: Authorization Error" / Error 400: invalid_scope (Some requested scopes were invalid) — the scopes sent weren't fully‑qualified URLs. Use the full https://www.googleapis.com/auth/... form (or the short names presentations / drive, which are now expanded for you) in GOOGLE_SLIDES_SCOPES.

License

MIT — see LICENSE.

Available Tools

23 tools
batch_updateA

Apply raw Slides batchUpdate requests atomically. (1 API call.)

This is the low-level power tool: requests is a list of Slides API request objects (e.g. createSlide, insertText, createShape, updateTextStyle, updatePageElementTransform, duplicateObject ...). See https://developers.google.com/workspace/slides/api/reference/rest/v1/presentations/request Many edits batched into one call still cost a single write quota unit.

Note: updateShapeProperties/updateTextStyle/updatePageProperties require a fields mask; a missing mask is reported as a warning.

Args: presentation_id: The presentation ID. requests: A list of single-key Slides request objects.

Returns: {replies, warnings} where replies is the API response array.

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idYes
requestsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Despite no annotations, the description discloses atomicity, quota cost, and field mask warnings. It also specifies the return format including replies and warnings. It does not cover authentication or rate limits, but those are standard for the API. The description provides substantial behavioral context beyond what annotations would provide.

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

Conciseness4/5

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

The description is well-structured with a summary, details, note, and clear args/returns. It is informative but compact for the complexity. A minor reduction in verbosity could improve conciseness, but it remains effective.

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

Completeness4/5

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

Given the tool's complexity and the presence of many sibling tools, the description is quite complete. It covers inputs, outputs, and key behavioral traits. It doesn't discuss error handling or retries, but the provided output schema (not shown) likely covers return values. Overall, it provides sufficient context for correct usage.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. It does so excellently: explains that presentation_id is the ID, and describes requests as a list of single-key Slides request objects with examples and a link to the full list. This adds significant meaning beyond the schema's bare types.

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

Purpose5/5

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

The description clearly states the tool applies raw Slides batchUpdate requests atomically, distinguishes it as the low-level power tool, and lists example request types with a link to the API reference. It effectively communicates the core function and scope.

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

Usage Guidelines4/5

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

The description explains that batching many edits costs a single write quota and warns about required fields masks for certain operations. It implies context for use but does not explicitly state when not to use or list alternatives, though the 'low-level power tool' phrasing helps differentiate from siblings.

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

catalog_slidesA

Summarize each slide (layout, element makeup, placeholders, title). (1 call.)

Use after copy_presentation to choose which showcase example slide to reuse for each section of the new deck.

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description must convey behavior. It indicates a read-like operation ('summarize') and notes it is one call, but doesn't explicitly state safety or idempotency. Still, it's sufficiently transparent for this type of tool.

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

Conciseness5/5

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

Two short sentences: first describes functionality, second gives usage context. No extraneous words, front-loaded with key information.

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

Completeness4/5

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

The description covers what the tool does and when to use it. It has an output schema, so return values are covered. Minor gap: no mention of prerequisites or limitations, but overall complete for a simple summarization tool.

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

Parameters3/5

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

There is one parameter, presentation_id, with no description in the schema (0% coverage). The tool description does not elaborate on the parameter, but the parameter name is self-explanatory. Baseline for minimal additional value.

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

Purpose5/5

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

The description clearly states that the tool summarizes each slide with attributes like layout, element makeup, placeholders, and title. It also distinguishes itself by noting it is a single-call operation and suggests usage after copy_presentation.

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

Usage Guidelines5/5

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

The description explicitly says 'Use after copy_presentation to choose which showcase example slide to reuse for each section of the new deck,' providing clear when-to-use guidance and a specific context.

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

copy_presentationA

Clone an entire deck (Drive files.copy), preserving full styling. (1 call.)

The starting point of the high-fidelity template workflow: copies the showcase deck with all masters, layouts, theme and color scheme intact, so the copy can be edited exactly as if you were editing the showcase itself.

Args: source_id: The presentation ID of the template/showcase to copy. title: Title for the new copy. parent_folder_id: Optional Drive folder to place the copy in.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_idYes
titleYes
parent_folder_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior3/5

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 explains that the copy preserves styling, masters, layouts, theme, and color scheme, and notes it's one call. However, it does not disclose potential issues like authorization needs or error handling for invalid source_id.

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

Conciseness5/5

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

The description is concise and well-structured: a brief summary, contextual explanation, and a clear Args list. Every sentence adds value without redundancy.

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

Completeness5/5

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

Given the presence of an output schema (context confirms), the description adequately covers the tool's purpose, parameters, and usage scenario for a copy operation. It explains the high-fidelity template workflow, making it complete for agent selection.

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

Parameters5/5

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

With 0% schema description coverage, the description adds crucial meaning via the Args section, explaining source_id as the template ID, title as the new copy's title, and parent_folder_id as optional folder placement. This fully compensates for the schema's lack of description.

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

Purpose5/5

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

The description clearly states the tool clones an entire deck using Drive files.copy, preserving full styling. It distinguishes itself from siblings like create_presentation by specifying it's for copying an existing deck with high fidelity.

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

Usage Guidelines4/5

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

The description provides context as the starting point of a template workflow and explains the benefit of editing the copy like the showcase. However, it does not explicitly state when not to use this tool or suggest alternatives, but the context is sufficient.

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

create_presentationA

Create a new, empty Google Slides presentation. (1 API call.)

Args: title: The title for the new presentation.

Returns: {presentationId, title, url}.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Description notes '1 API call' and explicitly states return values ({presentationId, title, url}). For a creation tool, this is transparent about scope and results, though no annotations are provided.

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

Conciseness5/5

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

The description is succinct: a single sentence for purpose, then short args and returns sections. Efficient and front-loaded with key information.

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

Completeness4/5

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

For a simple tool with one parameter and an output schema, the description covers creation, returns, and API call count. It lacks prerequisites like authentication, but that is generally implied.

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

Parameters5/5

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

The single parameter 'title' is explained in the description: 'The title for the new presentation.' This adds meaning beyond the schema, which has 0% description coverage.

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

Purpose5/5

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

The description clearly states 'Create a new, empty Google Slides presentation', specifying the verb 'create', the resource 'presentation', and the empty nature. This distinguishes it from siblings like copy_presentation or duplicate_slide.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives (e.g., copy_presentation, duplicate_slide). The description only states what it does, leaving the agent to infer usage from context.

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

delete_objectsA

Delete slides or page elements by ID. (1 API call.)

Use to prune the original showcase example slides after duplicating the ones you want.

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idYes
object_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses '1 API call' efficiency and scope (slides or page elements), but lacks details on reversibility, permissions, or side effects. The name implies destruction, so it is minimally adequate.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, followed by a specific usage note. Every word earns its place with no redundancy.

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

Completeness3/5

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

Given output schema exists, return value explanation is optional. However, the description omits important behavioral context like permanence, error handling, or batch behavior. It provides a use case and API call count but remains basic for a deletion tool.

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

Parameters2/5

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

Schema description coverage is 0%, so description must add meaning. It only says 'by ID,' which does not elaborate on presentation_id or object_ids format, constraints, or usage beyond what the schema already shows.

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

Purpose5/5

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

Description clearly states it deletes slides or page elements by ID. Verb 'delete' and resource 'slides or page elements' are specific, and the tool distinguishes itself from siblings like duplicate_slide or park_slides by focusing on removal.

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

Usage Guidelines4/5

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

Provides explicit use case: 'prune the original showcase example slides after duplicating the ones you want.' This guides when to use it, though no explicit when-not or alternatives are given.

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

diff_pagesA

Render two slides and report their pixel difference. (2 expensive calls.)

Renders both pages, computes a normalized mismatch ratio in [0, 1] (0 = pixel identical), and returns a visual diff image highlighting changed regions. Useful to verify a duplicated/edited slide matches the showcase original.

Returns a text summary followed by the diff PNG.

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idYes
page_aYes
page_bYes
sizeNoLARGE, MEDIUM, or SMALLMEDIUM

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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 the performance cost (2 expensive calls), the output format (normalized mismatch ratio and diff image), and the order of return (text summary then PNG). This is comprehensive, though it could mention idempotency or side effects.

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

Conciseness5/5

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

The description is four sentences, each earning its place: main action, cost, output detail, and use case. It is front-loaded with the core behavior and avoids unnecessary verbosity.

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

Completeness4/5

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

Given the presence of an output schema (which covers return values) and sibling tools, the description provides sufficient behavioral and use-case context. It lacks parameter format details but is otherwise complete for a comparison tool with moderate complexity.

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

Parameters2/5

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

Schema description coverage is only 25% (only 'size' has a description). The description does not add meaning for the three required parameters (presentation_id, page_a, page_b). It implies page identifiers are slide IDs but does not clarify format or constraints, leaving a significant gap for agent use.

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

Purpose5/5

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

The description starts with 'Render two slides and report their pixel difference,' clearly stating the verb and resource. It distinguishes from sibling render_page (single slide rendering) and mentions a specific use case (verifying duplicated/edited slides), providing strong purpose clarity.

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

Usage Guidelines4/5

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

The description notes '(2 expensive calls)' to indicate cost and suggests usage for verifying slide matches. While it does not explicitly list when not to use or name alternatives, the context is clear and helpful for making an informed choice.

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

duplicate_slideA

Duplicate a slide within a deck with full fidelity. (1 API call.)

Copies all of the slide's elements and inherited styling. Use it to instantiate a showcase example slide for a new section, then fill it with replace_all_text.

Args: presentation_id: The presentation ID. page_id: The slide to duplicate. insertion_index: Where to place the duplicate (optional).

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idYes
page_idYes
insertion_indexNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavior. It mentions 'full fidelity' and copying elements, but lacks details on error handling, permissions, or side effects.

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

Conciseness5/5

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

The description is concise, front-loaded with the main action, and each sentence provides value. No redundant information.

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

Completeness4/5

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

Given the output schema exists and the description covers key aspects, it is largely complete. However, edge cases and error handling are omitted, making it slightly less than fully comprehensive.

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

Parameters3/5

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

With 0% schema description coverage, the description adds brief explanations for each parameter, clarifying insertion_index optionality. However, more detail (e.g., valid ranges, defaults) would improve.

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

Purpose5/5

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

The description clearly states the tool duplicates a slide within a deck with full fidelity, specifying the verb and resource. It distinguishes from siblings like reorder_slides and insert_text.

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

Usage Guidelines4/5

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

The description provides a specific use case: instantiate a showcase example slide and then fill with replace_all_text. This gives context but does not explicitly exclude alternatives.

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

get_pageA

Get a single page (slide) as a bounded summary. (1 API call.)

Args: presentation_id: The presentation ID. page_id: The page (slide) object ID. raw: Return the full, untrimmed API response instead of the summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idYes
page_idYes
rawNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

No annotations provided, but description discloses key behaviors: makes 1 API call, returns a bounded summary by default, and raw flag returns full untrimmed response. Implicitly 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.

Conciseness5/5

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

Extremely concise: one sentence describing purpose, one line about API call count, and a bullet list of parameters with no unnecessary words.

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

Completeness4/5

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

Has output schema (not shown) so description only needs to hint at return behavior, which it does (bounded summary vs full response). Lacks error handling or edge case info, but acceptable for a simple getter.

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

Parameters2/5

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

Input schema has 0% parameter descriptions. Description only lists parameter names without explaining format or source for presentation_id and page_id. Only raw gets a brief explanation, which adds marginal value.

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

Purpose5/5

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

Clear verb+resource: 'Get a single page (slide) as a bounded summary'. Differentiates from get_presentation (whole presentation) and list_slides (list of slide IDs).

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance. Implies usage for a single slide summary, but does not distinguish from similar tools like render_page or list_slides for detailed work.

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

get_presentationA

Get a presentation as a bounded, structured overview. (1 API call.)

By default returns a trimmed summary (slides, elements, positions, short text snippets) so large decks stay within a finite output budget.

Args: presentation_id: The presentation ID. include_masters: Also summarize layouts and masters. raw: Return the full, untrimmed API response instead of the summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idYes
include_mastersNo
rawNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It explains default behavior (trimmed summary), the raw option, and that it uses 1 API call to keep output bounded. However, it does not explicitly state read-only nature or authorization needs, though 'Get' implies read.

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

Conciseness5/5

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

The description is concise with about six sentences, front-loaded with the main purpose, followed by a note on the bounded output and then the parameter list. Every sentence adds value without redundancy.

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

Completeness4/5

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

Given no annotations and an output schema present, the description adequately covers the tool's behavior and parameters. It explains the summary vs raw behavior and the bounded output. It could explicitly mention read-only or auth requirements, but overall it is mostly complete for an agent to decide usage.

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

Parameters4/5

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

Schema coverage is 0%, so description must document parameters. It provides brief but meaningful descriptions for all three parameters: presentation_id ('The presentation ID'), include_masters ('Also summarize layouts and masters'), and raw ('Return the full, untrimmed API response instead of the summary'). This adds value beyond the schema.

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

Purpose5/5

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

The description clearly states 'Get a presentation as a bounded, structured overview', specifying a specific verb and resource. It distinguishes from siblings by emphasizing the trimmed, summarized nature, contrasting with raw or other tools like get_page or list_slides.

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

Usage Guidelines4/5

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

The description provides context on when to use the raw parameter for full output versus the default summary, but does not explicitly compare to sibling tools like get_page or list_slides, or mention 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.

group_elementsC

Group two or more elements into a single group. (1 API call.)

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idYes
element_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits but only states the basic operation. It omits details on reversibility, element limits, or side effects on other elements.

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

Conciseness3/5

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

The description is extremely concise but at the cost of informative content. It is front-loaded with the core action, but lacks necessary detail, making it borderline under-specified.

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

Completeness2/5

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, no annotations, output schema exists), the description is too minimal. It fails to clarify element requirements or result expectations beyond the single API call note.

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

Parameters1/5

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

Schema coverage is 0%, so the description must explain parameters. It does not mention 'presentation_id' or 'element_ids' at all, leaving their purpose and format entirely undocumented.

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

Purpose5/5

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

The description clearly states the action 'group two or more elements into a single group', which is specific and distinct from sibling tools like 'ungroup_elements'. It also notes the single API call, adding precision.

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

Usage Guidelines2/5

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

No guidance on when to use this tool over alternatives like 'batch_update' or 'set_z_order'. No prerequisites or constraints mentioned, leaving the agent without context for selection.

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

insert_textB

Insert text into a shape or table cell at a character index. (1 API call.)

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idYes
element_idYes
textYes
indexNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations exist, so the description must cover behavioral traits. It only mentions '1 API call' for cost awareness but omits details on side effects, permissions, error handling, or behavior when index is out of range. This is insufficient 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.

Conciseness5/5

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

The description is a single sentence with a parenthetical, front-loading the key action and including an efficiency note. Every word is essential, no redundancy.

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

Completeness3/5

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

With an output schema present, return values need not be explained. However, the description does not clarify how this tool fits with siblings, or prerequisites like the shape needing to exist. It covers the primary capability but leaves gaps in usage context.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It clarifies that text is inserted into a shape or table cell, but does not explain individual parameters like element_id or index (e.g., 0-based). This adds moderate value beyond the schema.

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

Purpose5/5

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

The description uses a specific verb 'Insert' and resource 'text into a shape or table cell', and adds precision with 'at a character index'. This clearly differentiates from sibling tools like set_element_text or replace_all_text.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like set_element_text or replace_all_text. It lacks context for decision-making.

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

list_slidesA

List slides with index, id, and layout reference only. (1 API call.)

The lightest-weight read — use it to find slide IDs before deeper calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

No annotations, but the description discloses it is a lightweight read making one API call, implying no side effects. Could be more explicit about read-only nature, but sufficient for a simple 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.

Conciseness5/5

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

Two efficient sentences: first states action and output, second gives usage guidance. No wasted words.

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

Completeness5/5

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

With output schema present and only one required parameter, the description adequately covers the tool's purpose and lightweight nature, making it complete for this simple operation.

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

Parameters3/5

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

Schema coverage is 0%, but the single parameter 'presentation_id' is self-explanatory. The description adds no additional value beyond the schema, but given the parameter's clarity, a score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool lists slides with specific fields (index, id, layout reference) and distinguishes itself from deeper calls by noting 'only' and 'lightest-weight read'.

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

Usage Guidelines5/5

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

Explicitly advises using it 'to find slide IDs before deeper calls', providing clear context and when-not-to-use alternatives.

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

park_slidesA

Hide slides (mark skipped) so they stay as a clone source. (1 API call.)

Keeps the showcase example/original slides in the deck as a reusable "palette" while hiding them from presentation mode. Duplicate from them across as many turns as you like, then prune_parked_slides at the very end.

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idYes
slide_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions '1 API call' and 'mark skipped', but does not disclose potential side effects, recovery options, required permissions, or rate limits. The description lacks sufficient detail about the tool's 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.

Conciseness5/5

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

The description is three sentences long and front-loaded with the action. Every sentence adds value: stating the action and efficiency, explaining the purpose, and giving a usage pattern. There is no redundant information.

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

Completeness3/5

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

The description covers the core usage but is incomplete. It references 'prune_parked_slides' but not 'unpark_slides', which is a related sibling. It does not mention the return value or any prerequisites. Given the tool's moderate complexity (2 required params, related siblings), the description is adequate but could be more comprehensive.

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

Parameters2/5

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

The input schema has 2 parameters with 0% coverage from the description. The description does not explain what 'presentation_id' or 'slide_ids' represent or provide format details. While the context implies slide_ids are the slides to hide, no explicit mapping is given, so the description adds minimal meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the verb ('Hide slides (mark skipped)') and the resource, and distinguishes from siblings by specifying that slides stay as a clone source. It also references the related tool 'prune_parked_slides' for cleanup.

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

Usage Guidelines4/5

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

The description provides clear guidance on when to use: to keep slides as a reusable palette while hiding them from presentation mode. It explicitly suggests duplicating from these slides and then calling 'prune_parked_slides' at the end. However, it does not explicitly state when not to use this tool or mention alternatives like 'unpark_slides'.

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

prune_parked_slidesA

Delete every parked (hidden/skipped) slide — final cleanup. (<=2 API calls.)

Removes ALL slides currently marked skipped, so use it deliberately as the last step once the deck is assembled.

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Even without annotations, the description discloses destructive behavior ('Delete'), scopes to parked slides, and even notes API call limit (<=2). This gives good transparency beyond just the operation.

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

Conciseness5/5

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

The description is extremely concise: two short sentences with a parenthetical clarification and a usage note, all front-loaded with the core action.

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

Completeness5/5

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

The description covers what, when, and performance for a simple destroy operation. An output schema exists, so return details are not needed. The contextual info is complete given the tool's simplicity.

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

Parameters3/5

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

With only one parameter (presentation_id) and 0% schema coverage, the description does not elaborate on the parameter. However, the parameter's meaning is clear from context (the deck to clean up) and the tool's purpose.

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

Purpose5/5

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

The description uses a specific verb ('Delete') and resource ('every parked slide'), clearly defining the action. It also distinguishes from siblings like unpark_slides by stating it's a 'final cleanup' step.

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

Usage Guidelines4/5

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

The description explicitly says to use it 'as the last step once the deck is assembled,' providing clear context. It does not mention alternatives or when not to use, but the intent is unambiguous.

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

render_pageA

Render a slide to a PNG image for visual verification. (1 expensive call.)

Returns the server-side rendered pixels of the slide — the same image a viewer sees — so you can confirm output looks correct. Rendering is per-page by design (the thumbnail endpoint is an expensive quota operation).

Args: presentation_id: The presentation ID. page_id: The slide object ID. size: LARGE (~1600px), MEDIUM (~800px), or SMALL (~200px) wide.

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idYes
page_idYes
sizeNoLARGE, MEDIUM, or SMALLMEDIUM

TDQS

A4.1/5.0
Behavior3/5

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 the call is expensive and returns the same image a viewer sees, but does not detail side effects, auth requirements, or the exact nature of the returned data (e.g., format, base64 encoding). This is adequate but not exhaustive.

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

Conciseness5/5

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

The description is concise and front-loaded: the first sentence states the purpose. It uses two paragraphs plus an args list, with no wasted words. Every sentence provides value.

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

Completeness3/5

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

The description does not have an output schema to rely on, so it should describe the return format. It mentions 'returns the server-side rendered pixels' but does not specify if it's a base64 PNG blob or binary data. With only 3 parameters and moderate complexity, more detail on the output would improve completeness.

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

Parameters4/5

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

The description adds meaning beyond the schema: it explains 'presentation_id' as the presentation ID, 'page_id' as the slide object ID, and 'size' with illustrative pixel widths (LARGE ~1600px, etc.). The schema only provides a brief description for size, so the description significantly enhances understanding.

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

Purpose5/5

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

The description clearly states the verb 'render', resource 'a slide', and purpose 'for visual verification'. It distinguishes from siblings by explicitly noting it's per-page and that the thumbnail endpoint is expensive, which aligns with the tool's role.

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

Usage Guidelines4/5

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

The description explains the tool is used to confirm output looks correct and mentions it's a per-page operation with a cost implication. It does not explicitly name alternatives or when not to use, but provides sufficient context for an agent to infer appropriate use.

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

reorder_slidesA

Move a block of slides to a new position. (1 API call.)

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idYes
slide_idsYes
insertion_indexYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It reveals that the operation is a single API call and implies moving slides. However, it fails to mention any side effects on other slides, required permissions, or whether changes are reversible. This is minimally sufficient 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.

Conciseness5/5

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

The description is extremely concise: one sentence plus a parenthetical note. Every word adds value, and the key information is front-loaded. There is no redundancy or fluff.

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

Completeness3/5

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

Given the tool's simplicity and the presence of an output schema (not shown), the description is adequate for a basic understanding but lacks details such as whether 'slide_ids' must be contiguous, what happens when 'insertion_index' is out of range, or any error conditions. The output schema might cover return values, but the description itself is not fully complete.

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

Parameters3/5

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

The schema has 0% description coverage, so the tool description must compensate. It hints that 'slide_ids' represent 'a block of slides' and 'insertion_index' is the 'new position'. However, it doesn't explain that 'presentation_id' is required, nor does it clarify ordering, indexing (0-based?), or constraints. The description adds some value but is incomplete.

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

Purpose5/5

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

The description clearly states the action ('move a block of slides'), the resource ('slides'), and the destination ('new position'). It also notes it is a single API call, distinguishing it from batch operations. The sibling tools include duplicate and delete, so this purpose is well differentiated.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'duplicate_slide' or 'park_slides'. There is no mention of prerequisites, context, or when not to use it, leaving the AI agent without decision support.

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

replace_all_textA

Replace all occurrences of each placeholder string. (1 API call.)

The primary content-fill tool for the template workflow: map showcase placeholder text to real content. All replacements run in one batch.

Args: presentation_id: The presentation ID. mappings: {find: replace} pairs. page_ids: Restrict to these pages (optional; default = whole deck). match_case: Case-sensitive matching.

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idYes
mappingsYes
page_idsNo
match_caseNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries full responsibility. It discloses that all replacements run in a single batch (one API call), which is useful. However, it does not mention potential side effects (e.g., overwriting formatting), permissions needed, or error behavior when placeholders are missing. The behavioral disclosure is 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.

Conciseness5/5

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

The description is short and front-loaded with a clear summary. The workflow context and parameter list are concise. Every sentence adds value without redundancy. Ideal structure for quick agent parsing.

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

Completeness4/5

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

Given the tool's moderate complexity (4 params, output schema present), the description covers the primary use case, batch behavior, and optional filtering. It does not address error conditions or permissions, but the essential information for correct invocation is present. The presence of an output schema reduces the need to describe return values.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate. It explains the format and defaults for mappings, page_ids, and match_case. The presentation_id description is trivial but acceptable. Overall, it adds meaningful context beyond parameter names, though examples or constraints would improve clarity.

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

Purpose5/5

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

The description clearly specifies the action ('Replace all occurrences of each placeholder string'), identifies the resource ('placeholder text' in presentations), and distinguishes from siblings by positioning it as the 'primary content-fill tool for the template workflow.' This is specific and conveys a distinct use case.

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

Usage Guidelines4/5

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

The description provides a clear use case (template workflow, mapping placeholder text to real content) and mentions batch operation. However, it does not explicitly state when not to use this tool or contrast with alternatives like insert_text or set_element_text. The context is clear but lacks exclusion guidance.

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

set_element_boxA

Set an element's position (and optionally size) in points. (Up to 2 calls.)

A convenience over updatePageElementTransform that lets you place a bounding box by its top-left corner in points without computing an affine matrix. Reads the element's current transform once (to preserve scale/shear when size is omitted), then applies one absolute transform update.

Args: presentation_id: The presentation ID. element_id: The page element to move/resize. x_pt: Left edge (top-left X) in points. y_pt: Top edge (top-left Y) in points. width_pt: Desired visual width in points (optional; preserves current if omitted). height_pt: Desired visual height in points (optional; preserves current if omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idYes
element_idYes
x_ptYes
y_ptYes
width_ptNo
height_ptNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It discloses that the tool reads the current transform once (to preserve scale/shear) and applies one absolute transform update, and mentions an API limit of up to 2 calls. This provides useful behavioral context.

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

Conciseness4/5

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

The description is moderately concise, with a clear initial statement followed by a docstring section. While not overly verbose, it could be streamlined slightly without losing clarity.

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

Completeness5/5

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

Given the tool's complexity (6 parameters, 4 required, no schema descriptions), the description thoroughly covers the behavior, parameter semantics, and transformation logic. The presence of an output schema reduces the need to document return values.

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

Parameters5/5

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

The input schema has 0% description coverage, so the description must add meaning. It provides a detailed docstring for each parameter, including optional semantics for width_pt and height_pt (preserve current if omitted). This fully compensates for the schema gap.

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

Purpose5/5

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

The description clearly states the tool's purpose: setting an element's position (and optionally size) in points. It distinguishes itself from the sibling `update_transform` by positioning as a convenience for bounding box placement without matrix computation.

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

Usage Guidelines4/5

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

The description explains when to use this tool over `updatePageElementTransform` and notes it is a convenience method. However, it does not explicitly state when not to use it or provide direct comparisons to siblings like `update_transform`.

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

set_element_textA

Replace ALL of a shape's (or table cell's) text in one call. (1 API call.)

Clears the element's existing text and sets it to text in a single batch (deleteText + insertText). Safe to call on an empty element. This is the ergonomic way to fill a freshly duplicated slide when the showcase example uses real text rather than {{placeholder}} tokens.

Args: presentation_id: The presentation ID. element_id: The shape or table-cell object ID. text: The new full text content.

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idYes
element_idYes
textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Without annotations, the description reveals the internal mechanism: clears existing text then sets new text in one batch (deleteText + insertText). It also states safety on empty elements, offering full transparency.

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

Conciseness4/5

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

The description is well-structured but slightly redundant (mentions 'in one call' twice). The Args section is clear, and overall it's efficient without being overly verbose.

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

Completeness4/5

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

Given the simple tool (3 string params) and existence of output schema, the description covers behavior, parameters, and use case. Missing error conditions but adequate for the context.

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

Parameters5/5

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

Schema description coverage is 0%, but the description includes an Args section explaining all three parameters (presentation_id, element_id, text) with meaningful descriptions, compensating fully.

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

Purpose5/5

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

The description clearly states it replaces all text of a shape or table cell in one API call. It distinguishes itself from siblings like insert_text by specifying it replaces all text, and provides a concrete use case (filling duplicated slides).

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

Usage Guidelines4/5

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

The description notes it's safe on empty elements and gives a specific use case. However, it does not explicitly mention when to avoid using it or provide direct comparisons to siblings like insert_text or replace_all_text, but the context is inferable.

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

set_z_orderC

Change the front/back stacking order of elements. (1 API call.)

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idYes
element_idsYes
operationYesBRING_TO_FRONT, SEND_TO_BACK, BRING_FORWARD, or SEND_BACKWARD

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral traits. It mentions atomicity (1 API call) but does not disclose side effects, reversibility, error behavior for invalid element IDs, or whether the operation is destructive. This is insufficient 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.

Conciseness4/5

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

The description is extremely concise at one sentence plus a parenthetical. Every word is useful, but it could benefit from slightly more detail without being verbose.

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

Completeness2/5

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

Despite the tool having 3 required parameters and no nested objects, the description lacks completeness. It does not explain the output (though output schema exists), return values, or error cases. For a tool that modifies a presentation, more context is needed about when changes take effect and how to undo.

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

Parameters2/5

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

Schema description coverage is only 33% (just the operation parameter has a description). The tool description does not add meaning for 'presentation_id' or 'element_ids' beyond their schema types. The operation parameter's possible values are listed in the schema but not explained in the description; the description only mentions 'front/back stacking order' without detailing each operation's effect.

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

Purpose5/5

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

The description clearly states the tool's function: changing the front/back stacking order of elements. The parenthetical '(1 API call.)' adds atomicity. This distinguishes it from sibling tools like 'update_transform' or 'group_elements'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. Does not mention prerequisites, limitations, or when not to use it. For example, it doesn't clarify if this tool works on selected elements or requires prior grouping.

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

ungroup_elementsB

Ungroup one or more groups back into individual elements. (1 API call.)

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idYes
group_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so description must carry full burden. It only states the operation and '1 API call', omitting side effects, permissions, or reversibility.

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

Conciseness5/5

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

Extremely concise: one sentence plus a parenthetical note about API calls. No wasted words.

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

Completeness2/5

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

For a tool with 0% schema coverage and no annotations, the description is too brief. Missing prerequisites, output implications, and context about ungrouping behavior.

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

Parameters2/5

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

Schema description coverage is 0%, yet the description adds no meaning beyond parameter names. No explanation of 'presentation_id' or 'group_ids' format or constraints.

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

Purpose5/5

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

The description clearly states the verb 'Ungroup' and the resource 'groups back into individual elements', distinguishing it from the sibling 'group_elements' tool.

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

Usage Guidelines2/5

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

No guidance on when to use or avoid, nor comparison to alternatives like 'group_elements'. The description only states the action.

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

unpark_slidesC

Unhide slides previously parked (mark not skipped). (1 API call.)

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idYes
slide_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, description carries full burden. Mentions '1 API call' for efficiency but omits details like idempotency, side effects (e.g., error if slides not parked), or required permissions. Lacks transparency 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.

Conciseness3/5

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

Short (2 sentences) but at expense of critical info. Efficient in length but under-specified for a tool with 2 required parameters and no annotation support.

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

Completeness2/5

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

Despite having an output schema and 2 params, description fails to explain return structure or behavioral details. Minimal context leaves agent with gaps for correct invocation.

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

Parameters1/5

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

Schema coverage is 0%, yet description provides no parameter explanations. Agent must infer that presentation_id and slide_ids are needed but no guidance on format or constraints.

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

Purpose5/5

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

Description clearly states action (unhide slides) and target (previously parked slides). The verb 'unhide' and phrase 'mark not skipped' precisely define the operation, distinguishing it from sibling tools like park_slides.

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

Usage Guidelines3/5

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

Implied as inverse of park_slides, but no explicit when-to-use or when-not-to-use guidance. Sibling names provide context but description itself lacks direct alternatives or exclusions.

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

update_transformA

Apply a raw AffineTransform to an element. (1 API call.)

Args: presentation_id: The presentation ID. element_id: The page element ID. transform: An AffineTransform dict (scaleX, scaleY, shearX, shearY, translateX, translateY, unit). unit may be EMU or PT. mode: ABSOLUTE (replace) or RELATIVE (multiply with existing).

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idYes
element_idYes
transformYes
modeNoABSOLUTE or RELATIVEABSOLUTE

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided, so description bears full burden. Discloses it is 1 API call and the transform modes (absolute/relative), but does not detail side effects, permissions, or behavior beyond input.

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

Conciseness4/5

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

Concise and well-structured with the main action first, followed by args. Minor verbosity in the Args block but overall efficient.

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

Completeness4/5

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

Covers core purpose and parameters adequately. Output schema exists but description does not mention return values. Still, it is sufficient for a mutation tool with clear input.

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

Parameters4/5

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

Schema description coverage is only 25%, but description compensates by detailing the AffineTransform fields (scaleX, scaleY, etc.) and the mode parameter values (ABSOLUTE/RELATIVE).

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

Purpose5/5

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

Clearly states 'Apply a raw AffineTransform to an element', specifying the action and resource. The sibling tools do not directly perform affine transforms, so it is distinct.

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

Usage Guidelines3/5

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

No explicit guidance on when to use versus alternatives. The description implies usage for applying raw transforms but lacks when-not or alternative recommendations.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 23 tool updatesv0.1.0
    • First observedbatch_update
    • First observedcatalog_slides
    • First observedcopy_presentation
    • First observedcreate_presentation
    • First observeddelete_objects
    • First observeddiff_pages
    • First observedduplicate_slide
    • First observedget_page
    • First observedget_presentation
    • First observedgroup_elements
    • First observedinsert_text
    • First observedlist_slides
    • First observedpark_slides
    • First observedprune_parked_slides
    • First observedrender_page
    • First observedreorder_slides
    • First observedreplace_all_text
    • First observedset_element_box
    • First observedset_element_text
    • First observedset_z_order
    • First observedungroup_elements
    • First observedunpark_slides
    • First observedupdate_transform

TDQS

A3.7/5.0

Scored across 23 tools

Disambiguation5/5

Each tool targets a specific, clearly distinct operation – from slide duplication to text replacement to element grouping – with no overlapping purposes. The only potential ambiguity (batch_update vs. individual tools) is resolved by batch_update being explicitly the low-level catch-all.

Naming Consistency5/5

All 23 tools follow a consistent verb_noun snake_case pattern (e.g., duplicate_slide, replace_all_text, park_slides). No mixing of camelCase or other conventions, making the naming predictable and easy to remember.

Tool Count4/5

23 tools is on the higher end but appropriate for a comprehensive Google Slides wrapper that covers presentation, slide, element, text, and rendering operations. Slightly above the ideal 3-15 range but each tool serves a distinct purpose.

Completeness4/5

The tool set covers core CRUD and common workflows like template reuse (copy, duplicate, park, prune, replace). Some operations (e.g., shape/image creation) are only accessible via batch_update, which introduces a minor gap for direct high-level tools.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers