Skip to main content
Glama

dial-pptx-mcp

A remote, multi-tenant PowerPoint-generation MCP server for EPAM AI DIAL.

Generates .pptx presentations from corporate templates while preserving the template's theme, layouts, masters, and branding. Designed to be registered as an MCPToolSet in DIAL Quick Apps, with file input/output flowing through DIAL Core file storage.

This project extends GongRzhe/Office-PowerPoint-MCP-Server (MIT) — see Credits.

What this adds over upstream

Area

Upstream

This project

Transport

stdio (single local client)

streamable-http / SSE, container-ready (PPT_MCP_* env vars)

State

process globals, guessable sequential IDs

per-deck UUID handles (unguessable), thread-safe store with TTL + LRU bounds, per-deck locking

File I/O

local disk paths

DIAL Files API: template in via Quick Apps file:data:: references, deck out via export_presentation returning a DIAL file URL

Images

local path or base64

add_image_from_dial_url fetches orchestrator-generated images from DIAL storage server-side, with aspect-ratio-aware placement

Icons

none

render_svg_icon + add_icon_to_slide: the agent draws the icon as SVG (get_icon_guidance holds the style guide), the server rasterizes it to a transparent PNG, has the vision model check the render for artifacts, and holds it under a handle for placement

Deck structure

append-only (add_slide at the end)

duplicate_slide, delete_slide, move_slide, copy_slide_between_presentations — python-pptx has no API for any of these

Speaker notes

none

manage_speaker_notes, carried across duplication, reported by the text-extraction tools

Validation

none

validate_presentation: package, relationship, geometry, chart, table and placeholder-text checks, folded into export

Design

get_design_guidance (deck design as a document the agent reads), render_slide_previews (see the template before building on it) and render_deck_summary_card (show the finished deck as one image)

Charts

one type, one axis per chart

add_combo_chart (mixed series types, secondary value axis) and format_chart_series (colour, labels, trendlines)

Output

.pptx

.pptx, .pdf, or both; PowerPoint 97-2003 .ppt accepted as input

Deployment

Dockerfile (non-root, HTTP defaults) + generic Kubernetes example

The ~30 upstream content/formatting tools (slides, text, charts, tables, connectors, hyperlinks, masters, transitions) are unchanged — see docs/UPSTREAM_README.md for the full tool reference.

Related MCP server: PPT-MCP

Configuration

All environment-specific settings come from environment variables. Nothing is hardcoded.

Variable

Required

Default

Purpose

PPT_MCP_TRANSPORT

no

stdio

http (streamable-http, recommended for DIAL), sse, or stdio

PPT_MCP_HOST

no

127.0.0.1

Bind address; set 0.0.0.0 in containers (the Dockerfile does)

PPT_MCP_PORT

no

8000

Listen port for http/sse

PPT_MCP_ALLOWED_HOSTS

no

dial-pptx-mcp.dial.svc.cluster.local

Comma-separated Host-header allowlist for http/sse. Only listed hosts (plus localhost) are accepted; others get 421. The default matches the standard in-cluster service name — override with your own hostname(s), or set * to disable Host checking entirely (e.g. behind ingress under other names). Loopback binds keep the SDK's localhost-only protection

DIAL_CORE_URL

for DIAL export

Base URL of DIAL Core, e.g. https://dial.example.com. Unset → DIAL upload/download tools return a clear error; local-path tools still work

DIAL_AUTH_MODE

no

auto

auto: credentials from the incoming MCP request first (the end user's bearer, attached by Quick Apps for servers deployed under the DIAL host — exports land in that user's own bucket), falling back to DIAL_API_KEY. caller: incoming credentials only — fail loudly instead of falling back. server: always DIAL_API_KEY (single shared bucket)

DIAL_API_KEY

no

Server's own DIAL API key — the fallback identity in auto mode, the only identity in server mode

DIAL_UPLOAD_FOLDER

no

pptx-mcp

Folder inside the bucket for exported decks

DIAL_PUBLIC_URL

no

Extra host(s) DIAL file links may carry besides DIAL_CORE_URL (comma-separated URLs or hostnames). Needed when the server reaches Core in-cluster but the orchestrator holds public https://chat.example.com/api/files/... links. The bytes are always fetched from DIAL_CORE_URL — only the path is taken from the link

DIAL_IMAGE_MAX_MB

no

20

Largest image add_image_from_dial_url will download and embed. An unparsable value falls back to the default

PPT_MCP_MAX_ICONS

no

100

Rendered icons held in memory for add_icon_to_slide, LRU-evicted (they expire on PPT_MCP_STATE_TTL_SECONDS like presentations)

SVG_ICON_MAX_KB

no

64

Largest SVG source render_svg_icon will rasterize. An icon is a handful of paths; the limit is what stops traced artwork arriving as an "icon". An unparsable value falls back to the default

PPT_MCP_STATE_TTL_SECONDS

no

3600

Idle time before an in-memory presentation expires

PPT_MCP_STATE_MAX_PRESENTATIONS

no

50

Max concurrently held presentations (LRU eviction)

PPT_TEMPLATE_PATH

no

Extra local directories searched by the local-path template tools (:-separated)

VISION_LLM_MODEL

for visual QA

Vision model: the model name (direct endpoint) or the DIAL deployment name (DIAL provider); must accept image input

VISION_LLM_ENDPOINT

direct provider

OpenAI Responses-API endpoint, e.g. https://<resource>.openai.azure.com/openai/responses?api-version=2025-04-01-preview. When unset, the model is called through DIAL Core instead: {DIAL_CORE_URL}/openai/deployments/{model}/chat/completions with DIAL credentials (caller headers first, DIAL_API_KEY fallback)

VISION_LLM_API_KEY

direct provider

Key for the direct endpoint (sent as api-key and Authorization: Bearer)

VISION_LLM_PROVIDER

no

auto

Force the backend: direct or dial (default: direct when VISION_LLM_ENDPOINT is set, else dial)

VISION_LLM_API_VERSION

no

2025-04-01-preview

?api-version= added to the vision call when the endpoint URL doesn't already carry one. Azure OpenAI (and DIAL Core's Azure upstream) reject requests without it — api-version is a required query parameter. The default covers both the Responses API and chat completions with image input; an api-version already present in VISION_LLM_ENDPOINT always wins

VISION_LLM_MAX_SLIDES

no

15

Cap on slides sent per whole-deck inspection (an explicit slides list is never capped)

VISUAL_QA_ENFORCE

no

true

false unregisters the visual QA tools entirely. It governs slide inspection only — render_svg_icon still reviews an icon whenever a vision model is configured

VISUAL_QA_MAX_ITERATIONS

no

10

Inspect/repair rounds per visual_repair_slides call (overridable per call)

VISUAL_QA_EXPORT_GATE

no

false

true also runs a whole-deck inspect-repair loop inside export/save and refuses unverified decks

VISUAL_QA_ON_UNRESOLVED

no

report

Export gate only: report fails the export with the issue list, export_as_is ships the deck

VISUAL_QA_ON_ERROR

no

block

Export gate only: allow exports when inspection itself cannot run

SOFFICE_PATH

no

soffice on PATH

LibreOffice binary used to render slides (the Docker image includes LibreOffice)

LOG_LEVEL

no

INFO

DEBUG, INFO, WARNING, ERROR or CRITICAL. One log line per event on stderr — see Logging. An unrecognized value falls back to INFO rather than failing startup

Copy .env.example to .env for local runs — the server loads it at startup, and .env is gitignored.

Running

Local (stdio, for MCP-client desktop use):

pip install -r requirements.txt
python ppt_mcp_server.py

Remote (streamable-http):

docker build -t dial-pptx-mcp .
docker run -p 8000:8000 -e DIAL_CORE_URL=https://dial.example.com -e DIAL_API_KEY=... dial-pptx-mcp
# MCP endpoint: http://<host>:8000/mcp

Kubernetes: see deploy/kubernetes.yaml (generic example — replace placeholders).

DIAL Quick Apps integration

Register the deployed server as an MCP tool set in your Quick App manifest:

{
  "name": "powerpoint",
  "description": "Generate PowerPoint presentations from corporate templates",
  "type": "mcp",
  "mcp_server_info": {
    "url": "https://YOUR-DEPLOYED-HOST/mcp",
    "protocol": "streamable_http",
    "authorization": null
  },
  "attachment": {
    "supported_types": ["*/*"],
    "propagate_types_to_choice": [
      "application/vnd.openxmlformats-officedocument.presentationml.presentation"
    ]
  }
}
  • propagate_types_to_choice makes the exported .pptx attachment visible to the end user in DIAL Chat (tool-call results are hidden by default).

  • Deploy the server under the DIAL host (behind DIAL Core routing) for per-user storage. Quick Apps attaches the end user's Authorization: Bearer only to MCP servers whose URL starts with the DIAL host — with it, the default auto mode uploads every export to that user's own bucket. For a server at an external URL, Quick Apps sends no user credentials (it deliberately refuses to forward api-key/authorization as custom headers), so auto falls back to the server's DIAL_API_KEY and exports land in the server's single bucket; set DIAL_AUTH_MODE=caller if you'd rather exports fail loudly than fall back.

  • Template input: the orchestrating agent passes the template to create_presentation_from_template_content as file:data::files/{bucket}/{path} — Quick Apps' file preprocessing resolves that reference to a data: URI before this server receives it (base64 via file:base64:: also accepted). Note Quick Apps' default 10 MiB file-loading limit (features.file_loading.size_limit) if your templates are large.

  • Deck output: export_presentation uploads to DIAL file storage and returns the files/{bucket}/{path} URL; the tool description instructs the agent to include it in its final answer.

Images (orchestrator-generated)

The server does not generate images — it embeds them. The split is: the orchestrator generates, the MCP inserts, and only a short URL travels between the two.

Tool

Use it for

add_image_from_dial_url(presentation_id, slide_index, image_url, left?, top?, width?, height?, fit?)

Anything the orchestrator produced with an image model. It calls the image deployment (a DIAL Core deployment sits next to the vision one), saves the result to DIAL file storage, and passes the files/{bucket}/{path} URL here; the server downloads the bytes itself with the caller's own DIAL credentials (same DIAL_AUTH_MODE resolution as export)

manage_image(..., source_type="base64")

Small assets only, and deployments not running under the DIAL host

Prefer the URL tool. A 1024×1024 PNG is ~1–2 MB, so passing it as base64 pushes ~2 MB of payload through the agent's context on every insertion — enough to wreck the iteration budget on a multi-image deck.

Placement is aspect-ratio aware. slide_index is 0-based (like the other content tools; visual QA slide numbers are 1-based). Give width and height to define the box the picture should occupy, and fit decides how it relates to that box:

  • contain (default) — largest undistorted size that fits, centred in the box. Safe for photos and illustrations.

  • cover — fills the box exactly, cropping the overflowing edges symmetrically (python-pptx crop, no re-encoding).

  • stretch — forces the exact box, distorting the image. Visual QA can move, resize and delete a picture, but it cannot un-distort one, so avoid stretch unless you mean it.

Pass only one of width/height to scale proportionally, or neither to keep the image's natural size — clamped to the slide, so a large generated PNG never hangs off the edge. The response reports the geometry actually applied ("placed"), which under contain may be smaller than the box you asked for; use it to lay out the text beside the image. A half-and-half slide on a 13.33in deck is text at left=0.8, width=5.6 and the picture at left=6.9, top=1.2, width=5.6, height=4.5.

Telling the agent to use it. Image generation is the orchestrator's job, so it belongs in the Quick App's system prompt:

When a slide would be stronger with a visual — a supporting image beside the
text, a cover image, an icon — generate it with the image model, upload it to
DIAL file storage, and pass the file URL the upload returned to
add_image_from_dial_url. Never paste image data into the conversation, and
never pass a public web URL — that tool only reads DIAL file storage. Give
width and height for the box you want it to fill and leave fit at "contain"
so the image is not distorted; for a text-left/image-right slide use roughly
half the slide width for each.

How the server is allowed to read the file. DIAL isolates deployments from each other: when the agent calls this toolset, DIAL Core mints a per-request key scoped to it, and that key can read exactly two places — its own bucket and Users/{user}/appdata/{this-deployment}/. A generated image lives in the image deployment's appdata (Users/{user}/appdata/{image-deployment}/…), which is neither. Conversation attachments are not auto-shared onto a toolset key either.

The bridge is a schema flag. Before each MCP call, Quick Apps scans the tool's input schema and, for every parameter marked "dial_url": true, asks Core to grant that specific file to the toolset's per-request key. add_image_from_dial_url declares it on image_url:

"image_url": { "dial_url": true, "title": "Image Url", "type": "string" }

Two consequences worth knowing. Pass the URL exactly as received, in that parameter — the grant covers the value Quick Apps saw, so a URL reassembled by hand, or carried in some other argument, is not granted and still 403s. And this is why the flag matters more than DIAL_AUTH_MODE: without it no credential setting helps, because no identity available to this server owns that file. get_dial_storage_info reports the identity and bucket this server actually has, for when a read is still refused.

What counts as an image URL. A DIAL file reference: the files/{bucket}/{path} URL an upload returns, or the full https URL of that file on this DIAL installation — the .../api/files/{bucket}/{path} link an image deployment hands back is accepted as-is, as is the Core API's /v1/files/... form. Arbitrary web URLs are refused: this server is not a web fetcher, and an agent that finds a picture online must store it in DIAL file storage before inserting it. If your file links carry a different hostname than DIAL_CORE_URL (public chat host vs. in-cluster service), list it in DIAL_PUBLIC_URL.

Generated images are in scope for visual_repair_slides like any other shape. DIAL_IMAGE_MAX_MB (default 20) bounds what the server will download; non-raster input is refused with a message telling the agent to ask its image model for PNG or JPEG rather than SVG.

Icons (agent-drawn SVG)

Icons are the one visual an image model is bad at and a stock library only half-solves. The library problem is background: a stock icon file carries an opaque white background, so the moment a card is tinted or a panel is brand blue it shows as a pale rectangle — and no library has "regulatory submission" anyway.

So icons follow the same split as images, with one extra step. The orchestrator draws, the server renders and checks, the orchestrator places.

Tool

What it does

get_icon_guidance()

Serves docs/ICON_GUIDANCE.md: when a drawn icon is the right answer, the two variants (line art for a light surface, white-on-filled disc for a coloured one), the rules that keep a set coherent, and eleven worked path examples to adapt

render_svg_icon(svg, concept?, size?, background?, slide_background?, review?)

Validates and rasterizes the SVG to a transparent PNG (PyMuPDF), has the vision model review the render, and returns an icon_id

add_icon_to_slide(presentation_id, slide_index, icon_id, left?, top?, size?)

Places a rendered icon on a slide, square and centred in a size-inch box

Why the render is reviewed before it is placed. A hand-written path is valid XML long before it is a recognisable pictogram: an unclosed subpath fills into a blob, a stray coordinate leaves a hairline across the canvas, a mistyped viewBox puts the drawing off the edge. The agent cannot see any of that, and by the time visual QA meets the icon on a slide the repair whitelist offers only move, resize and delete — the deck loses the icon rather than getting a correct one. So the icon is reviewed alone, at full size and downscaled to the ~1in it will actually occupy, composited onto slide_background so contrast is judged against the real surface. A failed review keeps nothing: there is no icon_id to place, and the agent is told to fix the SVG and call again. Two cheap failures beat one broken slide.

Two checks run before the model is asked anything, because they name the defect more precisely than a verdict can: a render with no ink at all is refused outright ("the shapes are probably outside the viewBox"), and one that is nearly blank or nearly solid comes back with a render_note saying which.

Input is untrusted. The SVG is written by a model and parsed in this process, so render_svg_icon refuses DOCTYPE/ENTITY declarations (the XXE shape), <script>, <foreignObject>, embedded <image>, event-handler attributes, and any href/url() that leaves the document — an SVG that fetches is an SSRF primitive just like a URL parameter. Text elements are refused too, for a second reason: glyphs would come from whatever font the rasterizer substitutes, which is exactly the artifact class this feature exists to catch. Line art only — <path>, <circle>, <rect>, <line>, <polyline>, <polygon>.

The icon does not go through DIAL file storage, and that is not an optimisation. A file this server writes lands in {user}/appdata/dial-pptx-mcp/, which only the end user and this deployment may read. Placing it again would mean the orchestrator asking DIAL Core to grant that file to the toolset key before the call — and the orchestrator is neither of those two identities, so Core refuses with 403 Access to resource is forbidden before the tool is even entered. (Exports do not hit this: their URL goes to the end user, who owns the bucket. An image-model PNG does not either: it arrives as a conversation attachment the orchestrator can see and therefore share.) The bytes were rendered in this process, so they simply stay here, under an unguessable icon_id handle with the same TTL and LRU bounds as a presentation handle — PPT_MCP_MAX_ICONS caps how many.

Rendering is PyMuPDF, already a dependency for the QA rasterizer, so icons work wherever the server runs — no LibreOffice, no new native library. Only the review needs a vision model; without one the icon still ships, with a note saying it was not checked. That check follows the model, not VISUAL_QA_ENFORCE: switching off slide inspection and repair is a different decision from whether one icon can be looked at.

Telling the agent to use it. Drawing is the orchestrator's job, so it belongs in the Quick App's system prompt:

When a slide needs an icon — a row of cards, the steps of a process, a section
marker — do not ask the image model for one. Call get_icon_guidance once, write
the icon yourself as SVG following it, and pass it to render_svg_icon with
concept set to what it depicts and slide_background set to the colour it will
sit on. If the response says the review did not pass, fix the SVG as the issues
say and call it again; do not place an icon that has no icon_id. Then place
the icon_id with add_icon_to_slide (not add_image_from_dial_url — the icon is
not in DIAL storage), about size=0.7 in a card and 1.0-1.2 beside a section
title. Draw all of a deck's icons in one style, and reuse an icon_id wherever
that icon repeats. If the user's template already has icons for what you need,
use those instead.

Building a deck

These tools cover the parts of deck construction upstream had no route to.

Slide structure

python-pptx's only entry point is slides.add_slide(layout), which appends a bare slide built from a layout. A corporate template's designed slides — its artwork, panels, logo placement, the three-card row someone laid out — live on the slides themselves and cannot be reached that way.

Tool

What it does

duplicate_slide(presentation_id, slide_index, insert_after?, count?)

Copies a slide with all of its content and formatting. Pictures are shared (same bytes); charts, SmartArt and embedded objects are cloned, so editing the copy's chart does not rewrite the original's. Speaker notes travel with it

delete_slide(presentation_id, slide_index)

Removes a slide and its package relationship

move_slide(presentation_id, slide_index, new_index)

Reorders

copy_slide_between_presentations(source, slide_index, target, ...)

Merges decks. Everything the slide references is cloned into the target package; inherited theme colours and fonts re-resolve against the target master, so the copy is worth inspecting

manage_speaker_notes(presentation_id, operation, slide_index?, text?)

get / set / clear. Notes belong in the notes pane — a "notes" textbox is visible to the audience

The recommended flow for template work is duplicate, then fill: find the template slide whose structure fits the content, duplicate it, and replace the text.

Structural validation

validate_presentation(presentation_id, min_severity?) is the axis visual QA cannot see. A deck with a dangling relationship or a chart with no series renders in LibreOffice and opens in python-pptx — the two things the visual pass relies on — and still arrives broken.

It checks the package (round-trip, content types, relationship resolution, slide ids, notes parts shared between slides, orphan parts) and the slides (shapes off the canvas or zero-sized, charts with no data or mismatched series lengths, empty tables, pictures stretched off their aspect ratio, leftover placeholder text such as Lorem ipsum / Click to add title / TODO / [insert ...]). Each problem names the slide, the shape, what is wrong and the tool that fixes it.

Severities: error (PowerPoint may refuse the file), warning (a defect the user would notice), info (advisories — notably the font caveat below). It runs on every export too, as a non-blocking "structure" summary, and it is fast: no rendering, no model call.

Empty placeholders are deliberately not reported: PowerPoint draws their prompt text only in edit view, so they are invisible in a slideshow and in the PDF, and a template has dozens.

Design guidance

get_design_guidance(section?) serves docs/DESIGN_GUIDANCE.md — deck structure, layout and spacing, type scale, colour, charts and tables, images, the visual habits that make a deck read as machine-generated, and the build loop. Call it with no argument for the whole document plus the section list, or name a section (type, colour, layout, …) mid-build.

Its first section is the one that matters most here: this server's default case is a corporate template, so the right move is to inherit the user's design and duplicate their slides, not to invent a palette over the top of their brand.

Slide previews

render_slide_previews(presentation_id, slides?, describe?, columns?) renders the deck into labelled contact sheets, uploads them to DIAL storage (so a person can look at them), and — since the agent cannot see an image — has the vision model describe what each slide is structurally suited to. Use it right after opening a template: layout names and indices cannot tell you which of eight near-identical layouts holds the three-card row. Registered only where LibreOffice is present.

The finished-deck summary card

render_deck_summary_card(presentation_id, title?, columns?, filename?) tiles every slide into a single labelled JPEG, uploads it to DIAL storage and returns the image_url. It is meant for the end of the job, attached beside the exported .pptx: the user sees the whole deck in the chat without downloading a file and opening PowerPoint.

It is deliberately the mirror image of render_slide_previews. That tool is for the agent — several sheets, capped at 24 slides, and the part that matters is the vision model's description of each slide, because the agent cannot see a picture. This one is for the person: always exactly one image, no cap and no vision call. The grid's column count is fitted to the deck's length so a 60-slide deck comes back roughly landscape rather than as a tall stripe, and cells shrink to keep the card inside 2000×2600px — but never below 150px wide, since a card that scrolls beats one whose thumbnails are unreadable. Registered only where LibreOffice is present.

Charts

add_chart builds one chart group: every series the same type, on one value axis. add_combo_chart covers what that cannot — bars with a target line across them, or two measures whose units differ so much that one flattens to nothing on a shared axis:

{"categories": ["Q1", "Q2", "Q3"],
 "series": [
   {"name": "Revenue", "values": [10, 12, 15], "type": "column", "color": [31, 73, 125]},
   {"name": "Margin",  "values": [0.21, 0.23, 0.22], "type": "line_markers",
    "secondary_axis": true, "number_format": "0.0%", "data_labels": true}]}

The result is a real editable PowerPoint chart, not a picture — the embedded workbook and category caches are preserved. format_chart_series restyles one series of any existing chart: brand colour, data labels and their position, number format, trendline (linear, movingAvg, exp, log, poly, power).

Output formats

export_presentation(presentation_id, filename?, format?) takes format="pptx" (default), "pdf", or "both" — the pair is usually what a user asking to "share" a deck wants. The .pptx stays first in files and in the flat file_url. A PDF that cannot be rendered is reported as a note beside the delivered deck rather than a failed export.

create_presentation_from_template_content accepts a PowerPoint 97-2003 .ppt and converts it on the way in. Both conversions need LibreOffice.

Visual QA (agent-driven inspect and repair)

When a vision LLM is configured (VISION_LLM_*), the server registers two tools the orchestrating agent calls whenever it wants — typically right after building each slide, not only at the end:

Tool

What it does

visual_inspect_slides(presentation_id, slides?, focus?, reference_presentation_id?)

Renders the selected slides (LibreOffice → PDF → PNG) and has the vision LLM review them for template/brand fidelity and text placement problems (see below). Read-only: returns {"passed", "issues": [{slide, severity, description, suggested_fix}]}

visual_repair_slides(presentation_id, slides?, focus?, max_iterations?)

Inspects, then repairs the deck itself and re-inspects, looping until the slides pass or the budget runs out. The LLM is shown the issues, the affected slides' structure and their images, and returns a plan of whitelisted operations (move/resize shape, set/fit font size, autofit, set text, word wrap, delete shape, table column width/row height/cell text, chart legend, data labels and axis titles) that are validated and applied with python-pptx

slides is a list of 1-based slide numbers; omit it to work on the whole deck. Issue slide numbers are always absolute deck positions, even when only a subset was rendered, and a scoped repair call never touches a slide outside slides. Because LibreOffice converts the whole deck either way, a narrow selection saves the vision call and the repair round, not the render.

max_iterations defaults to VISUAL_QA_MAX_ITERATIONS (10) and can be lowered per call for a quick single-slide pass. A "passed": false result is a report, not a retry request: the agent should edit the content itself and inspect again, or tell the user what remains.

Export

export_presentation does not run QA. It reports what it knows — "visual_qa": "passed" | "unverified" | "unavailable" — and adds a note when the deck was never inspected or was edited since its last passing inspection. Only a clean whole-deck inspection marks a deck passed; a scoped call clears nothing.

Operators who want the old guarantee that no unverified deck ever leaves the server set VISUAL_QA_EXPORT_GATE=true: export/save then run the whole-deck inspect-repair loop for dirty decks and refuse the export if it cannot reach a pass. With the gate on, VISUAL_QA_ON_UNRESOLVED chooses report (default — fail the export with the unresolved issue list) or export_as_is, and VISUAL_QA_ON_ERROR=allow lets exports through when inspection itself cannot run (renderer/LLM outage — default blocks). Both variables are inert while the gate is off.

What the reviewer checks

Text is not only in text boxes, so neither is the review. Besides brand fidelity (colors, fonts, logo placement, layout usage) the reviewer is asked to judge text placement and overlap wherever text is rendered:

  • Text boxes and placeholders — overflowing, clipped, or spilling past the slide edge; text overlapping other text or sitting unreadably on top of shapes and images; unfilled placeholders; text too small or too low-contrast to read.

  • Charts and graphs — axis tick labels colliding with each other or truncated, data labels overlapping their bars/slices or each other, a legend covering the plot area, an axis title rotated into illegibility.

  • Tables — cell text wrapping into an unreadable stack or clipped by the row height, columns too narrow for their content, headers misaligned with their columns, a table running past the slide.

  • Diagrams, SmartArt and grouped shapes — labels wider than the node that holds them, text escaping a connector, node labels overlapping their neighbours.

It also flags text sized badly for the space it occupies — a heading set so small its box is mostly empty, or comparable elements at visibly different sizes — while being told not to ask for bigger text where growing it would eat the slide's white space.

Overlapping or unreadable text is graded at least major, so it fails the verdict rather than being noted in passing.

Fitting text to its box. The fit_text operation sizes text to the space it actually has, in both directions: it shrinks text that overflows and grows text that leaves its box mostly empty. The size is computed server-side from the box geometry (minus the frame's own margins, with a slack factor so text never touches its border) rather than guessed by the model, and the plan can bound it with min_pt/max_pt. Growth is anchored to the deck's own typography — at most 1.5× the shape's current size, or 44pt when the text inherits its size from the layout — so a two-word box cannot balloon to 96pt and shout over the slide. set_autofit sets PowerPoint's own autofit behaviour (shrink_text, grow_shape, none) when that suits the shape better. The size estimate is geometric, not a real text layout; the loop's re-render and re-review is what confirms it.

Reading a round that changed nothing. operations_applied: 0 with operations_skipped: N does not mean repair is disabled — it means the plan was rejected by validation. Each round now reports skipped_reasons (e.g. {"bad shape_index": 2}) and the result carries a repair_note explaining that repeating the call will not help. The common reason is bad shape_index: the fix targets something that is not a shape on the slide — typically a slide-number, footer or date placeholder inherited from the layout or master, which the repair engine cannot reach. Such reports are also often renderer artifacts (LibreOffice wraps a narrow slide-number field that PowerPoint lays out on one line), so check the deck in PowerPoint before chasing them.

Chart axis titles. set_axis_title names axes by role — category and value — not by screen position, and the planner is told which way round they sit for the chart type in hand. This matters because add_chart's x_axis_title/y_axis_title map to the category and value axes regardless of orientation: on a bar chart the category axis is vertical, so titles chosen by where they appear on screen come out swapped. The tool's docstring now says so, and the repair op can correct it after the fact.

The repair engine can act on all of it: describe_slides hands the planner each table's column widths, row heights and cell text, and each chart's type, categories, series count and label/legend state — so a plan can widen a column, raise a row, retitle a cell, shrink a whole table's or chart's font, hide crowded data labels, or move the legend, instead of only nudging the container. Members of a group are not individually addressable; the group is moved, resized or shrunk as a whole.

Fonts, and what a QA verdict can prove

The renderer is LibreOffice, which does not have Microsoft's fonts and substitutes its own. Some substitutions are metric-compatible — identical character widths, so a line that wraps in the render wraps identically in PowerPoint:

Font in the deck

Rendered as

Text-fit verdict

Arial, Helvetica

Liberation Sans

exact

Times New Roman

Liberation Serif

exact

Courier New

Liberation Mono

exact

Calibri

Carlito

exact

Cambria

Caladea

exact

Everything else (Georgia, Verdana, Trebuchet MS, Segoe UI, Garamond, Consolas, …) is substituted by similarity, and the widths differ — so a QA screenshot can show text overflowing a box that fits in PowerPoint, or fitting one that will not.

The server handles this rather than ignoring it: validate_presentation reports a deck's non-metric fonts as an info problem, and the review prompt carries a caveat telling the reviewer to report only clear, substantial overflow for text in those fonts and to judge everything else normally. In template mode this is a note on how to read the results, not a defect — the brand's fonts win.

Telling the agent to use it

Nothing forces the orchestrator to inspect: with the export gate off, export_presentation reports "visual_qa": "unverified" but still succeeds. Put the workflow in the Quick App's system prompt so QA actually happens:

Before planning the deck, call get_design_guidance. If the user supplied a
template, call render_slide_previews to see its slides, and build by
duplicating the template slides that fit your content (duplicate_slide)
rather than adding bare ones.
After you finish building each slide, call visual_inspect_slides with that
slide's number. If it reports issues, call visual_repair_slides for the same
slide and continue only once it passes or you have fixed the content yourself.
Before export_presentation, call validate_presentation and fix any errors it
reports, then call visual_inspect_slides once with no slides argument to check
the deck as a whole. If the export response says
"visual_qa": "unverified", say so in your answer rather than presenting the
deck as checked.
After exporting, call render_deck_summary_card and attach the image it returns
alongside the .pptx, so the user can see the finished deck in the chat.

Per-slide checks are the cheap path — one render plus one vision call each, caught while the slide is still fresh in context. Keep the whole-deck pass for the end: it is the only thing that marks the deck passed, and it catches cross-slide inconsistencies a single-slide review cannot see.

Sizing the QA work (orchestrator budget, timeouts, pod resources)

Concern

Guidance

Orchestrator iterations (Quick Apps max_iterations, default 15)

Now includes the QA calls the agent makes. Roughly 2 calls per slide plus create/export, plus one inspect or repair per slide: a 20-slide deck needs ~65, so set max_iterations to 80 (100 if slides carry charts/tables/images)

Tool timeout (Quick Apps tool_defaults.timeout_seconds, default 300s)

A single-slide inspect ≈ 15–30s (render + review); a single-slide repair round adds another LLM call. A whole-deck visual_repair_slides on 20 slides is the expensive case at ≈ 40–90s per round — budget max_iterations × 90s for it, or keep calls slide-scoped and 300s is plenty

Slides actually reviewed

VISION_LLM_MAX_SLIDES (default 15) caps whole-deck calls only; an explicit slides list is never truncated

Pod resources

LibreOffice renders in-pod: budget 1 CPU / 2Gi with a writable /tmp. Small limits (e.g. 192Mi) get the renderer OOM-killed, which fails every QA call

VISUAL_QA_ENFORCE=false registers neither tool and turns slide QA off (the icon review in render_svg_icon is unaffected — it follows the model's presence). The reviewer model can be reached two ways: a direct OpenAI Responses-API endpoint with image input (Azure OpenAI included), or as a DIAL Core deployment via {DIAL_CORE_URL}/openai/deployments/{model}/chat/completions — see the VISION_LLM_* variables. Cost note: each inspect is one render plus one LLM call; each repair round adds a second LLM call.

Logging

Every record is a single line on stderr, so kubectl logs shows one event per line and nothing wraps across lines:

2026-08-20T09:14:02.517Z INFO  dial_pptx.tools.presentation export_ok presentation_id=9f3c1a2b… filename=deck.pptx slides=12 bytes=1841203

timestamp (UTC) · level · logger · message, with details as key=value pairs. Multi-line content is folded onto the same line with | separators — that includes tracebacks, so a stack trace stays greppable instead of scrolling the pod terminal. FastMCP's default Rich handler (boxed, multi-line, colored) and uvicorn's separate log format are both replaced, so third-party output matches.

LOG_LEVEL sets the verbosity of this server and the libraries under it:

Level

What you get

ERROR

Failures only: blocked exports, render/vision-LLM outages, upload failures

WARNING

The above, plus degradations that don't fail the call: QA rounds that found issues, LRU eviction, auth falling back to the server key, skipped repair operations

INFO (default)

One line per tool call (tool_ok/tool_error with duration_ms), presentation lifecycle, each QA round's verdict, exports and uploads, server startup

DEBUG

The above, plus per-call argument summaries, render and vision-LLM timings, individual QA issues and repair operations, template content-type coercion, and the underlying HTTP client's own logs

Handles are truncated (9f3c1a2b…) and argument values are summarized by type and size (template_content=<str:412880>) rather than logged verbatim, so logs never carry a usable presentation handle, a base64 template, or slide text. Credentials are never logged.

Per-subsystem tuning is available in code: loggers are nested under dial_pptx (dial_pptx.visual_qa, dial_pptx.tool.export_presentation, dial_pptx.utils.template, …), so a single subsystem can be raised or lowered independently of LOG_LEVEL.

Multi-tenancy and scaling notes

  • Presentation handles are server-generated UUIDs and act as unguessable capabilities; clients cannot enumerate or guess other conversations' decks.

  • Presentation state lives in process memory (bounded by TTL + LRU). Run a single replica, or use session affinity if you scale out — a deck created on one replica is not visible on another.

  • Calls targeting the same presentation are serialized (python-pptx is not thread-safe); different presentations are handled concurrently.

Development

uv venv --python 3.12 .venv && uv pip install -r requirements.txt
.venv/bin/python -m unittest discover -s tests        # unit tests
.venv/bin/python spike/fidelity_spike.py <template>   # template-fidelity check
.venv/bin/python spike/http_client_check.py           # transport smoke test

spike/fidelity_spike.py creates a deck from a template through the same code paths the MCP tools use and byte-compares the theme, slide-master, layout, and media parts of template vs output. Local test templates belong in templates-local/ (gitignored).

Credits

This project is built on Office-PowerPoint-MCP-Server by GongRzhe, used under the MIT license, with full git history preserved. The core PowerPoint manipulation tools and utilities are upstream work; this fork adds the remote-transport, multi-tenant state, and DIAL integration layers. The original LICENSE and copyright notice are retained; the upstream README is preserved at docs/UPSTREAM_README.md.

License

MIT — see LICENSE.

Available Tools

48 tools
add_bullet_pointsC

Add bullet points to a placeholder.

ParametersJSON Schema
NameRequiredDescriptionDefault
slide_indexYes
bullet_pointsYes
placeholder_idxYes
presentation_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No behavioral annotations are provided, so the description carries the full burden. 'Add bullet points to a placeholder' only conveys a write operation; it does not explain whether existing content is replaced or appended, what happens if the placeholder is empty, or what side effects occur. This is a minimal mutation description with no behavioral depth.

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 a single short sentence with no fluff or redundancy. It is concise and front-loads the core action, though it is arguably too sparse to fully support correct invocation.

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?

With 4 parameters, 0% schema description coverage, no behavioral annotations, and a large set of sibling tools, this description is far from complete. It omits how the placeholder is identified, what the presentation_id does, and how this relates to alternative text/placeholder tools. The output schema exists, so return format explanation is not required, but essential invocation context is missing.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It loosely maps to the bullet_points and placeholder_idx parameters, but it does not explain slide_index, presentation_id, or the expected format of the bullet_points array. The description adds minimal meaning beyond the parameter names.

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

Purpose4/5

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

The description states a specific action ('Add bullet points') applied to a specific resource ('placeholder'), which is immediately understandable. However, it does not explicitly distinguish this from sibling tools like populate_placeholder or manage_text, so clarity is strong but differentiation is absent.

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?

There is no guidance on when to use this tool versus alternatives such as populate_placeholder or manage_text. The intended use is only implied by the name and short phrase; no exclusions, prerequisites, or contextual conditions are provided.

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

add_chartA

Add a chart to a slide with comprehensive formatting options.

x_axis_title labels the CATEGORY axis and y_axis_title labels the VALUE axis, whatever the chart's orientation — the names are not screen directions. On column, line and area charts the category axis is the horizontal one, so x/y read as expected. On a BAR chart the bars run sideways: the category axis is VERTICAL and the value axis HORIZONTAL, so x_axis_title appears on the vertical axis. Naming a bar chart's axes by where they look on screen is the usual way these two end up swapped.

A 'scatter' chart is the exception to both: it has no category axis, so pass its x values (as numbers) in categories and the matching y values in series_values. Use 'line_markers' when the horizontal axis is really a list of labels.

ParametersJSON Schema
NameRequiredDescriptionDefault
topYes
leftYes
titleNo
widthYes
heightYes
categoriesYes
chart_typeYes
has_legendNo
slide_indexYes
color_schemeNo
series_namesYes
x_axis_titleNo
y_axis_titleNo
series_valuesYes
has_data_labelsNo
legend_positionNoright
presentation_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

The description discloses non-obvious behavior beyond the schema, especially the axis-title/category-axis mapping and the scatter chart exception. Since annotations provide no read-only or destructive hints, this contextual detail meaningfully reduces misuse risk. It does not discuss side effects, but 'add' makes the mutation implicit and the output schema covers return value expectations.

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

Conciseness4/5

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

The description is front-loaded with a one-sentence purpose, then uses concise paragraphs to address the most confusing input nuances. The bar chart and scatter explanations are somewhat detailed but each sentence earns its place because it prevents a plausible mistake.

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 output schema existing, the input side is large (17 parameters,9 required) with zero schema parameter descriptions. The description covers only a handful of tricky parameters and leaves chart_type allowed values, series_values nesting format, positional units, and optional presentation behavior unexplained. An agent would still have significant uncertainty when constructing a correct call.

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 must compensate for parameter ambiguity. It does a good job for x_axis_title, y_axis_title, categories, series_values, and chart_type, including the bar-chart axis swap and scatter exception. However, many other parameters such as slide_index, left/top/width/height units, color_scheme, legend_position, and series_names semantics remain undocumented.

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

Purpose4/5

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

The opening sentence, 'Add a chart to a slide with comprehensive formatting options,' clearly states the action and resource. It does not explicitly differentiate from sibling tools like add_combo_chart or update_chart_data, but the core purpose is unambiguous.

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 offers clear practical context for when to use special chart types, such as scatter charts and line_markers, and explains axis-orientation cases. It does not explicitly say when to choose this tool over add_combo_chart or update_chart_data, but it provides strong situational guidance for parameter selection.

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

add_combo_chartA

Add a chart whose series are not all the same type, and may use a second value axis.

This is what add_chart cannot do. Reach for it when:

  • a measure needs a reference line across it — actuals as columns with a target as a line;

  • two measures share categories but not units — revenue in millions against a margin percentage. On one axis the percentage flattens to nothing along the bottom; on a secondary axis both are readable.

series: one entry per series, plotted in the order given: {"name": "Revenue", "values": [10, 12, 15], "type": "column", "secondary_axis": false, "color": [31, 73, 125], "data_labels": true, "label_position": "outside_end", "trendline": "linear"} "type" is required — column, stacked_column, bar, stacked_bar, line, line_markers, area, stacked_area. Pie and scatter cannot share a plot area with other types; use add_chart for those. "color" is [r, g, b]; omit to take the template's own chart palette, which is usually the right choice. "label_position" on a stacked series must be "center", "inside_end" or "inside_base" — a stacked segment has no outside. "trendline" is linear, movingAvg, exp, log, poly or power.

secondary_axis_title labels the right-hand axis; y_axis_title labels the left one. x_axis_title labels the category axis (see add_chart on why that is not the same as "the horizontal one").

The result is a real, editable PowerPoint chart, not a picture.

ParametersJSON Schema
NameRequiredDescriptionDefault
topYes
leftYes
titleNo
widthYes
heightYes
seriesYes
categoriesYes
has_legendNo
slide_indexYes
x_axis_titleNo
y_axis_titleNo
legend_positionNobottom
presentation_idNo
secondary_axis_titleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations only carry a title, so the description bears the transparency burden. It discloses the result type ('a real, editable PowerPoint chart, not a picture'), required series type, and constraints like stacked label positions and pie/scatter incompatibility. It does not explicitly state that the call mutates the presentation, but 'Add' plus the result statement make the create behavior clear.

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 organized with a purpose statement, use-case bullets, a structured series example, and axis-title clarification. Every section adds needed information without fluff, and the most important differentiator is front-loaded.

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 tool is complex with 14 parameters and no schema descriptions, but the description covers the hardest parts (series configuration and axis semantics) and the result type. It omits guidance on legend_position values and presentation/slide targeting, but those are either conventional or inferable from parameter names, and an output schema exists for 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?

With 0% schema description coverage, the description provides essential semantics for the complex parameters: the full series entry format, allowed chart types, color format, label_position constraints, and trendline values. It also clarifies secondary_axis_title vs. y_axis_title vs. x_axis_title. However, it leaves legend_position, has_legend, categories, and layout parameters to inference from their names.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Add a chart whose series are not all the same type, and may use a second value axis.' It explicitly differentiates from add_chart by stating 'This is what add_chart cannot do,' making its purpose unmistakable.

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

Usage Guidelines5/5

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

It gives concrete when-to-use scenarios (reference line across a measure, two measures with different units) and names the alternative: 'use add_chart' for pie/scatter charts that cannot share a plot area. This is explicit routing between siblings.

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

add_connectorA

Add connector lines/arrows between points on a slide.

Args: slide_index: Index of the slide (0-based) connector_type: Type of connector ("straight", "elbow", "curved") start_x: Starting X coordinate in inches start_y: Starting Y coordinate in inches end_x: Ending X coordinate in inches
end_y: Ending Y coordinate in inches line_width: Width of the connector line in points color: RGB color as [r, g, b] list presentation_id: Optional presentation ID (uses current if not provided)

Returns: Dictionary with operation results

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNo
end_xYes
end_yYes
start_xYes
start_yYes
line_widthNo
slide_indexYes
connector_typeYes
presentation_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With only a title annotation and no readOnly or destructive hints, the description carries the burden of explaining side effects. It clearly signals a mutating 'add' operation and mentions a dictionary return value, but it does not disclose persistence requirements, coordinate-origin assumptions, or failure behavior.

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 one-sentence summary is front-loaded and immediately clear. The parameter list is tight, consistent, and contains no filler or unnecessary repetition of schema defaults.

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 9-parameter tool with no schema descriptions and minimal annotations, the description provides enough input semantics to invoke it correctly, and the output schema covers return values. It falls slightly short of complete because it does not mention coordinate-system origin or how the addition relates to saving/persistence in the presentation workflow.

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 fully compensate. It does: every parameter is documented with useful semantics, including 0-based slide_index, allowed connector_type values, inch units for coordinates, line width in points, RGB color format, and optional presentation_id.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Add connector lines/arrows between points on a slide.' It clearly identifies what the tool does and distinguishes it from sibling tools like add_shape and add_chart, which target different presentation elements.

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

Usage Guidelines3/5

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

The description implies the tool should be used when adding connector/arrow elements between slide coordinates, and it lists the required inputs. However, it never explicitly states when to prefer this tool over alternatives such as add_shape or manage_hyperlinks, nor does it provide exclusions or workflow context.

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

add_image_from_dial_urlA

Place an image that already lives in DIAL file storage onto a slide.

Use this for generated imagery: call your image model, save the result to DIAL files, then pass the file URL here. The server downloads the bytes itself, so nothing large passes through your context — prefer this over manage_image(source_type="base64") for anything bigger than a small icon.

image_url: a DIAL file reference — the "files/{bucket}/{path}" URL an upload returns, or the full https URL of that file on this DIAL installation (the ".../api/files/{bucket}/{path}" link an image deployment hands back works as-is). Arbitrary web URLs are NOT downloaded: to use a picture from the web, fetch it yourself and store it in DIAL file storage first.

slide_index: 0-based, like the other content tools (visual QA slide numbers are 1-based; slide_index 0 is slide 1). left, top, width, height: inches. Give width and height to define the box the picture should occupy — for a half-and-half slide on a 13.33in deck, text on the left and left=6.9, top=1.2, width=5.6, height=4.5 for the image. Omit both to keep the image's natural size (clamped to the slide). fit: how the picture relates to that box. "contain" (default) largest undistorted size that fits, centred in the box — safe for photos and illustrations; "cover" fills the box exactly, cropping the overflowing edges; "stretch" forces the exact box and will distort the image.

Returns the shape index and the geometry actually applied ("placed": left/top/width/height in inches), which may be smaller than the box you asked for under "contain".

ParametersJSON Schema
NameRequiredDescriptionDefault
fitNocontain
topNo
leftNo
widthNo
heightNo
image_urlYes
slide_indexYes
presentation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

With no readOnly/destructive annotations, the description carries the full behavioral burden and does so thoroughly. It discloses that the server downloads bytes itself, that arbitrary web URLs are not downloaded, that natural size is clamped to the slide, and that returned geometry may differ from the requested box under 'contain'.

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 long but earns its length by documenting 8 parameters in a zero-coverage schema. It is front-loaded with the core action, organized by parameter, and every paragraph adds necessary detail 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 tool's complexity and complete lack of schema property descriptions, the description covers all essential aspects: accepted URL forms, coordinate system, fit behavior, return value, and comparison with a sibling tool. The presence of an output schema means return-value detail is a bonus, and it still includes it.

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 explain all parameters itself. It clearly defines image_url accepted formats, slide_index as 0-based, dimensions in inches, fit modes ('contain', 'cover', 'stretch'), and includes a concrete example. This fully compensates for the schema's lack of descriptions.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Place an image that already lives in DIAL file storage onto a slide.' It clearly distinguishes itself from manage_image by explaining the DIAL URL path and when to prefer this tool over base64-based insertion.

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 tells the agent when to use this tool ('for generated imagery'), names the alternative (manage_image(source_type='base64')), and states when not to use it for arbitrary web URLs. This is strong routing guidance that leaves little to inference.

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

add_shapeC

Add an auto shape to a slide with enhanced options.

ParametersJSON Schema
NameRequiredDescriptionDefault
topYes
leftYes
textNo
widthYes
heightYes
font_sizeNo
fill_colorNo
font_colorNo
line_colorNo
line_widthNo
shape_typeYes
slide_indexYes
presentation_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations provide only a title, leaving the description to carry behavioral transparency. The description reveals that the tool performs a write operation to add a shape, but it does not disclose side effects, coordinate behavior, interaction with existing slide content, or what 'enhanced options' entail.

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 short and front-loaded, making it easy to parse. However, the phrase 'enhanced options' is vague filler that does not earn its place, and the sentence conveys very little actionable detail.

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

Completeness1/5

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

With 13 parameters, no schema descriptions, no behavioral annotations, and no formula details, the description is severely incomplete. An agent cannot reliably determine coordinate conventions, color encodings, shape type syntax, or how presentation_id is resolved, so additional investigation or guessing would be required.

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 description coverage is 0%, yet the description adds no meaning for any of the 13 parameters. It does not explain shape_type values, coordinate units, color array formats, or optional text/font fields, leaving the agent without semantic guidance beyond raw property names.

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

Purpose4/5

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

The description states a specific verb ('Add'), resource ('auto shape'), and target ('to a slide'), which clearly separates it from siblings like add_slide, add_image, and add_table. The phrase 'enhanced options' is vague, but the core purpose is identifiable without opening the schema.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus alternatives such as add_connector or add_image. It only implies the obvious use case of adding a shape and does not mention any exclusions, prerequisites, or trade-offs.

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

add_slideC

Add a new slide to the presentation with optional background styling.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
color_schemeNomodern_blue
layout_indexNo
background_typeNo
presentation_idNo
background_colorsNo
gradient_directionNohorizontal

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations provide only a title and no read-only or destructive hints, so the description carries the burden of behavioral disclosure. It confirms the operation adds a slide but does not explain side effects, default behavior, what happens to the existing presentation, or whether background styling applies only to the new slide.

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 a single concise sentence with no filler words. It is front-loaded with the main action, though it omits valuable detail that could be added without excessive length.

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, the tool has 7 parameters, zero schema descriptions, and a large set of similar sibling tools. The description is too sparse to provide complete context for correct invocation, especially regarding required context like which presentation to modify and how layout/background choices behave.

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%, and the description barely compensates. It vaguely references 'background styling' but does not explain the individual parameters like title, layout_index, presentation_id, color_scheme, background_colors, or gradient_direction, nor their expected formats or defaults.

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

Purpose4/5

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

The description clearly states the action ('Add a new slide') and the resource ('the presentation'), with a specific mention of optional background styling. It does not explicitly differentiate from sibling tools like create_slide_from_template or apply_slide_template, but the core purpose is unambiguous.

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?

There is no guidance on when to use this tool versus alternatives such as create_slide_from_template, apply_slide_template, or duplicate_slide. The description does not state prerequisites, intended use cases, or situations where another sibling tool would be more appropriate.

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

add_tableC

Add a table to a slide with enhanced formatting options.

ParametersJSON Schema
NameRequiredDescriptionDefault
topYes
colsYes
dataNo
leftYes
rowsYes
widthYes
heightYes
header_rowNo
slide_indexYes
border_colorNo
body_bg_colorNo
body_font_sizeNo
header_bg_colorNo
presentation_idNo
header_font_sizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations contain only a title, so the description carries the full disclosure burden. It indicates mutation ('Add') but does not explain side effects, coordinate system behavior, defaults, or whether existing slide content is affected. 'Enhanced formatting options' is too vague to be meaningful behavioral disclosure.

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 concise and front-loaded with the main action. However, it is under-specified for a 15-parameter tool, and 'enhanced formatting options' is filler that does not convey concrete structure or parameter relationships.

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 mutation tool with 15 parameters, no parameter descriptions, and no behavioral annotations, this description is far too minimal. It omits prerequisites, coordinate semantics, data input format, and formatting defaults. The existence of an output schema does not compensate for these gaps.

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 description coverage is 0% across 15 parameters, and the description names none of them. It provides no explanation for required parameters like left, top, width, height, rows, cols, or slide_index, nor for optional data structure or color array formats.

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

Purpose4/5

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

The description clearly states the specific action and resource: 'Add a table to a slide'. It also signals an additional capability ('enhanced formatting options'), which helps distinguish it from simpler table-related operations. However, it does not explicitly contrast with siblings like format_table_cell.

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 is provided about when to use this tool versus alternatives such as format_table_cell or add_shape. There is also no mention of prerequisites like requiring an existing presentation or how table dimensions relate to slide coordinates.

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

apply_picture_effectsC

Apply multiple picture effects in combination.

ParametersJSON Schema
NameRequiredDescriptionDefault
effectsYes
shape_indexYes
slide_indexYes
presentation_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

There are no meaningful annotations (only a title), so the description carries the full burden of behavioral disclosure. It does not state whether the operation mutates the existing picture, whether effects replace or layer onto existing formatting, what the output contains, or any side effects on the shape.

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 a single, front-loaded sentence with no wasted words. It is concise, though arguably too thin for the complexity of the tool; still, as a standalone phrasing it is efficient.

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?

The tool has a complex nested effects parameter and no schema-level documentation, so an agent would need much more detail to call it correctly. Missing context includes the picture-shape prerequisite, the catalog of valid effects, how effects combine, and whether presentation_id is needed for existing files.

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%, and the description barely compensates. 'Multiple picture effects in combination' adds only minimal context for the effects parameter; it does not explain the structure of the effects object, allowed effect names/value types, or the roles of slide_index, shape_index, and presentation_id.

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

Purpose4/5

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

The description states a clear verb ('apply') and resource ('picture effects'), and the phrase 'in combination' distinguishes this from simply applying one effect. However, it does not specify the target shape type or the possible effects, leaving some ambiguity about what exactly is being applied.

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 is given on when to use this tool versus alternatives such as manage_image or add_image_from_dial_url. The description offers no context about prerequisites, target shape requirements, or situations where this tool is preferred.

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

apply_professional_designC

Unified professional design tool for themes, slides, and visual enhancements. This applies professional styling and themes rather than structural layout changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
contentNo
operationYes
slide_typeNotitle_content
slide_indexNo
color_schemeNomodern_blue
enhance_titleNo
enhance_chartsNo
enhance_shapesNo
enhance_contentNo
presentation_idNo
apply_to_existingNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

With no readOnly or destructive annotations, the description carries the full burden of disclosing side effects. It only says the tool 'applies professional styling and themes,' which implies mutation, but it does not disclose what gets overwritten, whether existing designs are replaced, or how apply_to_existing behaves.

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 concise sentences with no filler. The first sentence establishes the scope and the second clarifies the key boundary between visual styling and structural layout changes, so every sentence earns its place.

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

Completeness1/5

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

For a tool with 12 parameters, one required parameter, zero parameter descriptions, and no enums, this description is far too minimal. The output schema may cover return values, but the description provides almost no guidance for constructing a valid operation call.

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 description coverage is 0% and the description does not explain any of the 12 parameters, including the required 'operation' field. Operation strings, slide targeting, color scheme values, and enhancement toggles are entirely unaddressed, leaving an agent unable to determine correct values from the description.

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

Purpose4/5

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

The description clearly identifies the tool as applying professional styling and themes to slides and visual elements, with an explicit boundary that it is not about structural layout changes. This is a specific verb-resource pairing that distinguishes it from layout-focused siblings, though it does not fully differentiate from theme-specific tools like apply_slide_template.

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

Usage Guidelines3/5

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

The description implies usage for visual styling and theming and explicitly excludes structural layout changes. However, it does not name alternative tools or provide explicit when-to-use versus when-not-to-use guidance, leaving the agent to infer context from the sibling list.

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

apply_slide_templateA

Apply a structured layout template to an existing slide. This modifies slide layout and content structure using predefined templates.

Args: slide_index: Index of the slide to apply template to template_id: ID of the template to apply (e.g., 'title_slide', 'text_with_image') color_scheme: Color scheme to use ('modern_blue', 'corporate_gray', 'elegant_green', 'warm_red') content_mapping: Dictionary mapping element roles to custom content image_paths: Dictionary mapping image element roles to file paths presentation_id: Presentation ID (uses current if None)

ParametersJSON Schema
NameRequiredDescriptionDefault
image_pathsNo
slide_indexYes
template_idYes
color_schemeNomodern_blue
content_mappingNo
presentation_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With no readOnly/destructive annotations, the description carries the behavioral burden and does state that the tool modifies slide layout and content structure. It also notes that presentation_id falls back to the current presentation when None. It does not disclose whether existing content is overwritten, whether the operation is reversible, or how content_mapping interacts with template placeholder roles.

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 purpose is front-loaded, the mutation effect is stated clearly, and the Args block is terse without filler. Every line adds information the schema does not provide.

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 six-parameter mutation tool with no behavioral annotations and no schema descriptions, the definition provides enough parameter-level detail to call the tool correctly. It could be even more complete by pointing to list_slide_templates for valid template IDs or describing how template roles map to content_mapping, but the current text is still largely sufficient.

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 compensates fully by explaining all six parameters. It adds concrete examples for template_id and color_scheme, clarifies that content_mapping and image_paths map roles to content/file paths, and explains the None-default behavior for presentation_id.

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

Purpose5/5

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

The description opens with a specific action and resource: apply a structured layout template to an existing slide. It also explains that the operation modifies slide layout and content structure, which distinguishes it from slide-creation tools such as create_slide_from_template or create_presentation_from_template.

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

Usage Guidelines3/5

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

The phrase 'to an existing slide' implies the intended use case: modifying an already-created slide rather than creating one. However, the description gives no explicit guidance about when to prefer this over apply_professional_design or list_slide_templates, and no when-not-to-use conditions.

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

auto_generate_presentationB

Automatically generate a presentation based on topic and preferences.

Args: topic: Main topic/theme for the presentation slide_count: Number of slides to generate (3-20) presentation_type: Type of presentation ('business', 'academic', 'creative') color_scheme: Color scheme to use include_charts: Whether to include chart slides include_images: Whether to include image placeholders presentation_id: Presentation ID (uses current if None)

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYes
slide_countNo
color_schemeNomodern_blue
include_chartsNo
include_imagesNo
presentation_idNo
presentation_typeNobusiness

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No behavioral annotations are provided beyond a title, so the description carries full responsibility for disclosing side effects. It says 'automatically generate' but does not clarify whether this creates a new presentation, overwrites the current/original content, requires authentication, or has other notable behaviors. The 'uses current if None' note on presentation_id gives some context but not enough for a potentially destructive operation.

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

Conciseness4/5

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

The description is front-loaded with a single-sentence purpose followed by a structured Args list. It is reasonably concise and every parameter line adds meaning beyond the bare schema, though listing all parameters inline makes it slightly longer than an ideal standalone usage summary.

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 complexity, zero schema descriptions, and no safety annotations, the description covers the obvious need: generating a presentation from a topic with preferences. But it omits guidance on choosing this tool over siblings and does not explain the mutation/overwrite behavior, which is essential for safe invocation.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must and does compensate. It explains all seven parameters, including slide_count range, presentation_type allowed values, inclusion booleans, and the presentation_id fallback behavior. However, 'color_scheme: Color scheme to use' is not very informative about accepted values, leaving some ambiguity.

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

Purpose4/5

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

The description states a clear action and object: 'Automatically generate a presentation based on topic and preferences.' This distinguishes it from manual creation tools and template-based siblings by emphasizing automatic generation from a topic, though it does not explicitly name alternatives or edge cases.

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

Usage Guidelines3/5

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

The description implies use when a presentation should be automatically generated from a topic and options. However, it does not provide explicit 'when to use vs alternatives' or 'when not to use' guidance, and the large sibling list of create_presentation, create_from_template, and slide tools makes this gap meaningful.

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

copy_slide_between_presentationsA

Copy one slide from one open presentation into another.

Use this to merge decks, or to lift a single slide out of a reference deck into the one you are building. Both presentations must be open on this server (you hold both handles).

The slide keeps its own shapes, text and direct formatting, and its images and charts are copied into the target deck. Anything it inherited from its old theme — placeholder fonts, scheme colours — is re-resolved against the TARGET deck's master, so the copy can look different from the original. Inspect the result with visual_inspect_slides.

layout_index: force a particular layout in the target deck. By default the layout is matched by name, then by placeholder structure; the response reports whether a real match was found in "layout_matched".

ParametersJSON Schema
NameRequiredDescriptionDefault
slide_indexYes
insert_afterNo
layout_indexNo
source_presentation_idYes
target_presentation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

With annotations carrying no behavioral hints, the description takes on the full burden and discloses the key effect: the slide keeps direct formatting and copied images/charts, but inherited theme styles are re-resolved against the target master, so the copy may look different. It also advises inspecting the result with visual_inspect_slides.

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 organized with the core action first, followed by use cases, behavioral caveats, and parameter detail. Each sentence adds distinct value and none merely repeats the schema or title.

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 that an output schema exists to describe return values, this description covers the prerequisites, the cross-deck operation, the theme re-resolution caveat, and the layout matching behavior. It is sufficient for an agent to select and call the tool correctly.

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 does give meaningful semantics for layout_index, including the name-match fallback and the layout_matched response field, but slide_index's indexing convention and insert_after's default behavior are left to inference.

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

Purpose5/5

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

The opening sentence is a precise verb+resource statement: 'Copy one slide from one open presentation into another.' It also frames the intended job (merge decks, lift a single slide) and implicitly separates this from same-deck siblings like duplicate_slide and move_slide.

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

Usage Guidelines4/5

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

It gives clear usage context: 'Use this to merge decks, or to lift a single slide out of a reference deck into the one you are building,' and states the prerequisite that both presentations must be open. It does not explicitly name alternatives for same-deck copying or reordering, so it stops short of a full when-not list.

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 PowerPoint presentation. Returns a presentation_id that must be passed to all subsequent tool calls for this deck.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations provide only a title, so the description carries the behavioral transparency burden. It does disclose the key contract that a presentation_id is returned and is required for future calls. It does not mention whether the presentation is saved automatically, whether it is blank by default, or any relationship to save_presentation, which are relevant behavioral details given the sibling context.

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: the first states the core action, the second states the essential follow-up requirement. Every word earns its place and the most important usage constraint is front-loaded.

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?

For a tool with no parameters and an output schema, the description is mostly sufficient to invoke it correctly. Yet it does not mention that this creates a blank/default presentation versus a template-based one, and it silently skips the save_presentation step from the sibling list. These gaps reduce completeness in a large sibling toolset.

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 input schema has no properties, so there are no parameter semantics to explain. With zero parameters, the baseline is 4; the description adds useful context about the output rather than repeating schema information.

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

Purpose4/5

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

The description states a specific verb and resource: 'Create a new PowerPoint presentation.' It is clear about the basic operation and identifies the intended object. However, it does not explicitly distinguish this from template-based creation siblings like create_presentation_from_template, so some differentiation is left to the tool names.

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

Usage Guidelines3/5

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

The instruction that the returned presentation_id 'must be passed to all subsequent tool calls' provides clear lifecycle guidance after invocation. It does not, however, state when to choose this tool over the many creation alternatives, such as create_presentation_from_template or auto_generate_presentation, leaving the selection context only implied.

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

create_presentation_from_templateA

Create a new PowerPoint presentation from a template file. Returns a presentation_id that must be passed to all subsequent tool calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
template_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations provide no behavioral hints beyond a title, so the description carries the full burden. It usefully discloses that a presentation_id is returned and required for later calls, but it does not address side effects, permissions, or failure behavior.

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 dense sentences with no filler. The action is front-loaded, and the essential follow-up requirement is stated immediately after the purpose.

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?

For a one-parameter tool with an output schema, the core invocation is fairly complete. It omits guidance on how to obtain or validate template_path and does not position this tool against closely related creation/sibling tools, which matters given the large sibling list.

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%, and the description only repeats the idea token file' without explaining path format, supported file types, or where the template_path should come from. For a single self-named parameter this is a small-but-real 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?

States a specific verb+resource ('Create a new PowerPoint presentation') and identifies the source as a template file. The return of a presentation_id also clarifies what the tool produces, separating it from read/get-style sibling tools.

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

Usage Guidelines3/5

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

The entry-point nature is implied by 'must be passed to all subsequent tool calls,' and the purpose implies when to use it. However, it gives no explicit guidance about choosing between this and similar siblings such as create_presentation_from_templates or create_slide_from_template.

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

create_presentation_from_template_contentA

Create a new presentation from an uploaded .pptx template file.

A PowerPoint 97-2003 (.ppt) file is accepted too and converted to .pptx on the way in, where the server has LibreOffice.

template_content: the .pptx/.potx/.ppt template file content, as a data: URI or a base64-encoded string (in DIAL Quick Apps, pass the template file as file:data::files/{bucket}/{path} and it is resolved automatically).

The template's theme, layouts, masters and branding are preserved. Returns a presentation_id that must be passed to all subsequent tool calls for this deck.

ParametersJSON Schema
NameRequiredDescriptionDefault
template_contentYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations only include a title, so the description carries the behavioral disclosure burden. It adds valuable behavior details: .ppt files are accepted and converted to .pptx via LibreOffice, template branding is preserved, and the returned presentation_id must be used in subsequent calls. Minor gaps remain around persistence and side effects, but the core behavior is disclosed.

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

Conciseness5/5

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

The description is compact and well organized: a one-sentence summary, a format-conversion note, and a parameter/return-value explanation. Every sentence adds necessary information without redundancy or padding.

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 single-parameter creation tool, the description covers input encoding, accepted formats, conversion behavior, and the required returned ID. It does not clarify the deck lifecycle, such as whether save_presentation is needed to persist the created presentation, which is a meaningful omission given the sibling toolset.

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 provides only a type and name for template_content with 0% coverage. The description fully compensates by explaining accepted file extensions and three supported encodings: data URI, base64, and file:data resolution. This is exactly the parameter-level meaning an agent needs.

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

Purpose5/5

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

The description names a specific verb and resource: 'Create a new presentation from an uploaded .pptx template file.' It also states what is preserved (theme, layouts, masters, branding), making the tool's scope clear and distinguishable from siblings like create_presentation and create_presentation_from_templates.

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

Usage Guidelines3/5

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

The description implies usage when a template file's content is available, and it gives environment-specific guidance for DIAL Quick Apps. However, it does not explicitly explain when to prefer this tool over create_presentation_from_template or create_presentation_from_templates, leaving the alternative routing to inference.

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

create_presentation_from_templatesA

Create a complete presentation from a sequence of templates.

Args: template_sequence: List of template configurations, each containing: - template_id: Template to use - content: Content mapping for the template - images: Image path mapping for the template color_scheme: Color scheme to apply to all slides presentation_title: Optional title for the presentation presentation_id: Presentation ID (uses current if None)

Example template_sequence: [ { "template_id": "title_slide", "content": { "title": "My Presentation", "subtitle": "Annual Report 2024", "author": "John Doe" } }, { "template_id": "text_with_image", "content": { "title": "Key Results", "content": "• Achievement 1\n• Achievement 2" }, "images": { "supporting": "/path/to/image.jpg" } } ]

ParametersJSON Schema
NameRequiredDescriptionDefault
color_schemeNomodern_blue
presentation_idNo
template_sequenceYes
presentation_titleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

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

Annotations provide only a title, so the description carries the full burden of disclosing behavioral side effects. It does not state whether creating the presentation overwrites the current presentation when presentation_id is None, whether a new presentation is created, or how existing slides are affected. The phrase 'uses current if None' hints at context-dependence but does not make the mutation scope clear.

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 front-loaded with the core purpose and then provides exactly enough supporting detail. The Args breakdown and example are directly useful and contain no filler. Every sentence and list item contributes to understanding how to call the tool.

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 tool with only one required parameter and an output schema already available, the description is nearly complete: it documents the required structure and optional parameters. It does not enumerate allowed template_id values or color_scheme options, but given the surrounding tool ecosystem, those are discoverable via sibling tools like list_slide_templates and get_template_info. The main missing piece is the side-effect clarification already noted.

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, and it does thoroughly. It explains the structure of template_sequence, including template_id, content, and images, and clarifies color_scheme, presentation_title, and presentation_id. The worked example template_sequence adds concrete meaning that the raw schema completely lacks.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Create a complete presentation from a sequence of templates.' This clearly differentiates the tool from the sibling create_presentation_from_template (singular), since the focus is on a sequence of templates rather than a single template. The example reinforces the intended 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 Guidelines3/5

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

The description implies this tool is for building a full presentation from multiple template configurations, but it never explicitly states when to prefer it over siblings like create_presentation_from_template or create_presentation_from_template_content. There are no when-to-use versus when-not-to-use instructions or alternative tool routing.

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

create_slide_from_templateB

Create a new slide using a layout template.

Args: template_id: ID of the template to use (e.g., 'title_slide', 'text_with_image') color_scheme: Color scheme to use ('modern_blue', 'corporate_gray', 'elegant_green', 'warm_red') content_mapping: Dictionary mapping element roles to custom content image_paths: Dictionary mapping image element roles to file paths layout_index: PowerPoint layout index to use as base (default: 1) presentation_id: Presentation ID (uses current if None)

ParametersJSON Schema
NameRequiredDescriptionDefault
image_pathsNo
template_idYes
color_schemeNomodern_blue
layout_indexNo
content_mappingNo
presentation_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

Annotations provide only a title, no read-only or destructive hints, so the description carries full responsibility for describing side effects. It merely says 'Create' and lists parameters, but does not disclose whether a presentation must already be open, where the slide is inserted, whether existing content is modified, or what side effects occur.

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 efficient: a single one-line summary followed by a compact Args list. Each parameter entry is short and adds meaning beyond the schema, with no fluff or repetition.

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 parameter semantics are well covered and an output schema exists, but the description lacks usage context and behavioral transparency. An agent would understand what arguments to pass but not fully understand the operation's side effects or when to choose it over similar sibling tools.

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 compensates excellently by explaining every parameter with concrete examples: template_id values, color_scheme options, content_mapping roles, image_paths roles, layout_index meaning, and presentation_id fallback behavior.

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

Purpose4/5

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

The description states a specific action and resource: 'Create a new slide using a layout template.' This clearly differentiates from broader tools like add_slide or create_presentation_from_template, though it does not explicitly name sibling tools or draw a contrast with apply_slide_template.

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 is given on when to prefer this tool over alternatives such as apply_slide_template, add_slide, or create_presentation_from_template_content. The description indicates what the tool does but not the conditions that make it the right choice.

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

delete_slideA

Remove a slide from the presentation.

Use this to drop template slides whose content you don't need — a template's unused sections, or the fourth column of a three-item layout. Deleting is preferable to blanking a slide out: an emptied slide still shows the template's decoration and reads as a mistake.

slide_index: 0-based. Every later slide shifts down by one, so when removing several, delete from the highest index downwards or re-read get_presentation_info between calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
slide_indexYes
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?

Annotations contain only the title, so the description carries the burden of behavioral disclosure. It reveals the important side effect that 'every later slide shifts down by one' and advises deleting from the highest index downwards, which is valuable operational context. It does not explicitly state permanence or permission requirements, but the destructive nature is clear from 'Remove/Delete.'

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

Conciseness5/5

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

Three tight paragraphs each earn their place: the operation, a usage rationale, and parameter-specific guidance. The description is front-loaded with 'Remove a slide from the presentation' and contains no filler or redundant claims.

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

Completeness4/5

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

With an output schema present, there is no need to document return values. The description covers the operation, the rationale, and the critical index-shift behavior, leaving only minor gaps such as permission requirements or explicit irreversibility.

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 input schema provides no parameter descriptions, so the description compensates for slide_index by documenting that it is 0-based and explaining the re-indexing effect. presentation_id is not described, but its meaning is self-evident from the name and is a common parameter across sibling tools.

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

Purpose5/5

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

The description opens with 'Remove a slide from the presentation,' a specific verb and resource that clearly distinguishes it from siblings like add_slide, move_slide, and duplicate_slide. The subsequent rationale about dropping unneeded template slides reinforces the tool's intended purpose without ambiguity.

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

Usage Guidelines4/5

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

The description explicitly states when to use the tool ('Use this to drop template slides whose content you don't need') and even provides a when-not ('Deleting is preferable to blanking a slide out'). It also gives practical advice for bulk deletion, though it does not name specific alternative sibling tools like move_slide or duplicate_slide.

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

duplicate_slideA

Copy an existing slide, keeping all of its content and formatting.

This is the way to reuse a corporate template's designed slides: duplicate the slide whose layout suits your next section, then edit the copy's text with manage_text / populate_placeholder. add_slide builds a bare slide from a layout and gets you none of the template's artwork, so prefer duplicating when the template already contains a slide that looks right.

slide_index: 0-based index of the slide to copy. insert_after: 0-based index the copy is placed after; omit to append the copy (or copies) to the end of the deck. count: how many copies to make, for a section that repeats — the copies land consecutively.

Pictures are shared with the original (same bytes, no size cost); charts, SmartArt and embedded objects are cloned, so editing the copy's chart does not change the original's. Speaker notes are copied. Returns "new_slide_indexes" — read them before editing, since inserting in the middle shifts every later slide.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
slide_indexYes
insert_afterNo
presentation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

With no readOnly/destructive annotations, the description carries the full behavioral disclosure burden. It does so thoroughly: pictures are shared, charts/SmartArt/embedded objects are cloned, speaker notes are copied, inserted copies shift later slide indexes, and the return value is named. This is exactly the context an agent needs to anticipate side effects.

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

Conciseness5/5

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

The description is information-dense but well organized: the core purpose comes first, followed by usage guidance, parameter semantics, and then important side effects and return-value warnings. No sentence is wasted, and critical caveats about index shifting are placed near the return-value note where they matter most.

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 lack of annotations and 0% schema parameter descriptions, the description covers all essential operational context: what gets copied, what is shared versus cloned, how positioning works, how multiple copies behave, and what to read from the return value. The presence of an output schema means the return structure itself does not need to be spelled out here.

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 fully explains slide_index as 0-based, insert_after as 0-based with append-on-omit semantics, and count as the number of consecutive copies. These details go well beyond the bare schema and make the parameters self-documenting.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Copy an existing slide, keeping all of its content and formatting.' This clearly distinguishes the tool from related operations like add_slide and copy_slide_between_presentations, even without comparing schemas.

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

Usage Guidelines5/5

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

The description explicitly tells when to prefer this tool over add_slide, pointing out that add_slide builds a bare slide and loses template artwork. It also explains when count is useful ('for a section that repeats'), giving an agent concrete criteria for selecting this tool.

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

export_presentationA

Export the presentation to DIAL file storage and return its file URL.

Use this (not save_presentation) to deliver the finished deck to the user.

format: "pptx" (default) for the editable deck; "pdf" for a read-only copy; "both" to deliver the pair, which is what a user who asked to "share" or "send" a deck usually wants. PDF is produced by rendering the deck through LibreOffice, so it needs the renderer and reflects that renderer's fonts — see get_design_guidance("type"). Export does NOT run visual QA for you: inspect the deck with visual_inspect_slides / visual_repair_slides while you build it, or at least once before exporting. The response carries "visual_qa": "passed" | "unverified" | "unavailable" so you can tell whether the deck was ever checked. ALWAYS include the returned file_url in your final answer as an attachment so the user can download the presentation.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNopptx
filenameNopresentation.pptx
presentation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only provide a title, so the description carries full behavioral burden. It discloses meaningful traits: export saves to DIAL file storage, PDF is rendered through LibreOffice and reflects renderer fonts, export does NOT run visual QA, and the response includes a 'visual_qa' status field. This is far beyond what the schema or annotations reveal.

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

Conciseness5/5

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

The description is dense but every sentence earns its place: purpose, sibling differentiation, format guidance, rendering caveat, visual QA warning, and required final-answer behavior. Important instructions are front-loaded, and the formatting is scannable despite the length.

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

Completeness5/5

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

The tool has an output schema, so the description does not need to explain return values. It covers the delivery context, format trade-offs, PDF rendering implications, visual QA expectations, and the mandatory attachment of file_url. An agent has enough context to select and invoke the tool correctly.

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 does a strong job for the 'format' parameter by explaining 'pptx', 'pdf', 'both', and their use cases. However, it does not clarify the semantics of 'filename' beyond the schema's default, and 'presentation_id' is only inferable from its name. The description partially compensates but leaves some parameter meaning to inference.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Export the presentation to DIAL file storage and return its file URL.' It explicitly distinguishes itself from the sibling save_presentation by saying 'Use this (not save_presentation)' to deliver the finished deck. This makes the tool's purpose unmistakable.

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

Usage Guidelines5/5

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

The description gives direct usage guidance: use this tool rather than save_presentation when delivering the finished deck to the user. It also explains when each format is appropriate, including the special case that 'both' is usually what a user asking to 'share' or 'send' wants, and tells the agent to inspect slides with visual_inspect_slides / visual_repair_slides before exporting.

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

extract_presentation_textA
Read-only

Extract all text content from all slides in the presentation.

Use this as the content-QA read on a finished deck: check for missing or duplicated sections, typos, wrong order, and — on a deck built from a template — placeholder text the template shipped with that was never replaced ("Lorem ipsum", "Click to add title", "XXX", "[insert ...]"). Speaker notes come back in each slide's "speaker_notes" but are kept out of "all_text_combined", which holds only what the audience sees.

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idNo
include_slide_infoNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

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

The readOnlyHint annotation already covers the read-only nature, and the description adds valuable behavioral detail: speaker notes are returned in speaker_notes but excluded from all_text_combined, which contains only audience-visible text. This clarifies output semantics without contradicting the annotation.

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

Conciseness5/5

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

The description is tight and layered: the action is stated first, then the intended usage scenario, then the output behavior regarding speaker notes. Every sentence earns its place, and there is no repetitive or generic filler.

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

Completeness4/5

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

With an output schema present, the description doesn't need to enumerate return fields, but it does cover the important speaker-note separation. The only meaningful gaps are the exact behavior of include_slide_info and what happens when presentation_id is null, which the schema leaves undocumented. Overall, this is a well-rounded definition for a read-only extraction 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 the description needed to explain the two parameters, but it does not mention presentation_id or include_slide_info at all. The parameter names are partially self-explanatory, but include_slide_info's effect is not described, and the description does not compensate for the lack of schema-level documentation.

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

Purpose5/5

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

The description states a specific verb and resource ('Extract all text content from all slides in the presentation') and clearly scopes the operation to the whole deck. This distinguishes it from sibling extract_slide_text, which works on a single slide.

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

Usage Guidelines4/5

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

The description gives an explicit use case: use as the content-QA read on a finished deck, with concrete checks like missing sections, duplicated sections, typos, wrong order, and leftover template placeholder text. It does not explicitly name when not to use it or mention extract_slide_text as the alternative for a single slide, so it stops short of a 5.

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

extract_slide_textA
Read-only

Extract all text content from a specific slide, speaker notes included.

ParametersJSON Schema
NameRequiredDescriptionDefault
slide_indexYes
presentation_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

The readOnlyHint annotation already communicates safety, and the description adds useful behavioral context: it extracts all text content and includes speaker notes. There is no contradiction."

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

Conciseness5/5

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

The description is one succinct sentence with no filler, and it front-loads the core purpose. Every word adds 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?

Combined with the readOnlyHint and existing output schema, the description is adequate for a read-only extraction tool. However, it omits important invocation details such as the slide_index convention and the meaning/behavior of the optional presentation_id parameter.

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%, and the description provides no parameter-level detail. It does not clarify whether slide_index is zero-based, whether presentation_id selects the active presentation, or any constraints on these fields."

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 ('extract'), names the resource ('slide text'), and clearly scopes it to 'a specific slide'. It also distinguishes itself from extract_presentation_text by including speaker notes and focusing on a single 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?

The use case is implied by the wording: extract from one slide rather than the whole presentation. However, there are no explicit when-to-use/when-not-to-use instructions or named alternatives such as extract_presentation_text or manage_speaker_notes, leaving some routing to inference.

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

format_chart_seriesA

Restyle one series of an existing chart.

Use it to pin a series to a brand colour, to label just the series that carries the point rather than all of them, or to add a trendline.

series_index is 0-based across the whole chart, in the order the series were added. label_position: center, inside_end, inside_base, outside_end (bars and columns), or above / below / left / right (line charts). A stacked series rejects outside_end. number_format: an Excel format string, e.g. "0.0%" or "#,##0". trendline: linear, movingAvg, exp, log, poly or power; trendline_period is the window for movingAvg or the order for poly.

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNo
trendlineNo
data_labelsNo
shape_indexYes
slide_indexYes
series_indexYes
number_formatNo
label_positionNo
presentation_idNo
trendline_periodNo

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?

Annotations contain only a title, so the description carries the entire burden. It clearly signals a mutating action with 'restyle', and adds behavioral details such as label_position accepted values, chart-type compatibility, and the stacked-series rejection of outside_end. It doesn't cover persistence or whether prior formatting is replaced, but the core side effect of restyling an existing chart is evident.

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 well structured with a front-loaded purpose statement, concrete use cases, and line-separated parameter notes. Every sentence adds operational value; there is no fluff or repetition of schema 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 10-parameter tool with no schema descriptions, the description covers the most complex parameters and gives enough orientation for safe invocation. The gaps minor: color format and exact data_label semantics are not explicitly stated, and there is no mention of whether changes require saving. The presence of an output schema means return values do not need to be explained, so this is reasonably complete but not exhaustive.

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

Parameters4/5

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

With schema description coverage at 0%, the description must explain parameters itself. It substantially does so for series_index (0-based), label_position (allowed values and chart compatibility), number_format (Excel format string with examples), trendline (valid types), and trendline_period (window/order meaning). It leaves color, data_labels, presentation_id, slide_index, and shape_index somewhat to inference, but these are less ambiguous or self-evident from parameter names.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Restyle one series of an existing chart.' It clearly distinguishes this from siblings like add_chart, update_chart_data, and add_combo_chart by framing it as a formatting/restyling operation, and it lists concrete purposes such as pinning to a brand color, labeling a series, and adding a trendline.

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

Usage Guidelines4/5

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

The description gives explicit use cases: 'Use it to pin a series to a brand colour, to label just the series that carries the point rather than all of them, or to add a trendline.' This is clear context for when to invoke the tool, though it doesn't explicitly mention alternatives such as update_chart_data or save_presentation, so it stops short of the strongest possible routing guidance.

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

format_table_cellC

Format a specific table cell.

ParametersJSON Schema
NameRequiredDescriptionDefault
colYes
rowYes
boldNo
colorNo
italicNo
bg_colorNo
alignmentNo
font_nameNo
font_sizeNo
shape_indexYes
slide_indexYes
presentation_idNo
vertical_alignmentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.3/5.0
Behavior2/5

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

The annotations provide only a title and no readOnlyHint or destructiveHint, so the description carries the burden of explaining side effects. It implies that the tool modifies a cell's formatting but does not disclose whether it overwrites existing formatting, whether null values keep settings unchanged, or what permissions or side effects apply. This is minimal behavioral disclosure.

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

Conciseness2/5

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

The description is short and front-loaded, but it is under-specified rather than appropriately concise. It essentially restates the tool name and title without providing the additional structural or semantic information an agent needs for a tool with this many parameters.

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

Completeness1/5

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

For a 13-parameter tool with no schema descriptions and no annotations beyond a title, the description is far from complete. It does not clarify how to identify the cell, how to specify formatting values, what value formats are expected, or what the tool does beyond the broad verb 'format.'

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 description coverage is 0%, and the description mentions none of the 13 parameters. It does not explain required parameters like slide_index, shape_index, row, and col, nor optional formatting fields such as alignment, color, font_size, or vertical_alignment. With no parameter information anywhere, the agent cannot derive how to invoke the tool correctly.

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

Purpose4/5

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

The description, 'Format a specific table cell,' names a clear verb and resource, and the phrase 'specific table cell' narrows the target to one table cell rather than a presentation, slide, or whole table. It is distinguishable from siblings like add_table and manage_text at a high level, though it does not say anything about what kinds of formatting are supported.

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?

There is no guidance on when to use this tool versus alternatives such as manage_text, manage_fonts, or format_chart_series. The description provides no context, preconditions, or exclusions, leaving the agent to infer when this tool is appropriate.

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

get_design_guidanceA
Read-only

How to make the deck look like someone designed it.

Read this BEFORE planning a deck, and re-read the relevant section when you hit a decision it covers. It carries what the individual tools cannot: deck structure, layout and spacing, type scale, colour, chart and table choices, the visual habits that make a deck look machine-generated, and the build loop that catches problems while they are still cheap.

It also covers two things specific to this server: how differently to behave when the user supplied a corporate template (the default — you inherit their design rather than inventing one), and which fonts this server's renderer reproduces at true width, which is what determines whether you can trust a visual_inspect_slides verdict on text fit.

section: omit for the whole document (a few pages), or name one — call once with no argument to see the available section names in "sections".

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already supply readOnlyHint=true, and the description adds valuable context beyond that: it is an incremental reference, contains server-specific facts (corporate template behavior and renderer font width), and exposes a 'sections' listing when called with no argument. No side effects are implied or hidden.

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 longer than average but front-loaded with the core purpose and usage instruction. The middle enumeration of covered topics is slightly verbose but earns its place by telling the agent what the tool can resolve. The parameter guidance is compact and actionable.

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

Completeness5/5

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

With an output schema present and a read-only annotation, the description covers everything else: what the tool provides, when to consult it, how to navigate sections, and which server-specific caveats matter. An agent can call this tool correctly without external help.

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 fully explain the parameter. It does: omit 'section' for the whole document, name one for a specific section, and call with no argument to discover section names. This is complete semantic guidance for correct invocation.

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

Purpose5/5

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

The description opens with a clear purpose ('How to make the deck look like someone designed it') and enumerates its scope: deck structure, layout, type scale, colour, charts, tables, and visual habits. It distinguishes itself from sibling tools by stating it carries what the individual tools cannot, making its role as a cross-cutting guidance tool unmistakable.

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

Usage Guidelines5/5

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

Provides explicit timing: read before planning a deck and re-read when hitting a covered decision. It also explains the parameter navigation pattern—omit for whole document, name a section, or call once with no argument to list section names—giving the agent a precise call sequence.

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

get_dial_storage_infoA
Read-only

Report which DIAL file storage this server can actually read and write on this request: the identity in use, the bucket it owns, and its appdata path.

Use it when a file URL is refused: DIAL storage is per-user, so a file whose URL names a different bucket than the one reported here cannot be downloaded, however valid the URL looks.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

The description adds context beyond the readOnlyHint annotation: it reveals that accessibility is request- and identity-dependent ('the identity in use, the bucket it owns') and that storage is per-user. It also discloses that the report covers both read and write capabilities, a useful nuance.

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 tightly packed paragraphs: one sentence states the purpose, one short paragraph gives the explicit trigger condition and underlying rationale. No filler, and the key information is front-loaded.

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

Completeness5/5

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

For a zero-parameter, read-only informational tool with an output schema present, the description provides everything needed to call it correctly and interpret the result. It includes the trigger condition and the contextual reason the reported values matter.

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 tool has zero parameters, so the input schema carries no meaning. The description fully compensates by specifying exactly what the report contains — identity, owned bucket, and appdata path — serving as the sole semantic documentation.

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

Purpose5/5

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

The description states a specific verb ('Report') and a specific resource ('which DIAL file storage this server can actually read and write on this request'), and enumerates the exact fields reported (identity, bucket, appdata path). It is clearly distinct from siblings like get_server_info or get_presentation_info, which target server-wide or presentation-level information.

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

Usage Guidelines5/5

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

It explicitly tells the agent when to invoke it: 'Use it when a file URL is refused.' It then explains the per-user storage model so the agent can interpret the result and recognize why a valid-looking URL may be undownloadable.

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

get_presentation_infoC
Read-only

Get information about a presentation.

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

The annotations already provide readOnlyHint=true, so the read-only nature is covered. The description adds no behavioral context beyond that, such as how a null presentation_id is handled or whether the tool operates on the current presentation. It essentially restates the tool's purpose without revealing any additional behavior.

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 a single short sentence with no filler, so it is concise. However, the brevity sacrifices substance: it almost parrots the tool name and provides no distinguishing or operational detail. It is acceptable as a minimal description but not well-structured for decision-making.

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?

While an output schema exists and the readOnlyHint annotation covers safety, the description is too incomplete for an agent to confidently invoke the tool. The key ambiguity of presentation_id being optional—and whether 'a presentation' means the current one or one to be identified—is unresolved. Given the large sibling set, this lack of context makes tool selection harder.

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 the description needed to clarify the presentation_id parameter's meaning and optionality. It does not mention the parameter at all. The schema's title 'Presentation Id' and default null provide minimal information, but the description adds no value beyond that.

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

Purpose4/5

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

The description states a clear verb and resource: 'get information about a presentation.' However, it does not specify what kind of information is returned, and it does not distinguish this tool from similar getter siblings like get_slide_info or get_template_file_info.

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?

There is no guidance about when to use this tool instead of the many sibling getters, nor whether presentation_id is required, optional, or refers to the currently open presentation. The agent is left to infer usage from the tool name alone.

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

get_server_infoA
Read-only

Report this server's version, how many tools it is actually exposing, and whether the optional DIAL and visual QA integrations are configured.

Tool registration is dynamic — the visual QA tools appear only when a vision LLM is configured — so "tools" is counted at call time rather than hardcoded.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, and the description adds meaningful behavioral context: tool registrations are dynamic, visual QA tools are conditional, and the tool count is computed at call time rather than hardcoded. This goes beyond the structured fields.

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 two sentences with no filler. The core purpose is front-loaded, and the dynamic registration detail earns its place by clarifying why the count is computed at call time.

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 no parameters, a readOnlyHint annotation, and an output schema present, the description provides all necessary context for an agent to call this tool correctly. The dynamic behavior explanation adds important completion.

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 tool has zero parameters and the schema is fully covered, so there are no parameter semantics for the description to clarify. The baseline of 4 is appropriate since nothing is missing.

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 ('Report') and clearly names the resource: server version, exposed tool count, and optional DIAL/visual QA integration status. This clearly distinguishes it from the presentation-focused sibling tools.

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

Usage Guidelines3/5

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

The description implies this is for server/environment introspection rather than presentation operations, and the lack of parameters makes the intended use fairly obvious. However, there is no explicit statement about when to prefer this tool over alternatives or any exclusion guidance.

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

get_slide_infoC
Read-only

Get information about a specific slide.

ParametersJSON Schema
NameRequiredDescriptionDefault
slide_indexYes
presentation_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, so the safe read-only nature is established. The description adds little behavioral context beyond that, but it does not contradict the annotation and is consistent with a read-only information retrieval operation.

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 very short and front-loaded, with no filler. However, it mostly restates the title and adds little substantive value, so the conciseness comes at the cost of useful specification.

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?

With two parameters, zero schema descriptions, no usage guidance, and many sibling tools, the description is too thin to fully equip an agent. The output schema helps explain return values, but the role of presentation_id and the relationship to the current presentation remain unclear.

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 the description needed to clarify what slide_index and presentation_id mean. The phrase 'a specific slide' loosely implies slide_index, but presentation_id is entirely unexplained, leaving an optional parameter whose role is ambiguous.

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

Purpose4/5

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

The description states a specific verb ('Get') and resource ('a specific slide'), making the core operation clear. It is distinguishable from siblings like get_presentation_info and get_template_file_info by its focus on an individual slide, though 'information' is somewhat vague.

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?

There is no guidance on when to use this tool versus alternatives such as get_presentation_info, extract_slide_text, or manage_slide_transitions. The description does not mention prerequisites, context, or scenarios where another sibling would be more appropriate.

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

get_template_file_infoB
Read-only

Get information about a template file including layouts and properties.

ParametersJSON Schema
NameRequiredDescriptionDefault
template_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

The readOnlyHint annotation already indicates a safe read operation, and the description adds the scope 'including layouts and properties.' It does not contradict the annotation, but it also does not disclose additional behavioral traits such as path requirements or error conditions.

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, front-loaded sentence with no filler. Every word contributes to identifying the tool's purpose, making it concise and easy to parse.

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?

For a simple read-only tool with an output schema and readOnlyHint, the description covers the basic intent. However, it leaves important gaps: the meaning of template_path is unexplained and the relationship to similarly named sibling tools is unclear, which could lead to mis-selection.

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 the description must compensate for the undocumented template_path parameter. It does not explain what format the path should take, how to resolve it, or whether it should be a local file, storage reference, or template ID. The parameter name alone provides limited meaning.

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

Purpose4/5

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

The description clearly states the action and resource: 'Get information about a template file including layouts and properties.' This is specific enough to convey the tool's core purpose, though it does not explicitly differentiate from the sibling get_template_info.

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?

There is no guidance on when to use this tool versus siblings like get_template_info, get_presentation_info, or list_slide_templates. The description implies usage only through the generic phrase 'Get information,' but does not state exclusions or selection criteria.

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

get_template_infoB
Read-only

Get detailed information about a specific template.

Args: template_id: ID of the template to get information about

ParametersJSON Schema
NameRequiredDescriptionDefault
template_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the agent knows this is a safe read operation. The description adds the specific-template scoping and is consistent with the tool's read-only nature. It does not disclose additional behavioral details, but the lower bar for annotations makes this adequate.

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 short, front-loaded with the purpose, and contains no filler. The Args line is slightly redundant with the input schema but does not significantly bloat the overall description.

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?

For a one-parameter read-only tool with an output schema, the description is operationally mostly complete. However, it does not clarify which category of 'template' it refers to, especially given siblings like get_template_file_info and list_slide_templates. An agent could misroute without additional disambiguation.

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 carries the burden. It provides 'template_id: ID of the template to get information about,' which explains the parameter's role. This is minimal but sufficient for a single string ID, though it adds little beyond the schema title 'Template Id' and gives no format or lookup details.

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

Purpose4/5

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

The description states a clear verb and resource: 'Get detailed information about a specific template.' This is unambiguous about the basic operation. However, it does not distinguish itself from sibling tools like get_template_file_info, which could also plausibly return detailed template information.

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?

There is no when-to-use or when-not-to-use guidance. With siblings such as get_template_file_info, list_slide_templates, and get_presentation_info, an agent must infer the correct choice. The description only implicitly suggests a single-item lookup from a template.

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

list_slide_templatesA
Read-only

List all available slide layout templates.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes the non-mutating behavior. The description adds that it lists all templates, but does not disclose any other behavioral traits such as return shape or whether templates come from the current presentation vs a global library.

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?

A single front-loaded sentence with no filler. Every word contributes to identifying the action, scope, and resource.

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 parameterless, read-only listing tool with an output schema available, the description covers the essential context. It could be slightly more explicit about what constitutes a 'slide layout template' in relation to sibling template tools, but nothing critical is missing.

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

Parameters4/5

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

There are zero parameters and schema coverage is 100%, so there is no parameter semantics burden for the description. The baseline of 4 for no-parameter tools applies.

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

Purpose4/5

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

The description uses a specific verb ('List') and identifies the resource ('all available slide layout templates'), making the purpose clear. It does not explicitly name sibling tools to differentiate, but the 'all available' scope distinguishes it from get/apply template tools.

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 gives no guidance about when to choose this tool over alternatives such as get_template_info or apply_slide_template. Usage is only implied by the tool name and 'list all' phrasing.

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

manage_fontsC

Unified font management tool for analysis, optimization, and recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault
font_pathYes
operationYes
output_pathNo
text_contentNo
presentation_typeNobusiness

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2/5.0
Behavior2/5

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

Annotations provide no readOnly or destructive hints, so the description carries full responsibility for behavior. It mentions 'optimization' and 'recommendations' but does not disclose whether the tool modifies the font file, requires special permissions, produces new files, or has side effects. This is a significant gap for a tool that can apparently perform multiple kinds of operations.

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

Conciseness2/5

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

While the description is a single sentence and not bloated, its brevity comes from vague under-specification rather than precise efficiency. It omits critical operational detail while restating what the name already implies, so it does not earn its place.

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

Completeness1/5

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

This is a five-parameter tool with a required operation string, no enum values, and zero parameter documentation. The description does not give an agent enough context to form a valid invocation. Even though an output schema exists, the core input contract is undefined, making this definition incomplete for correct use.

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 description coverage is 0% and none of the five parameters have descriptions or enums in the schema. The description does not explain what values operation accepts, whater font_path refers to, when output_path or text_content are needed, or what presentation_type does. With no param guidance anywhere, the tool is effectively uncallable bsased on the available definition.

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

Purpose3/5

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

The description identifies fonts as the resource and mentions analysis, optimization, and recommendations, so it is not a tautology. However, 'unified font management' remains broad and does not specify which exact operations are available or how this tool differs from sibling tools like manage_text or apply_professional_design. It gives a general sense of purpose but lacks precise scope.

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?

There is no guidance about when to use manage_fonts versus alternative tools. No prerequisites, contexts, or exclusions are provided, and the description does not help an agent decide between this tool and nearby tools such as manage_text or apply_professional_design.

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

manage_imageC

Unified image management tool for adding and enhancing images.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
leftNo
widthNo
heightNo
contrastNo
operationYes
sharpnessNo
brightnessNo
saturationNo
blur_radiusNo
filter_typeNo
output_pathNo
slide_indexYes
source_typeNofile
image_sourceYes
presentation_idNo
enhancement_styleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.2/5.0
Behavior2/5

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

Annotations only include a title with no readOnly or destructive hints, so the description carries the full burden. It does not disclose whether the tool mutates the presentation, overwrites files, applies temporary or permanent effects, or what side effects the enhancement operations have.

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 a single sentence with no redundant wording, and it is front-loaded with the tool's general purpose. It is concise in structure, even though that brevity fails to compensate for missing substantive detail.

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

Completeness1/5

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

Given 17 parameters, 3 required fields, no schema descriptions, and rich sibling differentiation needs, the description is severely incomplete. It does not explain valid operations, image source handling, coordinate and dimension semantics, or enhancement options, making correct invocation nearly impossible.

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 description coverage is 0% across 17 parameters, and the description mentions none of them. The agent gets no help understanding critical parameters like operation, image_source, source_type, filter_type, or enhancement_style.

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

Purpose3/5

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

The description says the tool is for 'adding and enhancing images,' which gives a general sense of the operation, but 'unified image management' is a broad, imprecise framing. It does not clearly distinguish this tool from sibling tools like add_image_from_dial_url or apply_picture_effects.

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 is provided about when to use manage_image instead of its siblings. There are no conditions, exclusions, or alternative tool references, leaving the agent to infer usage solely from the vague description.

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

manage_slide_mastersB

Access and manage slide master properties and layouts.

Args: operation: Operation type ("list", "get_layouts", "get_info") master_index: Index of the slide master (0-based) layout_index: Index of specific layout within master (0-based) presentation_id: Optional presentation ID (uses current if not provided)

Returns: Dictionary with slide master information

ParametersJSON Schema
NameRequiredDescriptionDefault
operationYes
layout_indexNo
master_indexNo
presentation_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

Annotations provide no readOnly or destructive hints, so the description bears the full burden. It says 'Access and manage' yet all listed operations ('list', 'get_layouts', 'get_info') are read-only, which is mildly misleading. There is no disclosure of side effects, persistence, error behavior, or what 'manage' actually mutates.

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 compact and well-organised with an Args/Returns structure, making key parameter information scannable. It earns its sentences, though 'Access and manage' is slightly vague and somewhat redundant given the operation list.

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 provides enough parameter detail to attempt an invocation, and since an output schema exists, the return-value outline is sufficient. However, it lacks per-operation semantics (what 'list' versus 'get_info' actually returns), does not clarify which operation uses layout_index, and offers no fallback/error context for missing presentation_id. Overall it is minimally viable but with clear gaps.

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

Parameters4/5

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

Schema description coverage is 0%, so the description compensates by explaining every parameter with useful details: operation values are enumerated, indexes are specified as 0-based, and presentation_id is described as optional with a fallback. This is meaningful beyond the raw schema, though it does not map each parameter to specific operations.

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

Purpose4/5

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

The description clearly identifies the resource — slide master properties and layouts — and lists three concrete operation values ('list', 'get_layouts', 'get_info'), so the agent knows what the tool does. However, it does not explicitly distinguish this from sibling tools like get_template_info or list_slide_templates, relying on the resource name to differentiate.

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?

There is no guidance on when to use this tool vs alternatives such as list_slide_templates, get_template_info, or apply_specific_template. The operation list implies some usage scenarios, but the description does not state exclusions, preconditions, or preferred context, leaving the agent to infer when this tool should be selected.

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

manage_slide_transitionsC

Manage slide transitions and timing.

Args: slide_index: Index of the slide (0-based) operation: Operation type ("set", "remove", "get") transition_type: Type of transition (basic support) duration: Duration of transition in seconds presentation_id: Optional presentation ID (uses current if not provided)

Returns: Dictionary with transition information

ParametersJSON Schema
NameRequiredDescriptionDefault
durationNo
operationYes
slide_indexYes
presentation_idNo
transition_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations are minimal (title only) and provide no read-only or destructive hints, so the description carries the full burden. It reveals that 'set', 'remove', and 'get' are possible, implying mutation for some operations, but it does not explain side effects, persistence behavior, whether existing transitions are overwritten, or what restrictions apply to 'basic support'. This is insufficient for a state-changing 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 compact and well-structured: a one-line summary followed by an Args list and a Returns note. No filler or repetition of schema titles. The only minor issue is that it could include examples or clarify the vague 'basic support' phrase without much extra length.

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 5 parameters, no parameter descriptions in the schema, and minimal annotations, the description is not complete enough. It omits valid transition types, return dictionary contents, error behavior, and whether presentation_id is truly optional when there is no current presentation. An output schema exists, but the description still needs to cover operational constraints and mutation consequences.

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 does add useful semantics: slide_index is 0-based, duration is in seconds, presentation_id uses the current presentation if omitted, and operation values are listed. However, transition_type is only described as 'basic support' with no allowed values, and optionality is only explicitly stated for presentation_id, not for duration or transition_type.

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

Purpose4/5

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

The description uses a specific verb-resource pair ('Manage slide transitions and timing') and clarifies the supported operations ('set', 'remove', 'get'). This distinguishes it from siblings like manage_text or manage_speaker_notes, though 'manage' is somewhat generic and the resource scope is narrower than the full list of peers.

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 states what operations are possible but gives no guidance on when to use this tool versus related tools such as manage_speaker_notes, add_slide, or apply_slide_template. There are no exclusions, prerequisites, or alternative routing hints, so the agent must infer usage from the operation names alone.

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

manage_speaker_notesA

Read, write or clear a slide's speaker notes.

Notes belong in the notes pane, never in a text box on the slide itself — a "notes" textbox is visible to the audience during the presentation.

operation: "get" return the notes for slide_index, or for every slide when slide_index is omitted; "set" replace the notes on slide_index with text; "clear" remove the notes from slide_index.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNo
operationYes
slide_indexNo
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?

Annotations provide only a title, so the description carries the behavioral transparency burden. It does so by disclosing that get returns notes, set replaces notes, and clear removes notes, including the get-all behavior when slide_index is omitted. It does not discuss permissions or side effects, but the core operation semantics are transparent.

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

Conciseness5/5

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

The description is compact and well organized: a concise summary line, one valuable usage warning about notes pane versus text box, then a clear operation list. Every sentence adds information and the structure makes the behavior easy to scan.

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 the essential call-shaping details: operation values, text semantics, slide_index optionality, and get-all behavior. It is slightly implicit that set and clear effectively require slide_index even though the schema marks it optional; an explicit statement there would make the description fully complete.

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% and operation has no enum, yet the description fully defines the valid operation values and their parameter behavior. It explains what text does for set, what slide_index does for get/set/clear, and how omitting slide_index affects get. This strongly compensates for the schema gaps.

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

Purpose5/5

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

The description opens with a specific verb/resource combination: 'Read, write or clear a slide's speaker notes.' It also distinctly clarifies that speaker notes belong in the notes pane, not in a slide text box, which separates this tool from text-manipulation siblings.

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

Usage Guidelines4/5

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

The description gives clear per-operation guidance and emphasizes the notes-pane distinction, helping an agent choose this tool for speaker notes rather than visible slide text. It does not explicitly name sibling alternatives or say 'use X instead,' but the context is sufficient for correct routing.

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

manage_textC

Unified text management tool for adding, formatting, validating text, and formatting multiple text runs.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
boldNo
leftNo
textNo
colorNo
widthNo
heightNo
italicNo
auto_fitNo
bg_colorNo
alignmentNo
font_nameNo
font_sizeNo
operationYes
text_runsNo
underlineNo
shape_indexNo
slide_indexYes
max_font_sizeNo
min_font_sizeNo
presentation_idNo
validation_onlyNo
vertical_alignmentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations provide only a title and no behavioral hints, so the description carries the full burden. It reveals that the tool can add, format, and validate text, but it does not explain how operations are dispatched, what side effects occur, whether validation_only changes behavior, or what happens with multiple text runs. This is insufficient transparency for a tool that can mutate presentations.

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 a single concise sentence with the main capabilities front-loaded. There is no fluff or repetition, but the brevity comes at the cost of essential operational detail. It earns its place as an overview, though it is too sparse for such a complex tool.

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

Completeness1/5

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

For a 23-parameter tool with no parameter descriptions or enums, this description is severely incomplete. It does not define acceptable operation values, the structure or role of text_runs, the effect of validation_only, or the relationship between shape_index and slide_index. An agent cannot reliably invoke this tool correctly based on the provided text.

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 description coverage is 0%, and the description provides no parameter semantics at all. With 23 parameters including operation, text_runs, validation_only, shape_index, and formatting options, the agent receives no guidance beyond raw schema shapes and defaults. The description entirely fails to compensate for the schema's lack of explanatory text.

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

Purpose4/5

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

The description states the resource (text) and a set of specific actions: adding, formatting, validating text, and formatting multiple text runs. It gives a reasonable idea of what the tool does and the 'unified' framing hints that it combines multiple text operations, distinguishing it from single-purpose siblings like extract_slide_text or add_bullet_points. However, it does not explicitly differentiate it from those siblings by name.

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 offers no guidance on when to use this tool versus alternatives. It does not mention any conditions, exclusions, or sibling tools, leaving an agent to infer usage solely from the generic verb list. With many text-related siblings such as populate_placeholder, add_bullet_points, and optimize_slide_text, this is a real gap.

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

move_slideA

Move a slide to a different position in the deck.

slide_index and new_index are both 0-based, and new_index is the position the slide ends up at once it has been lifted out — moving slide 0 to index 3 in a five-slide deck leaves it fourth.

ParametersJSON Schema
NameRequiredDescriptionDefault
new_indexYes
slide_indexYes
presentation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations carry only a title — no readOnly or destructive hints — so the description bears the disclosure burden. It resolves the key behavioral ambiguity by stating that new_index is the post-lift-out final position with a concrete five-slide example, which preents the classic off-by-one error. It does not disclose in-place mutation, bounds behavior, or side effects on slide content, but the indexing semantics are the core unknown here and it nails them.

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 paragraphs totaling about 40 words, with the one-line purpose front-loaded and the semantic clarification second. The worked example earns its place because it preempts a common misinterpretation rather than padding.

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?

An output schema is present so return values need no explanation, and the parameter set is simple. However, with empty safety annotations and 0% schema coverage, the description omits that the operation mutates the presentation in place and gives no error behavior for out-of-range indices or identical slide_index/new_index calls, leaving boundary conditions to guesswork.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It precisely defines slide_index and new_index (0-based, new_index measured after removal) for the two non-obvious parameters, which the bare schema leaves opaque. presentation_id is not mentioned at all, though its meaning is reasonably inferable from context.

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

Purpose5/5

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

The opening sentence names a specific verb and resource ('Move a slide to a different position in the deck'), making the action unmistakable. It distinguishes cleanly from position-adjacent siblings like add_slide, delete_slide, duplicate_slide, and copy_slide_between_presentations without needing to open their schemas.

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?

There is no guidance on when to use this tool vs alternative s; no sibling is named and no exclusions are stated, despite 49 siblings including closely related reordering tools. The phrase 'in the deck' implies a same-presentation operation, but that is left to inference rather than explicitly routed.

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

open_presentationA
Read-only

Open an existing PowerPoint presentation from a file. Returns a presentation_id that must be passed to all subsequent tool calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark the operation as read-only. The description adds valuable context beyond that by stating the returned ID is required for all subsequent tool calls, which is a key behavioral contract. It does not contradict the readOnlyHint annotation.

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

Conciseness5/5

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

Two concise sentences with no filler. The core action and the critical return-contract are front-loaded, making the description easy to parse and act on.

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 simplicity, one obvious parameter, the output schema, and the readOnlyHint annotation, the description covers everything an agent needs to invoke the tool correctly. A more detailed description would add little practical value.

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 only one parameter, file_path, and the description confirms it refers to an existing PowerPoint file. However, schema description coverage is 0%, and the description does not specify path format, accepted extensions, or whether the path is local, remote, or storage-based, leaving some ambiguity.

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

Purpose5/5

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

The description states a specific verb and resource: opening an existing PowerPoint presentation from a file. It also clarifies that the result is a presentation_id used for subsequent calls, distinguishing it from sibling tools like create_presentation or get_presentation_info.

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 clearly implies this tool is the entry point for working with an existing presentation file, since the returned presentation_id must be passed to later calls. It does not explicitly name alternatives or exclusions, but the context makes the appropriate use clear.

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

optimize_slide_textA

Optimize text elements on a slide for better readability and fit.

Args: slide_index: Index of the slide to optimize auto_resize: Whether to automatically resize fonts to fit containers auto_wrap: Whether to apply intelligent text wrapping optimize_spacing: Whether to optimize line spacing min_font_size: Minimum allowed font size max_font_size: Maximum allowed font size presentation_id: Presentation ID (uses current if None)

ParametersJSON Schema
NameRequiredDescriptionDefault
auto_wrapNo
auto_resizeNo
slide_indexYes
max_font_sizeNo
min_font_sizeNo
presentation_idNo
optimize_spacingNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

Annotations provide no behavioral hints beyond a title, so the description must carry this burden. It does not disclose that this is a mutating operation, what side effects may occur (e.g., overwriting original text formatting), whether changes are reversible, or what exactly gets modified beyond vague references to resizing, wrapping, and spacing.

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

Conciseness5/5

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

The description is compact and well-structured: a one-sentence purpose followed by a clean parameter list. No redundant filler; every line adds 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 parameter semantics and purpose are covered, and an output schema exists, so the return format need not be explained. However, for a mutating tool with no readOnly/destructive annotations, the lack of side-effect disclosure and usage context leaves meaningful gaps.

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

Parameters4/5

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

Schema description coverage is 0%, but the description compensates with an Args block explaining each of the seven parameters. Each parameter gets a concise semantic phrase (e.g., 'Minimum allowed font size') that goes beyond the bare type/default information in 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 opens with a specific verb ('Optimize') and resource ('text elements on a slide') plus a clear goal ('for better readability and fit'). This clearly distinguishes it from sibling text tools like extract_slide_text or manage_text.

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

Usage Guidelines3/5

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

The intended use case is implied by the purpose statement—optimizing readability and fit—and the parameter names make the settings obvious. However, there is no explicit guidance on when to choose this over related siblings such as manage_text, manage_fonts, or apply_professional_design.

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

populate_placeholderC

Populate a placeholder with text.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
slide_indexYes
placeholder_idxYes
presentation_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

With no meaningful annotations beyond a title, the description carries the full burden for behavioral disclosure. It does not explain whether existing placeholder text is overwritten, what happens with invalid indices, whether a presentation must be open, or what errors may occur. The word 'populate' implies mutation but adds no operational detail.

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 a single concise sentence with no redundant words. It front-loads the core action, though it sacrifices necessary detail.

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

Completeness1/5

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

For a tool with 4 parameters, 3 required, and 0% schema descriptions, the description omits critical semantics for slide_index, placeholder_idx, and presentation_id. It provides no usage context or behavior details, leaving the agent unable to reliably construct a valid call despite the presence of an output schema.

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 description coverage is 0%, and the description only names 'text' without adding semantics for slide_index, placeholder_idx, or presentation_id. The agent cannot infer indexing conventions, optionality, or default behavior from the description, so it fails to compensate for the schema's silence.

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

Purpose4/5

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

The description states a clear verb and resource: populate a placeholder with text. It identifies the core action without ambiguity, and 'placeholder' distinguishes it from generic text tools like manage_text, though it doesn't explicitly differentiate among siblings.

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 is provided about when to use this tool versus alternatives such as manage_text or add_bullet_points. There are no prerequisites, exclusions, or contextual hints beyond the generic description.

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

save_presentationC
Destructive

Save a presentation to a file.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
presentation_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, so the destructive nature is known. However, the description adds little behavioral context: it does not disclose overwrite semantics, what happens to an existing file, or whether presentation_id is required for the save operation.

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 a single short sentence with no filler and fronts the main verb. It is concise, though the brevity comes at the cost of useful detail.

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 destructive operation with an optional presentation_id and a close sibling export_presentation, the description is incomplete. It lacks file-overwrite expectations, parameter roles, and any pointer to alternatives, though 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.

Parameters1/5

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

Schema description coverage is 0%, and the description explains neither file_path nor the optional presentation_id parameter. The agent gains no parameter meaning beyond the schema's property names and default value.

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

Purpose4/5

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

The description states a clear action and target: saving a presentation to a file. It is not a tautology, but it does not differentiate save_presentation from the sibling export_presentation, so it lacks full sibling distinction.

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 when-to-use guidance is provided. The description does not mention alternatives like export_presentation, when saving is appropriate, or what conditions would make another tool a better choice.

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

set_core_propertiesC

Set core document properties.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
authorNo
subjectNo
commentsNo
keywordsNo
presentation_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

With no safety annotations provided, the description carries the full burden of behavioral disclosure. Saying 'Set' indicates mutation, but it does not explain whether null values clear properties, whether the change is reversible, or whether only explicitly supplied properties are updated. The agent is left unaware of side effects.

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

Conciseness3/5

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

The description is only four words and contains no filler, so it is concise. But it is under-specified for a tool with six optional nullable parameters; the brevity comes at the expense of needed detail, resembling under-specification rather than polished efficiency.

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 0% schema coverage and no annotations, the description is not complete enough to support correct invocation. It does not explain which document is affected, how presentation_id should be supplied, or what null parameter values mean. The output schema helps only with return values, not with these key ambiguities.

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 description coverage is 0% and the description names none of the six parameters or their intended behavior. The parameter names are self-evident, but the description does not clarify the meaning of the nullable defaults or how presentation_id is used, so it fails to compensate for the missing schema descriptions.

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

Purpose4/5

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

The description states a clear verb and resource: 'Set core document properties.' The schema confirms the scope includes title, author, subject, comments, keywords, and presentation_id. However, it does not explicitly differentiate this from siblings like save_presentation or create_presentation, and 'core document properties' is left undefined for an agent.

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?

There is no guidance about when to use this tool instead of a sibling, no exclusion conditions, and no prerequisites. An agent cannot determine whether this is the appropriate tool for metadata updates versus other presentation-management operations.

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

update_chart_dataA

Replace existing chart data with new categories and series.

Args: slide_index: Index of the slide (0-based) shape_index: Index of the chart shape (0-based) categories: List of category names series_data: List of dictionaries with 'name' and 'values' keys presentation_id: Optional presentation ID (uses current if not provided)

Returns: Dictionary with operation results

ParametersJSON Schema
NameRequiredDescriptionDefault
categoriesYes
series_dataYes
shape_indexYes
slide_indexYes
presentation_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

Annotations contain only a title, so the description carries the full behavioral burden. It discloses that data is replaced, but it does not mention side effects, irreversibility, whether the presentation must be saved afterward, or what happens to previous chart data.

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 compact and front-loaded with a one-sentence purpose followed by an Args/Returns breakdown. Every line is informative, though the Returns line is somewhat generic.

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?

All five parameters are clearly explained, including the optional one, and the output schema covers return values so a detailed return description is unnecessary. The main gap is not stating that the shape must already be a chart or how errors are handled.

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 define all parameters, and it does. It explains 0-based indices, categories as names, series_data as dictionaries with 'name' and 'values' keys, and the optional presentation_id fallback behavior.

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

Purpose4/5

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

The description states a specific verb ('Replace') and resource ('existing chart data'), clearly indicating this tool modifies data in an existing chart. It is distinguishable from siblings like add_chart and format_chart_series, though it does not explicitly name them.

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

Usage Guidelines3/5

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

The phrase 'existing chart data' implies this is for charts already in the presentation, providing some usage context. However, it does not explicitly state when to prefer this over add_chart or format_chart_series, nor does it mention preconditions like the target shape needing to be a chart.

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

validate_presentationA
Read-only

Check the deck for structural faults, without rendering it.

Run this before export. It is fast — no rendering, no model call — and it catches the class of defect visual inspection cannot: relationships that do not resolve, charts with no data, shapes off the canvas, pictures stretched out of proportion, leftover template placeholder text, notes shared between two slides.

It does NOT judge appearance. Overflowing text, overlaps and spacing are visual_inspect_slides' job; the two are complementary and a finished deck deserves both.

min_severity: "error" reports only faults that can break the file in PowerPoint; "warning" (default) adds the defects a user would notice; "info" adds advisories, notably fonts this server's renderer substitutes with different metrics — which is what makes a text-fit finding from visual QA approximate.

Returns "ok" (no errors), per-severity "counts", and a "problems" list where each entry names the slide, the shape, what is wrong and the tool that fixes it.

ParametersJSON Schema
NameRequiredDescriptionDefault
min_severityNowarning
presentation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses that it does no rendering, makes no model call, is fast, and only evaluates structural defects rather than appearance. It also explains how min_severity changes the reported faults, including a nuanced note about font substitution affecting visual QA approximations.

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 front-loaded with the core purpose, then uses short labeled segments for usage, non-goals, severity semantics, and return value. Every sentence adds operational value without filler or repetition.

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

Completeness5/5

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

For a two-parameter read-only validation tool, this description covers when to run it, what it detects, what it deliberately does not detect, severity semantics, and return shape. Nothing an agent needs to select or invoke it correctly is missing.

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

Parameters5/5

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

Schema description coverage is 0%, but the description compensates with a detailed explanation of min_severity values ('error', 'warning', 'info') and what each includes. presentation_id is self-explanatory by name, and the overall parameter space is well covered.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'check the deck for structural faults, without rendering it.' It then lists concrete defect classes such as unresolved relationships, charts with no data, shapes off the canvas, and stretched pictures, making it easy to distinguish from visual review tools.

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

Usage Guidelines5/5

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

It explicitly says 'Run this before export' and clearly separates concerns: 'Overflowing text, overlaps and spacing are visual_inspect_slides' job; the two are complementary.' This gives the agent both when-to-use and when-not-to-use guidance with a named alternative.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 48 tool updatesv2.6.0
    • First observedadd_bullet_points
    • First observedadd_chart
    • First observedadd_combo_chart
    • First observedadd_connector
    • First observedadd_image_from_dial_url
    • First observedadd_shape
    • First observedadd_slide
    • First observedadd_table
    • First observedapply_picture_effects
    • First observedapply_professional_design
    • First observedapply_slide_template
    • First observedauto_generate_presentation
    • First observedcopy_slide_between_presentations
    • First observedcreate_presentation
    • First observedcreate_presentation_from_template
    • First observedcreate_presentation_from_template_content
    • First observedcreate_presentation_from_templates
    • First observedcreate_slide_from_template
    • First observeddelete_slide
    • First observedduplicate_slide
    • First observedexport_presentation
    • First observedextract_presentation_text
    • First observedextract_slide_text
    • First observedformat_chart_series
    • First observedformat_table_cell
    • First observedget_design_guidance
    • First observedget_dial_storage_info
    • First observedget_presentation_info
    • First observedget_server_info
    • First observedget_slide_info
    • First observedget_template_file_info
    • First observedget_template_info
    • First observedlist_slide_templates
    • First observedmanage_fonts
    • First observedmanage_hyperlinks
    • First observedmanage_image
    • First observedmanage_slide_masters
    • First observedmanage_slide_transitions
    • First observedmanage_speaker_notes
    • First observedmanage_text
    • First observedmove_slide
    • First observedopen_presentation
    • First observedoptimize_slide_text
    • First observedpopulate_placeholder
    • First observedsave_presentation
    • First observedset_core_properties
    • First observedupdate_chart_data
    • First observedvalidate_presentation

TDQS

B3/5.0
Disambiguation2/5

Too many near-neighbor tools: create_presentation_from_template and create_presentation_from_template_content are almost indistinguishable without deep reading, get_template_file_info vs get_template_info is easy to mix up, and text tools like populate_placeholder, add_bullet_points, manage_text, and optimize_slide_text overlap heavily. Long descriptions help, but the boundaries are not crisp enough for reliable tool selection.

Naming Consistency5/5

All names follow a consistent snake_case verb_noun pattern with clear families: create_*, get_*, add_*, manage_*, format_*. There are no mixed naming conventions or unpredictable verb styles, so an agent can reliably predict related tool names.

Tool Count2/5

48 tools is far above the 25+ heavy threshold, and many could be consolidated: three template-based presentation creators, several overlapping text tools, and multiple image/chart entry points. The broad PowerPoint domain justifies a large surface, but not this much redundancy.

Completeness3/5

The deck lifecycle is well covered: create/open/edit/slide/charts/design/export and structural validation are all present. However, the descriptions repeatedly direct agents to visual_inspect_slides and visual_repair_slides, which are not exposed in this tool list, creating a workflow dead end; manage_slide_masters is also read-only despite being called 'manage'.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/photonn/dial-pptx-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server