Skip to main content
Glama
nutriandrea

indesign-nutria-mcp

by nutriandrea

Published to npm as indesign-nutria-mcp. Your agent starts it with npx -y indesign-nutria-mcp — see Quick Start. InDesign still runs on your machine: the server reaches it over a local bridge, and nothing leaves the box.


šŸš€ Why This Exists

InDesign automation has been broken for 20 years. ExtendScript is ancient. CEP panels are over-engineered. UXP scripting requires a CS degree. You just want AI to do the layout.

This MCP server fixes that. Clone it, point your agent at it, and InDesign is yours to drive like a puppeteer.

šŸ†š MCP vs The Old Ways

MCP (this)

ExtendScript

CEP Panels

UXP Scripts

Manual

Learn in

30 seconds

3 weeks

2 months

1 month

0 (slow)

AI-native

āœ… Any MCP agent

āŒ

āŒ

āŒ

āŒ

Tool count

197

Unlimited (you write them)

5-20 typical

5-20 typical

āˆž (manual)

Error messages

Human-readable

Opaque crashes

Varies

Better

N/A

Setup time

5 minutes

10 minutes

2 hours

30 minutes

Instant

Undo support

āœ… Built-in

āŒ

Varies

āŒ

āœ…

Search text

text_search("pattern")

Write 50 lines

Maybe

Maybe

Ctrl+F

Debug mode

āœ… Stack traces

āŒ

Varies

Limited

N/A

Remote control

āœ… Anywhere STDIO works

āŒ InDesign-only

āŒ

āŒ

N/A

Maintenance

Zero (we handle 197 tools)

You write+test everything

Fragile

Fragile

N/A


Related MCP server: InDesign UXP MCP Server

✨ What It Can Do

šŸ“ Text & Typography (27 tools)

Create frames, set content, apply paragraph/character styles, control formatting, search with GREP, find/replace, apply fonts, set columns, insets, auto-size, vertical justification, drop caps, keep options, hyphenation, tabs, paragraph rules, text wrap, baseline, linking/unlinking.

šŸŽØ Shapes & Objects (20 tools)

Rectangles, ellipses, polygons, lines, groups, anchored objects — create, modify, delete, list, arrange.

šŸ–¼ļø Images (5 tools)

Place from disk, query metadata, fit/proportional, adjust brightness/contrast, relink.

šŸŽ­ Colors & Swatches (6 tools)

CMYK/RGB/LAB/spot swatches, ink list, gradients, apply to fill/stroke.

šŸ“„ Pages & Documents (15 tools)

Create, open, save, close, getInfo, listOpen — plus page add/delete/duplicate/move/getInfo/listAll/applyMaster, sections.

šŸ“Š Tables (20 tools)

Create, set cells, add/delete rows/columns, merge/split, alignment, fills, strokes, insets, header/footer, row/column sizing, table styles, cell styles.

🧬 Styles (10 tools)

Paragraph, character, object styles — create, list, duplicate, delete, apply.

šŸ—ļø Masters & Books (10 tools)

Master spreads — create, duplicate, apply, delete, list, getPages. Books — list, open, getDocuments, synchronize.

šŸ“¤ Export (9 tools)

PDF, EPUB, HTML, JPG, PNG, package — plus preflight, font/swatch/table lists, and script_run() for custom ExtendScript.

šŸ” Find & Replace (5 tools)

GREP find/replace, format-aware find/replace.

šŸ”„ Transform (5 tools)

Align, distribute, rotate, scale, flip.

šŸ”— Interactive (5 tools)

Hyperlinks, buttons, cross-reference anchors.

šŸ“š References (10 tools)

Footnotes, endnotes, cross-references, index entries/topics/generation.

šŸ“‹ Lists (6 tools)

Define, apply to paragraph/selection, remove, restart numbering.

🧩 XML & Data Merge (11 tools)

XML tags, import/export, data merge with CSV/TSV/XML sources.

šŸ”§ Other

Layers, effects (drop shadow, feather, transparency), TOC, sections, undo/redo, undo groups.


🧠 Included AI Skills

Ten skills ship with the repo, auto-loaded by trigger keywords when you use any AI agent:

#

Skill

What it does for you

1

Aesthetic Preference

Asks 8 questions before any creative work — font, palette, style, margins. Builds a persistent JSON profile.

2

Layout Readability

Validates overlays, contrast, orphans/widows, hierarchy, spacing, overflow before delivery.

3

Export & Verify

Mandatory modify → export JPG → analyze pixels → fix → repeat cycle.

4

Import Word

Imports .docx, maps Word styles to InDesign paragraph styles.

5

Batch Operations

Applies the same modification across N pages.

6

Image Optimize

Place, resize, DPI check, relink. Profiles for print (300dpi CMYK) vs web (72dpi RGB).

7

Table Format

Creates and styles tables — columns, rows, borders, fills, merge cells.

8

Template Manager

Save/load reusable page templates.

9

Export Batch

Export same document to multiple formats at once with different profiles.

10

Style Extractor

Scans .indd files, extracts full style profile (fonts, colors, styles, masters, margins) as JSON, replicates on new layout.


šŸ—ļø Architecture

ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”       STDIO        ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”     WebSocket     ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
│  Any AI Agent       │ ◄────────────────► │  indesign-nutria-mcp │ ◄───────────────► │  Adobe InDesign   │
│  (Claude, OpenCode, │                    │  (Node.js MCP Server) │     port 8120     │  + UXP Plugin     │
│   Cursor, etc.)     │                    │  34 handlers         │                    │  + ExtendScript    │
ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜                    │  197 tools           │                    ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
                                           │  10 AI skills        │
                                           ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜

Two ways to reach InDesign

The MCP protocol always speaks stdio. Only the last hop differs, and you pick one per platform:

macOS

Windows

With plugin

UXP panel in plugin/

UXP panel in plugin/

Without plugin

node bridge-proxy.mjs (JXA/osascript)

COM_BRIDGE_ENABLED=true (in-process COM)

Both are supported. The plugin is the richer path (it also emits change events); the proxy exists for setups where you cannot or do not want to load a UXP panel. See WINDOWS.md for the Windows bridge and start-bridge.sh for the macOS one.

Full breakdown: the four macOS processes, the request lifecycle, the error contract and the trust boundaries are in docs/architecture.md.

Full Handler Catalog

Handler

Tools

Key Features

AnchoredObject

5

create, getSettings, release, setPosition, setProperties

Book

4

list, open, getDocuments, synchronize

Changes

1

getStatus — what changed since T?, without touching InDesign

Color

6

swatch CRUD, inks, gradients, apply

DataMerge

5

selectDataSource, listFields, mergeRecords, export, removeDataSource

Document

9

create/open/save/close, getInfo, listOpen, getState, getPageStories, getStoryPages

Effect

4

drop shadow, feather, transparency, gradient feather

Export

10

multi-format export, batch folder, preflight, fonts/swatches/tables/masters/XML, executeScript, script_run

Font

5

list, find, change, missing check, glyph insert

Grep

4

find, replace, findFormat, replaceFormat

Image

5

place, info, adjust, fit, relink

Index

4

addEntry, createTopic, generate, listTopics

Interactive

5

hyperlinks, buttons, anchors

Layer

5

create, delete, list, reorder, setProperties

List

6

define, apply, remove, restart numbering

Master

6

create, duplicate, apply, delete, list, getPages

Note

4

footnotes, endnotes

Object

6

shapes, groups, image links

Page

7

add, delete, duplicate, move, getInfo, listAll, applyMaster

Preview

1

document — render a page as an image the agent can see

Recipe

2

flow a placed text story across pages, export with a named PDF preset — each in one undo group

Resources

6

list/update/embed/unembed links, getLinkInfo

Section

4

create, list, setNumbering, delete

Shape

6

rectangle/ellipse/line/polygon create, delete, modify

Style

7

paragraph/character/object styles CRUD

Table

16

create, cells, rows/columns, merge/split, alignment, fills, strokes, header/footer

TableStyle

4

tableStyle, cellStyle CRUD

Text

7

frames, content, stories, findReplace, BOM filtering, timeout

TextAdvanced

20

columns, wrap, links, drop caps, rules, tabs, formatting read/write, search

Toc

4

createStyle, generate, update, listStyles

Transform

5

align, distribute, rotate, scale, flip

Undo

5

undo, redo, history, beginGroup, endGroup

Xml

6

tags CRUD, tag/untag items, import/export

Xref

3

create, list, updateFormat

197

34 handlers, no duplicates

tests/contract/toolInventory.test.ts pins this number, so the table cannot drift from the code without failing CI.

Verified end-to-end against InDesign 2026 (21.3) on the plugin-free macOS path: MCP stdio → WebSocket bridge → JXA proxy → InDesign, creating a document, adding a text frame, reading it back, and closing.

Closing documents from an agent? document_close defaults to saveOptions: "no" — the only value that cannot raise a modal dialog. "ask" opens a save prompt, and "yes" opens a Save As dialog for a document that was never saved; both block the script until the bridge times out. Save first with document_save { filePath }, then close.

MCP Resources

URI

What it gives you

mcp://session/status

Active document session state

mcp://bridge/status

WebSocket bridge health + queue depth

mcp://tools/inventory

Full 197-tool catalog for agent self-discovery

mcp://document/active

Currently active document info


šŸŽÆ Use Cases

šŸ¢ Agency Production

"Create a 200-page catalog from this CSV. Product name in 14pt Arial Bold, price in 12pt Arial Regular, description in 10pt. Add a red 'SALE' badge on page 1, 50, 100, 150. Export as PDF."

šŸ“š Book Publishing

"Import this Word document. Map Heading 1 to 'Chapter Title' style, Normal to 'Body Text'. Add running headers with page numbers. Generate a TOC. Export to PDF with crop marks."

šŸŽØ Creative Automation

"Take this InDesign template and generate 50 variations with different colors and text from this spreadsheet. Export each as a separate PDF."

šŸ­ Print Production

"Check all 200 files for missing fonts and broken links. Fix them. Export as PDF/X-1a."

šŸ”„ Continuous Publishing

"Every morning at 8am, update the daily newspaper template with fresh content from our CMS, preflight, and upload to the web server."


⚔ Quick Start (30 seconds)

Two halves: the server your agent runs — one line from npm, no clone and no build — and the bridge that reaches InDesign on this machine.

1ļøāƒ£ Connect InDesign

The server listens on 127.0.0.1:8120; something still has to drive InDesign. Pick by platform:

macOS — with the UXP panel (also emits change events)

  1. Open UXP Developer Tool

  2. Load the plugin/ directory — it ships in this repository, so clone it once: git clone https://github.com/nutriandrea/adobe-indesign-mcp (no build step)

  3. Open the MCP Bridge panel — it connects on its own

macOS — without the panel

git clone https://github.com/nutriandrea/adobe-indesign-mcp
cd adobe-indesign-mcp
npm install            # gives the proxy its `ws` dependency; nothing to build
./start-bridge.sh      # launches InDesign, then the JXA proxy

Windows — no bridge process. The COM bridge drives InDesign in-process, so Windows needs neither the clone nor a second process; it is enabled by the env var in the config you use in step 2 (see examples/claude-desktop.windows.json). See WINDOWS.md for the details and caveats.

2ļøāƒ£ Connect your AI agent

Both hosts start the same published package — nothing to clone, nothing to build.

Claude Desktop:

{
  "mcpServers": {
    "indesign": {
      "command": "npx",
      "args": ["-y", "indesign-nutria-mcp"]
    }
  }
}

OpenCode (project opencode.json, or the same block in ~/.config/opencode/opencode.json):

{
  "mcp": {
    "servers": {
      "indesign": {
        "type": "local",
        "command": ["npx", "-y", "indesign-nutria-mcp"]
      }
    }
  }
}

On OpenCode the servers live under mcp.servers, not mcpServers, and the command is an array — that is the documented V2 shape.

Ready-made files for Claude Desktop, Cursor and Claude Code — including the Windows COM variant — are in examples/. Each one is copy-paste.

3ļøāƒ£ Start creating

šŸ¤– "Create a landscape A3 document with 3 pages."
šŸ¤– "Add a blue rectangle covering the top half of page 1."
šŸ¤– "In the rectangle, add text 'Hello World' in white, Arial Bold 72pt."
šŸ¤– "Export page 1 as JPG."

šŸ“ Notes for MCP client developers

Building a custom client (script, harness, test runner) against this server? Two lessons from real-world integration:

Pitfall

Fix

Large responses arrive split across stdout chunks. preview_document at 150ppi returns ~100+ KB of base64 — more than one pipe chunk. Parsing each data event with JSON.parse(chunk) silently drops the pieces and the call appears to hang forever.

Accumulate stdin into a buffer and only JSON.parse complete newline-delimited lines: buf += chunk; while ((i = buf.indexOf('\n')) >= 0) { parse(buf.slice(0, i)); buf = buf.slice(i + 1); }

Image tools return image content, not text. preview_document responds with { type: 'image', mimeType: 'image/png', data: '<base64>' } — reading .text yields undefined.

Read the base64 payload from content[0].data (check content[0].type).

Every message is a single-line JSON-RPC object terminated by \n; there is no framing beyond the newline.


šŸ†• What's New in v1.6.0

Fixed

āš ļø

Read this before you script

The layout skill named tools that do not exist

skills/indesign/indesign-mcp-layout/SKILL.md advertised an mcp_indesign_* prefix the registry never used, and pointed connectivity checks at health_check and list_ai_skills — neither is registered by any handler. A skill is instruction, so naming a tool that does not resolve sends a model into a second failure on top of the one it was recovering from.

Change

What it means for you

The skill names real tools now

It points at the bare tool names the registry actually exposes, and documents the read-only resources (mcp://bridge/status and friends), which never touch InDesign and cost no round-trip.

Skills are guarded like the instructions are

tests/unit/skillGuidance.test.ts walks every SKILL.md under skills/ and marketplace/ and fails on a tool name the registry does not know — and on a skill whose frontmatter name disagrees with its folder. Regression-proven against the bug above.

Marketplace counts are checked too

verify:tool-counts now reads the markdown under marketplace/, so the number quoted to a buyer is checked alongside the README, llms.txt and the package description.

Added

Change

What it means for you

Client configs

examples/ holds copy-paste configs for Claude Desktop (macOS, and the Windows COM variant), Cursor and Claude Code, plus examples/README.md.

Registry and bundle metadata

server.json — generated from package.json and gated by verify:server-json — and mcpb/manifest.json, so the MCP Registry and an MCP Bundle can be published from the same release.

Release automation

release.yml takes a tag through verify and verify:pack, publishes to npm with provenance, builds the .mcpb and attaches it to the GitHub Release with the CHANGELOG notes. publish-mcp-registry.yml chains off the release, so the registry never advertises a version npm does not have. validate-release-tag.sh refuses a tag that disagrees with package.json or has no CHANGELOG section.

A packaged companion skill

marketplace/agensi/ prepares the skill for a third-party marketplace, with npm run build:agensi asserting the archive shape the reviewer requires — one top-level folder, SKILL.md at its root, text files only. Like mcpb/, it does not ship to npm.

For AI agents

āš ļø

Read this before you script

Pass document_id — don't trust the front tab

Every tool takes an optional document_id: a document name (as document_listOpen reports it) or a 0-based index. With more than one document open the front tab is not reliably the intended target, and a call that lands on the wrong document edits the wrong file. Call document_getState, then pass document_id on everything that follows.

Change

What it means for you

document_id on every tool

197 tools, one extra optional parameter. Omit it and a tool acts on the front document — exactly the previous behaviour, so nothing you already send changes.

A target that is not open fails loudly

document_id 'Gone.indd' is not open. Open documents: A.indd, B.indd, classified document_not_found and suggesting document_listOpen. Previously the script silently edited whichever document happened to be frontmost.

One shared resolver

app.activeDocument was written inline in 197 places across 32 handlers; __resolveDocument() is now injected with every script and every document-scoped handler resolves through it, so the target holds for the whole call — even if the front tab changes mid-script.

Safe by construction

document_id reaches InDesign as a JSON string literal and is matched by name, so it is never executable. It is bound per call in AsyncLocalStorage, so a call that awaits before dispatching cannot be hijacked by a concurrent one.

Changed

Change

What it means for you

The "pin the document" advice is now executable

The connect-time contract used to tell the host to ask which document was meant. It now names document_id and how to pass it, and the shipped indesign-mcp-layout skill points at it too.

For AI agents

āš ļø

Read this before you script

Failures now tell you how to recover

A failing call returns a JSON envelope { ok: false, code, message, suggested_next_tool?, suggested_args? } instead of prose. Branch on code, and call suggested_next_tool when it is present rather than guessing.

State before action

document_getState returns the front document's geometry, its index, every open document, the active layer and the selection count in one round-trip. Call it before mutating instead of assembling that state from four separate calls.

A recipe is one call, not a chain

recipe_flowTextStory places a text file and flows it across pages; recipe_exportPreset applies a named PDF preset and exports. Measured live, the flow cost 1 call / 215 bytes against 6 calls / 786 bytes for the nearest atomic chain — which cannot place the text at all.

Change

What it means for you

Structured error envelopes

Sixteen failure classes, each with a suggested_next_tool checked against the live registry (a bad frame index suggests document_getInfo; a timeout suggests document_listOpen). ExtendScript errors carry line, file and stack.

A workflow contract on connect

The server advertises roughly 680 tokens of instructions — bridge bootstrap, state-before-action, the document_close save trap, the error-envelope shape and undo grouping.

document_getState

One round-trip replaces the document_getInfo + document_listOpen + layer + selection sequence.

preview_document takes documentIndex

Render any open document, not only the front one. Exports are capped at 4 MB and re-rendered once at a fitting resolution before failing with output_too_large.

Two new recipes

recipe_flowTextStory and recipe_exportPreset, bringing the catalog to 197.

Opt-in success envelope

RESPONSE_ENVELOPE_SUCCESS (or responseEnvelope.success) wraps successful results as { ok: true, ... }, so a single key covers success and failure. Off by default, because it changes the response shape.

A smaller, correct package

A files allowlist replaces the .npmignore denylist: 1.6 MB unpacked, down from 4.4 MB — and the bridge-proxy.mjs that the macOS launcher execs is now actually shipped.

Changed

Change

What it means for you

Error responses are JSON text

The failure message is preserved verbatim inside the envelope; isError: true is unchanged.

document_close defaults saveOptions to "no"

"ask" raised a modal save dialog that blocked until the bridge timed out and could leave InDesign wedged; "no" cannot prompt. Call document_save first when you want the work kept.

Fixed

Fix

What it means

Every call after undo_beginGroup failed

wrapExtendScript set app.scriptPreferences.undoMode, a property InDesign does not have. Undo groups now run through app.doScript(..., UndoModes.ENTIRE_SCRIPT).

undo, redo and undo_history threw on every call

They read document.undoable / document.redoable, which are not part of the DOM.

The server reported itself as v1.0.0

Four releases after v1.0.0 it advertised the old literal on initialize. SERVER_VERSION is now the single source of truth, and two gates keep it honest.

For AI agents

āš ļø

Read this before you script

Prefer the typed tools

export_executeScript and script_run have no cancellation. A hung script leaves the bridge busy and every later call queues behind it until the host restarts. Loops, font enumeration and multi-mutation probes belong in the typed tools, which validate arguments and time out. See skills/indesign/indesign-mcp-layout.

Change

What it means for you

The bridge protocol is now canonical

Responses are { type: 'result', id, result } or { type: 'error', id, error }. Legacy success/response types are still accepted on input, but an unknown type with a valid id is now an explicit error instead of a silently resolved promise.

Plugin-free macOS setup

start-bridge.sh launches InDesign and the JXA proxy — no UXP panel to load.

The JXA proxy no longer blocks or corrupts

Scripts reach osascript through a temp file instead of shell-quoted -e strings, and execution is asynchronous with a FIFO queue. A script containing a quote, backslash or newline can no longer be mangled, and the MCP server keeps answering while InDesign works.

Configurable InDesign version

INDESIGN_APP replaces the hardcoded "Adobe InDesign 2024" process name.

The panel connects itself

The MCP Bridge panel connects on open, so there is no Connect click to miss.

InDesign 2026 anchoring

Creating an anchored object no longer depends on move(), which 2026 rejects for insertion-point targets.

The shipped config starts everywhere

It declared the wrong MCP transport and would have aborted startup on macOS and Linux had it enabled the Windows COM bridge. Both are now covered by a test.

Change

What it means for you

Agent vision: preview_document

Render any page as an image the agent can actually see — layout mistakes get caught in the loop, not after export.

Batch PDF: export_batchFolder

Export every .indd in a folder to PDF in one call, with per-file results.

Windows COM bridge

Run with zero plugins via COM_BRIDGE_ENABLED=true. See WINDOWS.md.

Hardened file paths

Every file-touching tool validates paths up front — traversal attempts (..) and system directories are rejected before InDesign ever sees them (now 11 guarded call sites).

Change

What it means for you

InDesign 2026 ready

Color and anchored-object tools work on 2026's renamed enums — no more silent failures after upgrading.

Real env var config

Every setting in .env.example is now honored: BRIDGE_PORT, HTTP_BRIDGE_ENABLED, LOG_LEVEL, … Invalid values never block startup.

No more 30s hangs

If the plugin isn't connected, tool calls fail instantly with "Bridge is not connected" instead of timing out.

One escaping path

All handlers share a single battle-tested ExtendScript string escaper.

Hardened path validation

File-path checks now use true containment (no prefix-collision escapes).

Honest status

getStatus().connected reflects actual plugin connectivity, and CI enforces coverage gates.

Feature

Tools

What it solves

Text formatting read

text_getFormatting

Get font/size/style per text range. No more custom scripts.

Character style apply

text_applyCharStyle

Apply to a range in one call.

Font apply

text_applyFont

Apply font family/style/size to a range.

Text search

text_search, text_searchFormatting

GREP + format-aware search with paragraph-relative positions.

Story→Page map

document_getPageStories, document_getStoryPages

Which stories are on which pages.

Undo groups

undo_beginGroup, undo_endGroup

Group operations into one undo step.

Debug mode

script_run(code, debug=true)

Full ExtendScript stack traces.

BOM filtering

Text reads

\ufeff and \u0004 filtered by default.

Timeout/maxResults

text_getStories, etc.

Custom limits for large documents.

MCP resources

mcp://tools/inventory

Agent auto-discovers all tools.


āš™ļø Configuration

All settings have defaults — zero config required. To customize, copy .env.example to .env or pass a JSON file; environment variables win over the file:

BRIDGE_PORT=8120            # WebSocket port the UXP plugin connects to
HTTP_BRIDGE_ENABLED=false   # optional REST fallback bridge
HTTP_BRIDGE_PORT=3000
SERVER_TRANSPORT=stdio      # stdio | websocket
LOG_LEVEL=info              # debug | info | warn | error
COM_BRIDGE_ENABLED=false    # Windows only: drive InDesign over COM, no plugin
RESPONSE_ENVELOPE_SUCCESS=false  # wrap successful results as { ok: true, ... }

The plugin-free macOS proxy takes its own variables:

INDESIGN_APP="Adobe InDesign 2026"     # matches your installed version
BRIDGE_WS_URL=ws://127.0.0.1:8120
BRIDGE_TIMEOUT_MS=120000               # a long export is not a hang
BRIDGE_RECONNECT_DELAY_MS=3000

Precedence: environment variables > JSON config file > defaults. Invalid values are ignored, never fatal.


🪟 Windows

Two ways to run on Windows: the standard UXP plugin flow (identical to macOS) or the new opt-in COM bridge that needs no plugin at all. See WINDOWS.md.


šŸ“¦ Project Structure

ā”œā”€ā”€ src/
│   ā”œā”€ā”€ server/          # MCP server (STDIO transport)
│   ā”œā”€ā”€ bridge/          # WebSocket bridge, ScriptExecutor, protocol, COM executor
│   ā”œā”€ā”€ handlers/        # 34 handler modules (197 tools)
│   ā”œā”€ā”€ schemas/         # Zod parameter schemas
│   ā”œā”€ā”€ core/            # Session tracking
│   ā”œā”€ā”€ types/           # TypeScript definitions
│   └── utils/           # Config, logger, security, JSON polyfill
ā”œā”€ā”€ plugin/              # UXP panel (index.html, index.js, manifest.json)
ā”œā”€ā”€ examples/            # Copy-paste client configs (Claude Desktop, Cursor, Claude Code)
ā”œā”€ā”€ mcpb/                # MCP Bundle manifest (npm run build:mcpb packs the archive)
ā”œā”€ā”€ server.json          # MCP Registry manifest (generated from package.json)
ā”œā”€ā”€ llms.txt             # llms.txt index for agents and directories
ā”œā”€ā”€ bridge-proxy.mjs     # Plugin-free macOS proxy (JXA/osascript)
ā”œā”€ā”€ jxa-driver.js        # Runs one ExtendScript inside InDesign
ā”œā”€ā”€ start-bridge.sh      # Launches InDesign + the proxy
ā”œā”€ā”€ skills/              # Agent-facing skills shipped with the server
ā”œā”€ā”€ marketplace/         # Store listings that package a skill for third-party channels
ā”œā”€ā”€ tests/               # 1131 tests (vitest)
ā”œā”€ā”€ .opencode/skills/    # 10 AI agent skills
ā”œā”€ā”€ docs/                # Documentation and fork audits
ā”œā”€ā”€ media/               # Social preview, hero images
ā”œā”€ā”€ dist/                # Compiled output
└── opencode.json        # MCP configuration

šŸ“‹ Requirements

Requirement

Version

Adobe InDesign

2022+ (2024/2025/2026 recommended)

Node.js

18+

OS

macOS or Windows (Linux can run the MCP server, but no InDesign automation path exists there)


🧪 Development

npm test            # Run 1131 tests
npm run test:watch  # Watch mode
npm run build       # TypeScript compile
npm run lint        # ESLint

Live smoke test (macOS)

npm run smoke:macos

npm test covers the handlers, the protocol and the startup sequence, but it cannot see the seams between the four separate processes on the plugin-free macOS path. That gap is not hypothetical: 965 tests once passed against a build whose bridge never listened on its port, so every tool call failed in the field and nothing went red.

smoke:macos drives the real chain — MCP stdio → WebSocket bridge → JXA proxy → InDesign — against a running InDesign, creating a document, writing to it, reading it back, and closing it. It creates one unsaved document and cleans up after itself. It needs a desktop app, so it is not part of npm test and does not run on CI; it exits 0 with a SKIP notice if InDesign is not open.

Run it by hand before releasing a change to the bridge, the protocol, the proxy or the driver.

npm run smoke:recipes   # the live gate for the two recipes

smoke:recipes does what the unit tests cannot: it flows a long text file with recipe_flowTextStory, checks the document grew by exactly what the tool reported, calls undo once to confirm the whole flow is a single undo step, then exercises both preset paths of recipe_exportPreset. Same rules as above — needs a desktop app, exits 0 with a SKIP notice when InDesign is closed.

npm run smoke:target    # the live gate for document_id

smoke:target opens two documents and proves the thing document_id is for: a call that names the non-front document edits that document and leaves the front one alone. It then checks index targeting, that omitting document_id still acts on the front document (the additive guarantee), that an unopened target arrives as a document_not_found envelope suggesting document_listOpen, and that a hostile document_id is inert rather than executed. It closes only the documents it created, never saves, and leaves every pre-existing document untouched. Same rules as above — needs a desktop app, exits 0 with a SKIP notice when InDesign is closed.


šŸ—ŗļø Roadmap

  • InDesign Server — headless server support for CI/CD pipelines

  • Live preview — stream InDesign canvas to agent

  • Template marketplace — share and discover InDesign templates

  • Natural language → layout — describe a page, get a page

  • Batch PDF processing — apply changes across hundreds of files

  • VSCode extension — control InDesign from your editor


šŸ“š Deep Dives


šŸ¤ Contributing

PRs welcome! The handler pattern is designed to be simple:

  1. Create src/handlers/YourHandler.ts

  2. Define tools with Zod schemas

  3. Register in IndesignMcpServer.ts

  4. Add tests

Check CONTRIBUTING.md for details.


šŸ™ Acknowledgements

This server is a merge of what four people found in the field. Each of these contributions fixed something that was genuinely broken, not a cosmetic preference.

  • @graydini — built the Windows COM bridge that this project runs on today: a persistent cscript process holding one live COM connection, NEVER_INTERACT so export dialogs can never block, and the path-containment hardening in validateFilePath. See PR #1 and the PR #21 merge. Also reported the InDesign 2026 API incompatibilities that shaped official Windows support: renamed and read-only ColorModel and AnchorPoint enums, and move() no longer accepting InsertionPoint targets. Earlier fixes from the same line of work landed on main as safe basedOn/pointSize reads in style listing, rich style-creation parameters, \n → paragraph-break normalization in text content, and an eval-free JSON polyfill that survives the ExtendScript sanitizer. Their branch also carried COM-specific operational knowledge — that a hung script wedges the Windows bridge with no way out, that fontFamily, italic and weight throw under COM, and that InDesign must be visibly running — now documented in WINDOWS.md and the layout skill. A file-by-file audit of what was still unmerged is in docs/forks/graydini-windows-com-bridge-audit.md.

  • @advaitakelkar — diagnosed why the macOS proxy returned junk, in PR #22. Three real bugs in one report: osascript sends script results on stderr, so every successful call was read as a failure; the script was passed through shell -e quoting, which mangles any quote, backslash or newline; and the app name was hardcoded to "Adobe InDesign 2024", so every other version failed. The same work also moved the connection handshake out of app.doScript, where it was being parsed as ExtendScript. Adopted and extended — see What's New in v1.4.2.

  • @ijeetu — two fixes, both easy to miss and both real. The MCP Bridge panel now connects on open instead of waiting for a Connect click, so the panel no longer looks dead when the server is already running. Earlier, they traced a parse failure in the JSON polyfill to sanitizeCode() rewriting eval( into a comment and orphaning the parentheses — the shipped wrapExtendScript already reflects that fix.


šŸ“„ License

MIT Ā© Andrea Cacioppo


Available Tools

197 tools
anchoredObject_createC

Create an anchored object at an insertion point or attach to a text frame

ParametersJSON Schema
NameRequiredDescriptionDefault
widthYes
heightYes
xOffsetNo
yOffsetNo
spaceAboveNo
storyIndexYes
anchorPointNotopLeft
contentTypeYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
insertionIndexYes
anchoredPositionNocustom

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It is a mutation/creation tool, yet the description says nothing about required permissions, whether the target document must already be open, what happens on failure, or what the resulting object/response looks like. The one sentence only restates purpose.

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 single sentence is front-loaded and free of waste, so it reads cleanly. However, for an 11-parameter creation tool with no annotations it is under-sized rather than appropriately concise, leaving most call-relevant detail unaddressed.

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 high complexity (11 params, 5 required, three enums), no annotations, and no output schema, a one-line description is inadequate. An agent lacks the behavioral and parameter context needed to invoke this reliably.

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

Parameters2/5

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

Schema description coverage is only 9% across 11 parameters (only document_id is documented), so the description must compensate and does not. It alludes loosely to 'insertion point' (insertionIndex) and 'text frame' (contentType), but leaves width, height, xOffset, yOffset, spaceAbove, anchorPoint, and anchoredPosition entirely unexplained.

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 gives a specific verb (Create) and resource (anchored object) and even names two placement modes: 'at an insertion point or attach to a text frame.' This distinguishes it from its direct siblings like anchoredObject_setPosition or anchoredObject_release, though it does not explicitly differentiate from text_addFrame or shape_create.

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 explicit when-to-use or when-not-to-use guidance, and no named alternatives. It hints at two modes but does not say when to prefer one over the other, nor mention that a document must be open (implied only by the document_id parameter).

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

anchoredObject_getSettingsC

Get anchored object settings

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIndexYes
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. 'Get' implies a read, but there is no statement of what settings are returned, whether the object must exist, whether settings include position/anchor properties, or any permission requirement.

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 single sentence is short, but it is under-specified rather than concise — it consumes the space without conveying any information beyond the tool name. Nothing meaningful is front-loaded because nothing meaningful is present.

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?

There is no output schema and no annotation coverage, so the description must explain what comes back and how to address the target. It leaves the required pageIndex/itemIndex addressing scheme unexplained and never says which settings are returned, making it inadequate for an agent to call or interpret this 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 coverage is only 33%: document_id is well documented in the schema, but the two REQUIRED parameters pageIndex and itemIndex have no description in either the schema or the description. With low coverage, the description was required to compensate, and it adds zero parameter meaning.

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 states a verb and resource ('Get anchored object settings'), so the agent knows it is a read of anchored-object settings. However, it is essentially the tool name re-expanded into sentence case, with no scope details (which anchored object, which settings) and nothing to distinguish it from anchoredObject_setProperties, anchoredObject_setPosition, or anchoredObject_release. It sits between a vague purpose and a tautology.

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, no prerequisites, and no named alternatives. The sibling set contains several anchoredObject_* tools and the agent is given no criterion for choosing getSettings over them.

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

anchoredObject_releaseC

Release anchored object to regular page item

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIndexYes
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, and it only says the object becomes a regular page item. It does not say whether position/text-wrap is preserved, whether the change is reversible, or what happens to the anchoring frame — the details an agent most needs for a mutation.

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?

A single, front-loaded sentence with no filler. It is efficient, though the brevity shades into under-specification rather than tightness.

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 no annotations, no output schema and two undocumented required parameters, the definition is materially incomplete. It omits preconditions, side effects and the indexing semantics needed to call it correctly.

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

Parameters2/5

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

Schema description coverage is only 33%: document_id is documented but pageIndex and itemIndex — both required — have no schema descriptions and no explanation in the description. The description adds zero parameter meaning, so an agent cannot tell how the target anchored object is identified.

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?

States a specific verb (release) and resource (anchored object) plus the resulting state (regular page item). That distinguishes it from the sibling verbs anchoredObject_create, setPosition, getSettings and setProperties, though it never names them explicitly.

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, no preconditions (e.g. the object must already be anchored), and no mention of the sibling tools an agent might confuse this with. The agent must infer everything from the name.

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

anchoredObject_setPositionC

Reposition an anchored object

ParametersJSON Schema
NameRequiredDescriptionDefault
xOffsetNo
yOffsetNo
itemIndexYes
pageIndexYes
spaceAboveNo
anchorPointNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
anchoredPositionNo

TDQS

C2.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries full behavioral burden. It implies a mutation but does not disclose permission requirements, whether offsets are relative or absolute, what happens to inline versus custom anchored objects, or whether changes are reversible. Only the bare fact of mutation is conveyed.

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

Conciseness3/5

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

The description is extremely short and front-loaded, with no wasted words. However, this brevity reflects under-specification rather than efficiency, since critical invocation details are absent.

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 an eight-parameter mutation tool with no annotations, no output schema, and low schema coverage, the four-word description is grossly inadequate. An agent cannot reliably infer coordinate semantics, enum meanings, or required context from it.

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

Parameters2/5

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

Schema description coverage is only 13%, with seven of eight parameters undocumented. The description adds no meaning beyond the tool name, leaving xOffset, yOffset, spaceAbove, anchorPoint, anchoredPosition, pageIndex, and itemIndex without explanation.

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 ('Reposition an anchored object'), which is clearer than the name alone. However, it does not distinguish this from sibling tools like anchoredObject_setProperties or anchoredObject_create, so an agent cannot tell from the description why it would choose this one.

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 anchoredObject_setProperties or transform_* tools. No prerequisites, no exclusions, and no context about when repositioning is appropriate are provided.

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

anchoredObject_setPropertiesC

Set multiple anchored object properties

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIndexYes
pageIndexYes
propertiesYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Set' implies a mutation, but the description does not disclose permission requirements, reversibility, what happens to omitted properties, or the expected response.

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 a single sentence and is front-loaded, but it is under-specified rather than appropriately concise. It essentially restates the tool name without adding operational 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 mutation tool with four parameters, three required parameters, a nested free-form properties object, and no annotations, the description is far too thin. It omits the parameter semantics an agent needs and provides no behavioral context beyond the word 'Set'.

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

Parameters2/5

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

Schema description coverage is only 25%, and only document_id is documented in the schema. The description does not explain pageIndex, itemIndex, or the structure/accepted keys of the nested properties object, so it fails to compensate for the coverage gap.

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 states a specific verb ('Set') and resource ('anchored object properties'), but 'properties' is vague and no scope or property types are identified. It does not differentiate this tool from siblings such as anchoredObject_setPosition or anchoredObject_getSettings.

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 guidance, no prerequisites, and no alternatives named. An agent cannot tell from the description when to choose this over anchoredObject_setPosition or anchoredObject_create.

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

book_getDocumentsC

List all documents in a book

ParametersJSON Schema
NameRequiredDescriptionDefault
bookIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden. 'List' implies a read-only operation, but it says nothing about ordering, pagination, whether the book must be open, or what happens with an invalid bookIndex. This is a significant disclosure gap for an unannotated 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?

A single, front-loaded sentence with no wasted words. It is concise, though partly because it omits necessary detail rather than because it is efficiently complete.

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?

No annotations, no output schema, and an undocumented required parameter mean the description should do far more work. It does not explain the book context, the return contents, or the meaning of bookIndex, so an agent lacks enough to invoke it confidently.

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 coverage is 50%: document_id is documented but bookIndex — the sole required parameter — has no description in either the schema or the description. The description adds no parameter meaning at all, leaving the most important parameter's semantics (e.g. which index, how to obtain it, relative to book_list) unexplained.

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?

States a specific verb and resource ('List all documents in a book'), so an agent can tell it apart from book_list and book_open. However, it does not explicitly differentiate itself from siblings or clarify that it operates on an open book given the required bookIndex.

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 guidance, no prerequisites (e.g. must the book already be open?), and no mention of alternatives such as book_list or book_synchronize. Usage is only implied by the name.

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

book_listB

List all open books in InDesign

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden, and it falls short: it does not say what is returned (book filenames, paths, states), whether the call is read-only, or why a document_id would matter for a 'list all' operation. The mismatch between the parameter and the 'all open books' scope is left unexplained.

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?

A single compact sentence with no filler, and the resource being listed is front-loaded. Its brevity is appropriate, though it shades into under-specification rather than pure economy.

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 list tool with no output schema and no annotations, the description is minimally adequate, but it leaves unresolved how the document_id argument interacts with listing 'all open books' and gives no hint of the return payload.

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 100%, so the single document_id parameter is fully documented in the schema, giving a baseline of 3. The description adds no parameter meaning and arguably introduces tension with the parameter's 'which document to act on' semantics.

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?

States a specific verb and resource ('List all open books') so an agent knows the operation immediately. However, it gives no differentiation from the closely related siblings book_getDocuments and book_open, and 'all open books' appears to conflict with the document_id parameter the schema exposes.

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?

Usage is only implied: an agent can infer you call it to enumerate currently open books, but there is no statement of when to prefer it over book_getDocuments or book_open, and no prerequisites. No exclusions or alternatives are named.

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

book_openC

Open an InDesign book file (.indb)

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, yet it discloses nothing beyond the verb: not whether opening loads the book into the Books panel, whether it is idempotent if the book is already open, what permissions or path constraints apply, or whether it mutates application state. For a state-changing open operation this is a significant gap.

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?

A single short sentence with no wasted words and the resource front-loaded. It is efficient, though the terseness is part of what leaves the behavioral and parameter gaps.

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 state-changing tool with no annotations, no output schema, and one undocumented required parameter, the description is not complete enough for an agent to call it correctly in ambiguous cases (e.g., relative paths, already-open books). It needs at least a path expectation and a note on post-open state.

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

Parameters2/5

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

Schema description coverage is only 50%: document_id is documented in the schema, but filePath has no description at all (only a type and minLength), and the description adds no path format, absolute-vs-relative, or extension requirements. With coverage this low, the description needed to compensate and does not.

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 gives a specific verb ("Open") and resource ("InDesign book file (.indb)"), and the .indb qualifier implicitly separates it from document_open, which handles .indd documents. It stops short of naming that sibling or stating scope explicitly, so it is clear but not fully differentiated.

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

Usage Guidelines2/5

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

No guidance on when to use this versus document_open, book_list, or book_getDocuments, and no prerequisites such as whether the file must exist on disk or whether the book must already be registered. The agent is left to infer usage entirely from the file extension.

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

book_synchronizeC

Synchronize book documents with the style source

ParametersJSON Schema
NameRequiredDescriptionDefault
bookIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden, yet it says nothing about what synchronization overwrites (local overrides, styles, master pages), whether it is reversible, or what permissions are needed. "Synchronize" implies a mutating, potentially destructive operation with no warning given.

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?

A single short, front-loaded sentence with no padding, but it is under-specified rather than genuinely concise. There is no wasted wording, yet also very little content.

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 mutating tool with no annotations, no output schema, and a required parameter undocumented in both schema and description, the definition is materially incomplete. An agent cannot predict what will change or how to confirm success.

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

Parameters2/5

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

Schema description coverage is only 50%; document_id is well documented in the schema (referencing document_listOpen) but bookIndex has no description anywhere. The description adds no parameter meaning to compensate for the undocumented required parameter.

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?

"Synchronize book documents with the style source" gives a specific verb (synchronize) and resource (book documents), and distinguishes itself from the sibling book tools (book_list, book_open, book_getDocuments), which are read/management operations. The phrase "style source" is somewhat vague about which styles are pulled and in which direction, but the core action is clear.

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 indication of when to use this versus alternatives, no prerequisites (e.g., a book must be open), and no exclusions. The agent must infer that a book context is required and that this is distinct from style_listParagraph or master_apply.

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

cellStyle_createC

Create a cell style in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
basedOnNo
topInsetNo
fillColorNo
leftInsetNo
rightInsetNo
bottomInsetNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
strokeColorNo
strokeWeightNo
paragraphStyleNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full behavioral burden. 'Create' implies mutation, but it says nothing about requiring an open document, permission or persistence needs, whether the new style is applied anywhere, or what happens with the document_id default. It only vaguely gestures at the target document.

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?

A single front-loaded sentence with no waste, but so short that it is under-specified rather than concise. Brevity here comes at the cost of required information.

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 an 11-parameter mutation tool with no annotations, no output schema, and almost no parameter documentation, the definition is far too thin. An agent lacks the information needed to invoke it correctly.

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?

With 11 parameters and only 9% schema description coverage (only document_id documented), the description mentions none of them — not name, basedOn, fillColor, insets, stroke, or paragraphStyle. It fails to compensate for the schema gap in any way.

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?

States a specific verb and resource ('Create a cell style'), which is unambiguous about the operation. However, it offers no differentiation from close siblings like tableStyle_create, style_createParagraph, or cellStyle_list — an agent must infer which style family applies.

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 versus the many other style-creation tools, nor any prerequisites or exclusions. The only context is the phrase 'in the active document', which is implied usage at best.

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

cellStyle_listB

List all cell styles in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'List' implies a safe read, but the description says nothing about the return shape, ordering, pagination, or what happens if no document is open. For a zero-annotation tool this leaves meaningful gaps.

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 padding or redundancy. Nothing to trim.

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 trivial read-only list tool with no required parameters this is roughly adequate, but with no output schema and no annotations the description never tells the agent what a listing yields (names? IDs?) or how to use the result in follow-up calls. Minimum viable but with a clear gap.

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 100%, and the single document_id parameter is fully documented in the schema (name or 0-based index, defaulting to the front document). The description adds no syntax or format detail beyond that, so the baseline 3 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?

States a clear verb (list) and a specific resource (cell styles in the active document). An agent can distinguish it from cellStyle_create without opening the schema. It stops short of explicitly contrasting with the closely related style_listParagraph/style_listCharacter/tableStyle_list siblings, which is the only thing that would push it to a 5.

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 only says what it does, not when to reach for it. It never mentions the alternative listing tools (style_listParagraph, style_listCharacter, tableStyle_list) that an agent must choose between, nor any precondition such as needing an open document.

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

changes_getStatusA

Report document change activity pushed by the plugin over the bridge — no InDesign round-trip. Pass since (epoch ms) to learn whether anything changed after that moment, e.g. to skip re-rendering a preview when nothing changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description must carry the behavioral load, and it discloses a non-obvious trait: the status comes from plugin-pushed state over the bridge rather than a live InDesign round-trip, which implies low cost and pushed-state freshness. It still omits the failure mode when the plugin/bridge is absent and does not state the read-only nature explicitly.

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

Conciseness5/5

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

Two sentences, zero filler, with the mechanism/scope stated first and the parameter guidance second. Every clause carries information.

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

Completeness3/5

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

No output schema exists, so the description should describe the returned status shape, yet it only implies a changed/unchanged answer without specifying fields (timestamps, ids, counts) or behavior when no document is open. Adequate for choosing the tool, thin for interpreting its result.

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

Parameters4/5

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

Schema coverage is only 50%: document_id is documented in the schema, but `since` is bare. The description compensates by giving its unit (epoch ms) and its decision semantics ('anything changed after that moment'), which is genuinely more than the schema provides.

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?

States a specific verb ('Report') and resource ('document change activity'), and adds a distinguishing qualifier: the data is 'pushed by the plugin over the bridge — no InDesign round-trip.' That separates it from sibling state-readers like document_getState, though it never names an alternative explicitly.

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?

Gives a concrete when-to-use: pass `since` to learn whether anything changed after a moment, 'e.g. to skip re-rendering a preview when nothing changed.' That is actionable context, but there are no exclusions or explicit alternatives (e.g. when to prefer document_getState).

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

color_applyB

Apply a color swatch to selected item (fill or stroke)

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNofill
swatchNameYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. It hints at operating on the 'selected item' (implying a required selection) but says nothing about what happens with no selection, whether the swatch must already exist, undo behavior, or the effect of target='both'. Significant behavioral gaps remain for a mutation tool.

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

Conciseness5/5

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

A single tight sentence that is front-loaded with the verb and resource. Nothing is wasted and the parenthetical is immediately useful.

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?

A 3-parameter mutation tool with no annotations and no output schema needs more context than this one-liner provides. The document_id parameter is self-documented in the schema, but the selection requirement and failure/side-effect behavior are left unexplained.

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

Parameters3/5

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

Schema coverage is only 33%, so the description should compensate. It maps 'swatch' to swatchName and 'fill or stroke' to the target enum, covering two of three parameters at a conceptual level, but adds no format or value semantics beyond what the schema already shows. Baseline 3 fits.

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?

States a specific verb (apply), resource (color swatch), and target (selected item, fill or stroke). The parenthetical clarifies the operation's scope. It does not, however, name or differentiate itself from nearby siblings like color_swatch_create/delete or table_setCellFill, so it stops short of a 5.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no alternatives named despite many related color siblings (color_swatch_*, color_gradient_create, table_setCellFill/Stroke). The agent must infer that this applies to the current selection.

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

color_gradient_createC

Create a gradient swatch

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
typeNolinear
stopsYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it only restates the operation. It says nothing about name-collision behavior, whether the gradient becomes available as a swatch afterward, which document it lands in by default, or what the call returns.

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 single sentence is front-loaded and wastes no words, but it is under-specified rather than genuinely concise. There is no structural elaboration to help an agent act on it.

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 4-parameter mutation tool with no annotations, no output schema, and 25% schema coverage, a one-line description is inadequate. An agent lacks the behavioral and parameter context needed to invoke it confidently.

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

Parameters2/5

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

Schema description coverage is only 25% (only document_id is documented), and the description adds no parameter meaning at all. The concepts of 'stops', 'type', and 'name' are never explained in the description, so it does not compensate for the coverage gap.

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 gradient swatch'), so an agent immediately knows it produces a gradient definition. However, it does not distinguish itself from the very similar sibling color_swatch_create, leaving ambiguity about which creation tool to pick for a gradient versus a flat swatch.

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 guidance, no prerequisites, and no mention of alternatives such as color_swatch_create or color_apply. The agent is left to infer context entirely from the name.

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

color_ink_listB

List all inks in the document

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. 'List all inks' clearly implies a read-only enumeration and specifies the scope as all inks, which is useful. However, it does not state permissions, default document behavior, or output structure, leaving some gaps for a tool with no annotation coverage.

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 wasted words. The scope ('all inks') and resource are immediately clear.

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 low-complexity, one-optional-parameter listing tool with no output schema, the description is largely complete. It names the resource and scope, though it could add a brief note about when this listing is useful relative to sibling color tools.

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 100%, so the single optional document_id parameter is already fully documented in the schema. The description adds no additional parameter meaning, making the baseline 3 appropriate.

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?

States a specific verb (List) and resource (all inks in the document), so the core purpose is clear. It does not differentiate itself from sibling tools such as color_swatch_list or color_apply, but the name and description make the action understandable.

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, nor any stated prerequisites or exclusions. The agent must infer that this is simply a read-only listing operation from the verb alone.

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

color_swatch_createC

Create a new color swatch

ParametersJSON Schema
NameRequiredDescriptionDefault
redNo
blueNo
cyanNo
nameYes
blackNo
greenNo
modelYes
yellowNo
magentaNo
colorTypeNoprocess
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.1/5.0
Behavior1/5

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

With no annotations, the description carries the full burden of behavioral disclosure and delivers nothing: no mutation/reversibility notes, no permission or open-document requirement, no explanation that the swatch model determines which channel parameters apply. It also gives no hint of the result of the call.

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 single sentence is tightly sized and front-loaded, but this is under-specification rather than conciseness. One short line does not earn its place against an 11-parameter, enum-bearing mutation 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 complex tool with 11 parameters, two enums, model-dependent channel values, no annotations and no output schema, the description is grossly incomplete. An agent cannot reliably construct a valid call without guessing which parameters the chosen model requires.

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 9% — only document_id is annotated — and 11 parameters are involved. The description adds no information about the model/colorType enums or the fact that rgb, cmyk, lab and spot models each use different channel parameters, leaving the critical parameter interplay entirely 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 description names a specific verb and resource ('Create a new color swatch'), so an agent immediately knows the operation. However, it draws no distinction from siblings like color_swatch_list, color_swatch_delete, color_gradient_create, or color_apply, leaving the agent to infer scope from the name alone.

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 statement of when to use this tool versus alternatives. The agent gets no guidance on prerequisites (e.g. an open document) or on how this differs from color_gradient_create or color_apply, which operate in the same color space.

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

color_swatch_deleteC

Delete a color swatch by name

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It signals a destructive mutation via 'Delete', but says nothing about whether the deletion is reversible (undo history, undo_beginGroup), what happens if the named swatch is absent, or whether the swatch is in use by applied colors.

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?

A single front-loaded sentence with no wasted words. It is efficient, though the extreme terseness leaves gaps that belong to other dimensions rather than being a structure problem.

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 no-annotations tool with no output schema and only half the parameters documented, this description is too thin. It should at minimum cover reversibility and the not-found case.

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

Parameters3/5

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

Schema coverage is 50%: document_id is documented in the schema, while the required 'name' property has no schema description. The phrase 'by name' partially compensates by clarifying what is being matched, but the description does not explain name-matching behavior (exact match, case sensitivity) or the default-document behavior of document_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?

States a specific verb and resource ('Delete a color swatch') plus the lookup key ('by name'), which is enough to distinguish it from color_swatch_create and color_swatch_list. It does not name those siblings explicitly, so it falls short of the top tier.

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 versus color_swatch_create/list or color_apply, no prerequisites, and no exclusions. The agent must infer that this is the removal counterpart to color_swatch_create.

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

color_swatch_listB

List all color swatches in the document

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure, yet it only restates the operation. It does not say whether the operation is read-only and safe, whether it covers only document-level swatches or application/library-level swatches too, or how results are ordered/returned.

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?

A single short sentence with the resource and scope front-loaded and zero filler. It is efficient, though the brevity leaves no room for the routing or behavioral hints an agent would benefit from.

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 one-parameter read tool with fully described schema and no output schema, the description is minimally sufficient to invoke it correctly. It is incomplete on the behavioral side: no safety profile, no note on swatch scope, and no mention of the return shape, which is left entirely unspecified since no output schema exists.

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 100% and the single document_id parameter is documented in the schema, including the pointer to document_listOpen and the front-document default. The description adds no parameter meaning beyond the schema, so the baseline 3 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?

States a specific verb and resource ('List all color swatches') with a clear scope ('in the document'), so the agent knows exactly what the tool returns. It does not, however, differentiate itself from siblings with overlapping behavior such as export_getSwatches or color_ink_list.

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?

Usage is only implied: the tool enumerates swatches, so an agent infers it should be called when it needs the swatch inventory. There is no explicit statement of when to prefer this over export_getSwatches or color_ink_list, and no prerequisites are mentioned (e.g., whether a document must be open).

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

dataMerge_exportC

Export the merged document to a file

ParametersJSON Schema
NameRequiredDescriptionDefault
formatYes
outputPathYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and discloses almost nothing. It does not say whether an existing file at outputPath is overwritten, whether the directory must exist, what permissions or open-document state are required, or what side effects occur on the document. For a tool that writes files to disk, that is a meaningful gap.

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?

A single short sentence with zero filler and the action front-loaded; nothing needs trimming. It is efficient but thin, so it scores well on structure without earning a top mark for information density.

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 three parameters, no annotations, and no output schema, the description is the only source of context and it omits the data-merge workflow position, file-writing semantics, and format tradeoffs. An agent could plausibly call it at the wrong point in the pipeline or overwrite a file unintentionally.

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 33%: only document_id is documented (via the schema itself), while format and outputPath are bare. The description adds nothing about format semantics (raster vs. vector tradeoffs of pdf/jpg/indd) or about outputPath conventions such as absolute vs. relative paths, extension handling, or overwrite 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?

Specific verb (export) plus resource (the merged document) and destination (a file), which is more precise than a bare name restatement. It does not, however, distinguish itself from siblings like export_document, export_batchFolder, or recipe_exportPreset, leaving the 'merged' qualifier as the only differentiator an agent can lean on.

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

Usage Guidelines2/5

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

No guidance on when to use this versus export_document or export_batchFolder, and no prerequisites stated — e.g. whether a data source must be selected via dataMerge_selectDataSource or records merged via dataMerge_mergeRecords first. An agent has to infer the entire workflow position of this call.

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

dataMerge_listFieldsB

List available data merge fields from the current data source

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

B3.4/5.0
Behavior3/5

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

No annotations, so the description carries the burden. It signals a read of the 'current data source', implying a data source must be selected, but does not state what happens if none is set or what the listing returns.

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?

One front-loaded sentence with no waste. Appropriately sized for a simple listing tool.

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?

A simple 1-optional-param read tool with no output schema; the description covers the core operation but omits the dependency on a selected data source and the shape of the returned field list.

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

Parameters3/5

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

Schema coverage is 100% for the single document_id parameter, and the schema describes it richly (name or 0-based index, defaults to front document). The description adds no parameter detail, so baseline 3 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?

Specific verb (List) plus resource (data merge fields) and scope (from the current data source). An agent can distinguish it from dataMerge_selectDataSource and dataMerge_mergeRecords, though the description does not name those siblings explicitly.

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?

Usage is only implied: you would call this after a data source exists to see available fields. No explicit when-to-use, prerequisites, or named alternatives are given.

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

dataMerge_mergeRecordsC

Merge records into the document using the selected data source

ParametersJSON Schema
NameRequiredDescriptionDefault
linkImagesNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
recordsPerPageNo
generatePreviewNo
alertWhenOversetNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden but discloses almost nothing behavioral: it doesn't say the document is mutated in place, whether the operation is reversible, what generatePreview or alertWhenOverset do, or what limits exist. The only behavioral clue is the implied dependency on a selected data source.

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?

A single front-loaded sentence with no padding — the verb and resource lead. It is efficient, though its brevity is arguably under-specification rather than tight editing.

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 5-parameter, no-required-argument mutation tool with no annotations and no output schema, the description is far too thin. The four undocumented boolean/integer options and the mutation semantics are left unexplained, so an agent cannot call this correctly with confidence.

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

Parameters2/5

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

Schema description coverage is only 20% (just document_id), and the description adds no parameter meaning at all for the four undocumented options (linkImages, recordsPerPage, generatePreview, alertWhenOverset), leaving the agent to guess their effect and units. This fails to compensate for the low coverage.

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?

States a specific verb+resource ('Merge records into the document'), which is plainly distinct from the sibling dataMerge_selectDataSource/listFields/export/removeDataSource actions. It also ties the action to 'the selected data source,' implying the family's workflow, though it doesn't explicitly name the sibling needed first.

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 explicit when-to-use or when-not-to-use guidance and no alternatives named. The phrase 'using the selected data source' is only an implicit hint that dataMerge_selectDataSource must run first; nothing states preconditions, ordering, or how this differs from dataMerge_export.

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

dataMerge_removeDataSourceB

Remove the current data source from the document

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Remove' implies a mutation, but it doesn't disclose reversibility, whether merged records are affected, whether the link to the source file is severed, or what happens on a document with no data source.

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 sentence with the verb and object front-loaded and zero filler. Every word earns its place.

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 one-parameter operation this is barely adequate: it names the action but omits the state the document must be in and the side effects of removal. Given no annotations and no output schema, a bit more behavioral context would complete it.

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 100% and the single optional document_id parameter is fully documented in the schema (name or 0-based index, default front document). The description adds no syntax or format detail beyond the schema, so baseline 3 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?

States a specific verb (remove) and resource (data source) plus the scope (from the document). An agent knows exactly what it does, but the description never distinguishes it from the sibling dataMerge_selectDataSource or explains the relationship, so it falls short of a 5.

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

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 guidance, no prerequisite (e.g. a data source must already be selected via dataMerge_selectDataSource), and no note on what happens if none is set. Usage must be inferred entirely from the name.

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

dataMerge_selectDataSourceC

Select a data source (CSV/TSV/XML) file for data merge

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description bears the full disclosure burden. 'Select' implies a state-setting mutation, but the description doesn't say whether it replaces an existing data source, whether it requires an open document, or what happens to any previously linked source.

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?

A single front-loaded sentence with no waste. It is efficient, though very terse for a tool that mutates document state.

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 state-changing tool with no annotations and no output schema, the description omits key context: replacement semantics for existing data sources, prerequisite document state, and typical workflow position. It is under-specified rather than merely concise.

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 50%: document_id is documented in the schema, while filePath relies on its name. The description adds the accepted file formats, which is genuine value for filePath, but contributes nothing for the document-selection parameter, which the schema already covers.

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?

States a specific verb (select) plus the resource (a data-source file) and enumerates supported formats (CSV/TSV/XML). It is clearly distinguishable from siblings like dataMerge_removeDataSource and dataMerge_mergeRecords, though it never names them explicitly.

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 when-to-use guidance, no prerequisites (e.g. a document must be open), and no mention of the sibling alternatives in the dataMerge family. The user is left to infer that this is the setup step before mergeRecords.

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

document_closeC

Close the active InDesign document with save options

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
saveOptionsNono

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden, yet it does not disclose that closing may discard unsaved changes, what saveOptions 'no' versus 'ask' does, or whether a prompt appears. The phrase 'with save options' hints at the save control but explains none of its consequences.

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?

A single, front-loaded sentence with no wasted words. It is appropriately sized for a simple tool, though terseness contributes to the behavioral and parameter gaps rather than resolving them.

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 mutating close operation with no annotations, no output schema, and half the parameters undocumented, this is too thin. It omits save-option semantics, unsaved-change behavior, and the active-versus-document_id inconsistency.

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 coverage is 50%: document_id is well documented, but saveOptions has no schema description and the tool description only says 'with save options,' adding no meaning about the yes/no/ask enum or the default of 'no.' The description does not compensate for the coverage gap.

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?

States a specific verb and resource: closing an InDesign document. It is clearly distinct from document_save, document_open, and document_create. Minor tension: it says 'active' document while document_id lets callers target any open document.

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

Usage Guidelines2/5

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

No guidance on when to close versus save first, no mention of unsaved-change behavior, and no alternatives named. Only the implied act of closing is conveyed.

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

document_createC

Create a new InDesign document with specified dimensions, margins, and settings

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNo
bleedNo
pagesNo
widthNo
heightNo
marginsNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
facingPagesNo
orientationNoportrait

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden and barely does. It never states whether the document is created in memory vs written to disk, the measurement unit (the A4 defaults 210x297 and margin 12 imply mm), reusable defaults, or what happens on failure, all of which matter for a creation 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?

A single efficient, front-loaded sentence with no waste. It earns its place, though for a 9-parameter tool the brevity edges toward under-specification rather than tightness.

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?

Nine parameters, nested objects, low schema coverage, no output schema, and no annotations, yet only one sentence of guidance. The description is materially insufficient for an agent to call this tool correctly without inspecting the schema in depth.

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

Parameters3/5

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

Schema coverage is only 11% (just document_id), so the description must compensate. It names three categories (dimensions, margins, settings) that loosely map to width/height, margins, and facingPages/orientation/pages/bleed/slug, but adds no units or default semantics and does not explain the surprising document_id parameter on a creation tool.

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?

States a specific verb+resource: 'Create a new InDesign document.' The word 'new' implicitly distinguishes it from sibling document_open, but no sibling is named explicitly and the listed facets (dimensions, margins, settings) are generic.

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, no prerequisites, and no explicit routing against document_open or the page/master creation siblings. The only signal is the adjective 'new', leaving the agent to infer that this is the right tool for a fresh document.

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

document_getInfoB

Get detailed information about the active document including page count, dimensions, and margins

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. 'Get' implies a read-only operation and the enumerated return fields give useful behavioral context, but it says nothing about permissions, cost, or side effects, and no output schema exists to fill the gap.

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?

A single front-loaded sentence with zero waste. Slightly under-specified rather than over-long, but structurally efficient.

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 tool with no output schema, listing the returned fields (page count, dimensions, margins) is a genuine help. However it never reconciles 'active document' with the optional document_id parameter, and no output schema exists to clarify the full return shape.

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

Parameters3/5

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

Schema coverage is 100% and the document_id description already explains the name-or-index convention and the front-document default. The description adds nothing beyond the schema and its phrase 'active document' arguably conflicts with the parameter's ability to target a non-active document.

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?

States a specific verb and resource ('Get detailed information about the active document') and enumerates the returned fields (page count, dimensions, margins). It is clear on its own, but it does not differentiate itself from close siblings like document_getState or document_getPageStories.

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, no prerequisites, and no named alternatives. The agent must infer that this is the general document-metadata tool versus document_getState or page_getInfo from the field list alone.

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

document_getPageStoriesC

Get all stories that appear on a specific page

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read operation but says nothing about whether a document must be open, what happens for an out-of-range pageIndex, what the returned story objects contain, or how they are ordered.

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?

A single tight sentence with the resource front-loaded and zero filler. It is efficient, though arguably under-specified rather than optimally sized.

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 no annotations, no output schema, and an undocumented required parameter, the description is too thin for an agent to call the tool correctly without trial and error, particularly around page indexing conventions.

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 coverage is only 50%: document_id is documented in the schema, but pageIndex has no description at all. The phrase 'a specific page' only weakly gestures at pageIndex and does not clarify its 0-based indexing, so the description fails to compensate for the coverage gap.

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?

Specific verb ('Get') and resource ('stories that appear on a specific page') clearly state the operation. It is distinguishable in substance from text_getStories, but the description never acknowledges its near-inverse sibling document_getStoryPages, leaving the agent to infer the direction of the mapping.

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 document_getStoryPages or text_getStories, no prerequisites (e.g. a document must be open), and no indication of ordering or scope of the result.

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

document_getStateA

Get the editing state in one call: the front document (name, path, page count, size, margins), the index of that document, the names of every open document, the active layer, and how many objects are selected. Prefer this over chaining document_getInfo and document_listOpen

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the complete set of returned values (a read/aggregate operation with no implied mutation) and thereby implies the safety profile, but it never explicitly states that it is read-only, nor does it mention permissions or side effects. Strong on behavior, one step short of explicit.

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

Conciseness5/5

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

Two sentences: the first front-loads the returned payload, the second front-loads the routing decision. Dense, zero filler, and no sentence repeats a structured field.

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?

There is no output schema, so the description must enumerate return values — and it does so exhaustively (document name, path, page count, size, margins, index, open document names, active layer, selection count). Combined with the explicit sibling routing, an agent has everything needed to call this 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 100% — the document_id parameter is fully documented in the schema (name or 0-based index, defaulting to the front document). The description adds no syntax or defaulting detail of its own, so this sits at the baseline for a high-coverage single-parameter tool.

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?

Names a specific verb ('Get') plus resource ('editing state') and then enumerates exactly what state is returned: front document fields, document index, open document names, active layer, and selection count. It also names the two siblings (document_getInfo, document_listOpen) it replaces, so an agent can distinguish it from them without opening either schema.

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 final sentence gives an explicit routing rule: prefer this over chaining document_getInfo and document_listOpen. Both the alternative tools and the condition that selects this one are stated, leaving nothing to inference.

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

document_getStoryPagesC

Get all pages covered by a specific story (for finding which pages a story lives on)

ParametersJSON Schema
NameRequiredDescriptionDefault
storyIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden and discloses almost nothing: it does not state that this is a read-only query, what happens with an out-of-range storyIndex, or how the pages are represented. 'Get' weakly implies a read, but no permissions, error behavior, or result shape is described.

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?

A single, front-loaded sentence with no padding. The parenthetical is mildly redundant with 'pages covered' but does clarify intent, so it largely earns its place.

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 no output schema, the description should convey the return shape, but 'all pages' is vague (page indices? page objects? names?). Combined with the unexplained required storyIndex and zero annotation coverage, the definition is too thin for reliable invocation.

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 coverage is only 50%: document_id is documented in the schema (name via document_listOpen or 0-based index, defaults to front document), but storyIndex is undocumented in both schema and description. The description adds no parameter meaning to compensate for that gap.

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?

States a specific verb and resource ('Get all pages covered by a specific story'), which is unambiguous about the direction of the mapping. However, it never names the inverse sibling document_getPageStories, so the agent must infer the distinction from the names alone.

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 parenthetical 'for finding which pages a story lives on' restates the purpose rather than giving when-to-use guidance. There is no mention of when to prefer document_getPageStories (the reverse lookup) or any prerequisite/context for choosing this tool.

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

document_listOpenC

List all currently open InDesign documents

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'List' implies a safe read, but nothing states it is read-only, whether a document must already be open, what happens with zero open documents, or what the return contains. For a tool with zero annotation coverage this is a notable gap.

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?

One tight sentence with the resource front-loaded and no filler. Appropriately sized for a trivial list operation, though it is so terse that it forgoes any useful addition.

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 parameterless-ish list tool with a fully documented schema, the description is minimally sufficient. It leaves the return format and the read-only nature unstated, which for a no-annotation tool is a mild completeness gap.

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 100% and the single document_id parameter is well documented in the schema (name or 0-based index, defaults to front document). The description adds nothing beyond that, so the baseline of 3 is appropriate.

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?

States a specific verb (List) and resource (currently open InDesign documents), which is clear and actionable. It doesn't explicitly differentiate itself from nearby siblings like document_getInfo or document_getState, but the scope (all open documents) 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?

The description offers no when-to-use guidance, no prerequisites, and no alternatives. It doesn't tell the agent that this is the discovery step that supplies the document_id accepted by other tools, even though the schema hints at that relationship.

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

document_openC

Open an existing InDesign document from file path

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYes
showWindowNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says nothing about what happens on a missing/invalid path, whether opening modifies the file or locks it, whether it requires an active InDesign instance, or how it affects currently open documents. For a state-changing open operation with zero annotation coverage, this is a notable gap.

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?

A single, front-loaded sentence with zero padding. It is efficient, though the brevity comes at the cost of the missing usage and parameter details noted elsewhere rather than from trimming redundancy.

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 no annotations, no output schema, and undocumented parameters (showWindow, filePath), the description would need to compensate and does not. An agent lacks enough information to know what the tool returns on success/failure or how showWindow behaves.

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

Parameters2/5

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

Schema description coverage is only 33%: document_id is well documented in the schema, but filePath and showWindow have no descriptions anywhere. The phrase 'from file path' is the only hint about filePath (format, absolute vs relative) and showWindow (the ability to open without a window) is completely unexplained.

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 gives a specific verb (open) and resource (an existing InDesign document) and names the input source (file path), which clearly separates it from document_create and book_open. It does not explicitly name a sibling as the alternative, but the purpose is unambiguous on its own.

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 reach for this tool versus document_create (new document) or preview_document, and no mention of prerequisites such as the file existing on disk. The word 'existing' is the only implicit usage signal.

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

document_saveC

Save the active InDesign document, optionally to a specific path

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
saveOptionsNoyes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden for a write operation. It doesn't disclose whether saving to a new path changes the document's association, whether existing files are overwritten, or what 'ask' triggers, leaving destructive/overwrite behavior opaque.

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?

A single front-loaded sentence with no filler. It is efficient, though its brevity contributes to the specification gaps rather than resolving them.

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 no annotations, no output schema, and 33% param coverage, the description is too thin. It omits overwrite behavior, the meaning of saveOptions, and any distinction from export or close, leaving an agent under-informed before calling it.

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 coverage is only 33%: document_id is documented in the schema, but filePath has no description and saveOptions (enum yes/no/ask) is completely unexplained. The description only loosely implies filePath via 'to a specific path' and adds no semantics for the enum, which is the most ambiguous parameter.

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?

Clear verb+resource: 'Save the active InDesign document' with an optional target path. It does not differentiate itself from siblings like export_document or document_close, so the agent must infer the save-vs-export boundary on its own.

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

Usage Guidelines2/5

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

No guidance on when to use this versus export_document, document_close, or how to invoke a 'save as' flow. The mention that a path is 'optional' is the only usage hint, and saveOptions values (yes/no/ask) are never explained.

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

effect_applyDropShadowC

Apply a drop shadow effect to an object

ParametersJSON Schema
NameRequiredDescriptionDefault
blurNo
modeNomultiply
angleNo
colorNoBlack
opacityNo
distanceNo
itemIndexYes
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It says nothing about whether the effect replaces existing effects, whether it is undoable, whether it applies to a single item or all selected items, or how document_id resolves when omitted.

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?

A single short sentence with no waste, so it is not verbose. But it is under-specified rather than concise: every sentence "earns its place" only because there is just one and it conveys minimal information.

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 9-parameter mutation tool with no annotations, no output schema, and near-zero schema documentation, the description is far too thin. An agent gets no indication of permissions, reversibility, or how the required pageIndex/itemIndex pair identifies the target object.

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

Parameters2/5

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

Schema description coverage is only 11% – just document_id is documented. The description adds nothing about the eight other parameters (blur, mode, angle, color, opacity, distance, itemIndex, pageIndex); only defaults and numeric ranges in the schema hint at their meaning, so the description fails to compensate for the coverage gap.

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 ("Apply a drop shadow effect to an object"), which is unambiguous and clearly separable from siblings like effect_applyFeather and effect_applyTransparency. It does not, however, explicitly name those alternatives or clarify what kind of object is targeted.

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 effect versus effect_applyFeather, effect_applyTransparency, or effect_applyGradientFeather, nor any prerequisites (e.g. that the item must be a page item on the given page). The agent is left to infer all routing from the name alone.

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

effect_applyFeatherC

Apply a feather effect to an object

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNobasic
noiseNo
widthNo
itemIndexYes
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
chamferWidthNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure and largely fails it. It implies a mutation on an object but never states what feathering does, what object types are valid, whether the operation is reversible/undoable, or what side effects it has.

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?

A single front-loaded sentence with no wasted words, which is structurally fine. However, its brevity comes at the cost of under-specification rather than genuine economy, so it is only adequate.

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 7-parameter mutation tool with no annotations, no output schema, and 14% schema coverage, a bare one-liner is wholly inadequate. Nothing an agent needs to invoke this correctly — valid targets, undo behavior, or parameter meaning — is present.

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 only 14% (just document_id), and the description adds no parameter meaning at all. The 7 parameters — including non-obvious ones like chamferWidth, noise, width, and type — are left completely undocumented in both places.

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?

States a clear verb+resource combination ('Apply a feather effect') that is unambiguous on its own. However, it does nothing to distinguish itself from the sibling effect_applyGradientFeather, so an agent cannot tell from the description alone which feather variant to pick.

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, no prerequisites, and no reference to alternatives such as effect_applyGradientFeather or effect_applyTransparency, despite those siblings being the obvious near-duplicates. The agent must infer selection criteria entirely on its own.

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

effect_applyGradientFeatherC

Apply a gradient feather effect to an object

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNolinear
angleNo
endPointNo
itemIndexYes
pageIndexYes
startPointNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.2/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, and it discloses almost nothing: 'apply' implies a document mutation, but there is no statement of whether an existing feather/gradient is replaced, whether the change is undoable, what auth or selection state is required, or what happens to unspecified gradient attributes. This is thin for a 7-parameter mutation tool.

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

Conciseness4/5

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

A single front-loaded sentence with no filler or redundancy; it is efficient. The brevity is not wasteful, though it reflects under-specification rather than disciplined concision.

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 7 parameters, nested startPoint/endPoint objects, no output schema and no annotations, one bare sentence is wholly inadequate. An agent cannot determine how to shape the gradient or how this differs from effect_applyFeather.

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 only 14%, so the description must compensate, yet it mentions none of the seven parameters — not the linear/radial type, the angle range, or the startPoint/endPoint geometry that define the gradient. It adds zero meaning beyond the schema and leaves the critical gradient-shape parameters unexplained.

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 sentence names a specific verb (apply) and resource (gradient feather effect), so the basic action is clear. But it essentially restates the tool name and offers no differentiation from the sibling effect_applyFeather (plain feather) or effect_applyDropShadow/effect_applyTransparency, which is exactly the ambiguity an agent needs resolved.

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 guidance, no prerequisites (e.g. does the object need to be selected?), and no mention of alternatives despite three sibling effect_* tools whose choice is non-obvious. The agent is left to infer everything from the name.

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

effect_applyTransparencyC

Set transparency and blend mode for an object

ParametersJSON Schema
NameRequiredDescriptionDefault
opacityNo
blendModeNonormal
itemIndexYes
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
knockoutGroupNo
isolatedBlendingNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it only restates the two main effects. It does not disclose whether the operation is destructive, what it requires (valid item/page indices), or how unmentioned settings behave.

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?

A single front-loaded sentence with no wasted words. It is efficient, though the brevity reflects under-specification for a 7-parameter mutation tool rather than elegance.

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 no annotations, no output schema, and 7 parameters at 14% coverage, the description is far too thin. It omits optional toggles, target semantics, and any indication of effect or side effects.

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

Parameters2/5

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

Schema description coverage is only 14% (just document_id), leaving six parameters undocumented. The description's 'blend mode' and 'transparency' loosely map to blendMode/opacity but add no enum or range detail, and say nothing about knockoutGroup, isolatedBlending, pageIndex, or itemIndex.

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?

States a specific verb ('Set') plus the two effects it controls (transparency and blend mode), which maps to the opacity and blendMode parameters. It is reasonably distinct from effect_applyDropShadow/Feather siblings, though it omits the other knobs (knockoutGroup, isolatedBlending) it also governs.

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, no prerequisites (e.g., an active selection or target item), and no mention of related effect siblings like effect_applyDropShadow. The agent must infer usage from the name alone.

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

export_batchFolderA

Export every InDesign (.indd) file in a folder to PDF in one run — opens each document invisibly and reports per-file results

ParametersJSON Schema
NameRequiredDescriptionDefault
outputDirNoDefaults to the same folder
overwriteNo
timeoutMsNo
folderPathYesAbsolute folder containing .indd files
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does add real behavioral context — documents are opened invisibly and results are reported per file — but it omits failure semantics for a partially failing batch, whether opened documents are closed afterwards, whether existing PDFs are overwritten (the schema defaults overwrite=false), and any permission requirements.

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 em-dash sentence with zero waste, front-loading the batch scope and the conversion target before the side-effect detail. Nothing is padded or repeated from the schema.

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 5-parameter write-producing tool with no annotations and no output schema, the description covers intent and return shape only in passing ('reports per-file results'). It leaves the document_id/batch mismatch, partial-failure behavior, and overwrite policy unexplained, so an agent cannot fully predict the call's outcome.

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

Parameters3/5

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

Schema coverage sits at 60%: folderPath, outputDir and document_id carry descriptions while overwrite and timeoutMs have only defaults. The description adds no parameter-level meaning beyond restating the folder concept, and it never explains the oddly out-of-place document_id parameter on a folder-wide batch operation.

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 pairs a specific verb with a precise resource and scope: 'Export every InDesign (.indd) file in a folder to PDF in one run.' The folder-wide batch nature cleanly separates it from the single-document sibling export_document and from export_preflight, so an agent can route without opening any schema.

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?

Usage is implied ('in one run' signals the batch alternative to looping a per-document export), but no sibling is named and there is no explicit when-to-use or when-not-to-use statement. An agent can infer the batch case but gets no help deciding between this and export_document or recipe_exportPreset.

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

export_documentC

Export the active document to a specified format (PDF, JPG, PNG, EPUB, HTML, package)

ParametersJSON Schema
NameRequiredDescriptionDefault
formatYes
optionsNo
filePathNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden, and it discloses almost nothing beyond the format list: no destination behavior, no overwrite semantics, no permission or open-document requirement, no indication of what 'package' produces. Listing the formats is the one piece of genuinely useful context.

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

Conciseness4/5

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

A single front-loaded sentence with the verb and resource first and the format list parenthetically, which is efficient. It is arguably too terse given the undocumented options and filePath, but there is no filler or redundancy beyond the enum restatement.

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 4-parameter I/O tool with a nested free-form options object, no annotations, and no output schema, the description leaves critical gaps: where output is written, what is returned, and what options are valid. An agent could call it with only a format, but could not confidently use filePath or options.

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 only 25% — just document_id is documented — and the format enum is self-describing. The description restates the format values (redundant with the enum, though it hints at user-facing naming) but adds nothing about filePath or the nested options object, which is a free-form additionalProperties bag. It partially compensates but leaves the two most opaque parameters unexplained.

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?

Names a specific verb and resource (export the document) and enumerates the target formats, so the operation is unmistakable. It does not distinguish itself from nearby siblings such as export_batchFolder, export_preflight, dataMerge_export, or recipe_exportPreset, and the 'active document' phrasing does not acknowledge the document_id parameter.

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

Usage Guidelines2/5

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

No guidance on when to choose this tool versus the other export-family tools (batch folder export, preset-based export via recipe_exportPreset, preflight). There are no stated preconditions, such as whether the document must be saved or open, or what happens if an identical file already exists.

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

export_executeScriptC

Execute arbitrary ExtendScript code in InDesign

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Arbitrary ExtendScript code' hints at broad power but does not disclose whether the code runs with full document-mutating privileges, whether it is sandboxed, how errors/exceptions are surfaced, or whether the operation is reversible. For an arbitrary code-execution tool this is a major transparency gap.

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?

A single front-loaded sentence with no wasted words. It is efficient, though for a tool of this complexity the brevity borders on under-specification rather than true conciseness.

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?

There is no output schema and no annotations, so the description must carry the behavioral and return-value burden. It says nothing about what executing the script returns, how failures are reported, or the safety implications of running arbitrary code, leaving the agent under-informed for a high-complexity operation.

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 50%: 'document_id' is well documented in the schema, but 'code' has no description at all. The description only restates 'ExtendScript code', adding no information about expected syntax, whether results are returned, or how output is captured.

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?

States a specific verb and resource ('Execute arbitrary ExtendScript code in InDesign'), which is far more informative than a tautology. However, it offers no differentiation from the sibling 'script_run', which almost certainly performs a similar or identical function, so an agent cannot tell the two apart.

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 'script_run' or any of the many declarative siblings (e.g., text_setContent, image_place) that cover common operations. No preconditions, no mention of whether the document must be open or saved, no exclusion criteria.

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

export_getFontsB

Get all fonts used in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not state that the operation is read-only/non-mutating, whether missing fonts are included, or what the returned data looks like. For a query tool with zero annotation coverage, this is thin.

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 short, front-loaded sentence that identifies the scope of the operation with zero filler. Nothing is redundant or misplaced.

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 one-parameter read tool with full schema coverage, the description is nearly adequate, but with no output schema and no annotations it should clarify the return shape (e.g., font names) and whether missing fonts are reported, information an agent would otherwise have to discover at call time.

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 100% — document_id is fully documented in the schema (name or 0-based index, defaults to front document). The description contributes no additional parameter meaning beyond the word 'active', so the baseline 3 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?

States a specific verb ('Get') and resource ('all fonts used in the active document'), which is clearly scoped differently from the sibling font_list (available/system fonts) and font_missing_check. It does not explicitly name or contrast those siblings, so it stops short of a 5.

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

Usage Guidelines3/5

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

The phrase 'used in the active document' implies a reporting/audit use case, and the schema notes document_id defaults to the front document. However, there is no explicit guidance on when to call this versus font_list, font_missing_check, or font_find, leaving selection to inference.

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

export_getMasterSpreadsC

List all master spreads in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. Beyond implying a read via 'List', it says nothing about permissions, whether it covers only the front document, ordering, or size limits.

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?

A single short sentence with zero filler and no hedging. It is efficiently front-loaded, though its brevity is partly a symptom of under-specification rather than disciplined concision.

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 listing tool with no annotations and no output schema, the description should at least hint at what is returned (names, IDs, spread objects) and confirm it is a safe read. Neither is present, so an agent has no basis for interpreting the result.

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 coverage is 100%, so the schema already documents document_id, its name-or-index union type, and its front-document default. Worse, the description's framing of 'the active document' narrows the scope in a way that conflicts with the optional document_id parameter, so it adds misleading rather than helpful semantics.

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?

States a specific verb ('List') and resource ('master spreads') with a scope ('active document'), so the operation itself is unambiguous. However, it does nothing to distinguish itself from the sibling master_list, which plausibly covers the same resource, leaving the agent to guess which to call.

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 guidance, no prerequisites, and no named alternative. The description never explains how this differs from master_list, master_getPages, or master_create, which are the natural comparison points for an agent choosing a master-spread tool.

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

export_getSwatchesB

Get all swatches (colors, gradients, tints) from the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. 'Get' correctly implies a read-only operation, which is useful, but it says nothing about return format, pagination, or whether the result includes swatch groups and inks. For a simple list operation this is acceptable but thin.

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?

One short sentence, front-loaded with the verb and resource, with no filler. Every clause (the parenthetical type enumeration) earns its place.

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

Completeness4/5

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

For a read-only listing tool with one optional, fully documented parameter and no output schema, the description covers what is returned and from which document. The remaining gap is disambiguation from the similarly named color_swatch_list sibling.

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

Parameters3/5

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

Schema coverage is 100% and the single optional document_id parameter is fully documented in the schema, including its default to the front document. The description adds no syntax or semantics beyond the schema, so the baseline of 3 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?

States a specific verb and resource ('Get all swatches') and enumerates the swatch types (colors, gradients, tints), so the agent knows what it retrieves. However, it does not distinguish itself from the sibling color_swatch_list, which by name appears to cover the same ground, leaving overlap unresolved.

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 when-to-use guidance, no prerequisites, and never names an alternative such as color_swatch_list or color_ink_list. The agent must infer the choice purely from tool names.

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

export_getTablesC

List all tables in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIndexNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral disclosure burden. It implies a read-only listing but does not state whether pageIndex filters results, whether all pages are scanned, what the return shape is, or whether only the active document is considered regardless of document_id.

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 its brevity contributes to the missing behavioral and parameter context.

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 two-parameter tool with no annotations and no output schema, the description is inadequate. It does not explain how pageIndex works, how document_id relates to the 'active document' wording, or what the listing returns.

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 50%: document_id is documented in the schema, but pageIndex has no description. The tool description mentions 'active document' and ignores both parameters entirely, adding no meaning beyond the schema and even conflicting with the document_id parameter.

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?

States a clear verb and resource: 'List all tables in the active document.' However, it does not distinguish this from sibling tools such as table_list, so an agent cannot confidently choose between them from the description alone.

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 table_list or table_getInfo. The description gives only a bare action statement and does not mention conditions, exclusions, or prerequisites.

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

export_getXmlTagsC

List XML tags in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It implies a read-only listing but does not say what is returned, whether tags are document-wide or story-scoped, or how pagination/large tag sets are handled.

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?

A single short sentence with no waste and the scope front-loaded. It is efficient, though it may be too terse for the ambiguity it leaves.

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 listing tool with no output schema and no annotations, the description should at least describe the return shape or scope, and it does neither. It also ignores the sibling it most resembles.

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

Parameters3/5

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

Schema coverage is 100%, so the single document_id parameter is already fully documented (name or 0-based index, defaults to front document). The description's phrase 'the active document' adds no detail beyond the schema default. Baseline 3 applies.

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?

States a specific verb and resource ('List XML tags'), but 'in the active document' is only one possible scope and the description never distinguishes this tool from the near-identical sibling xml_listTags. An agent cannot tell which of the two to call without opening both 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?

No when-to-use, no when-not-to-use, and no mention of the overlapping xml_listTags sibling. The only implicit signal is the 'export_' prefix, which is not explained.

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

export_preflightC

Run a preflight check on the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
waitForCompletionNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not disclose whether the check is read-only, what it validates, whether it can modify the document, what permissions are needed, or what a failure looks like.

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?

It is a single front-loaded sentence with no filler, but its extreme brevity leaves a three-parameter, annotation-free tool under-specified rather than genuinely concise for the task at hand.

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 no annotations, no output schema, and 33% parameter coverage, the description should at minimum explain the check's scope, what profile controls, and how waitForCompletion affects behavior. It supplies none of this, leaving an agent unable to invoke it confidently.

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 only 33%: profile and waitForCompletion are undocumented, and the description adds no parameter semantics. Worse, 'active document' implies only the front document, understating document_id's ability to target another open document by name or index.

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?

Names a specific operation (preflight check) on a document, and the purpose is distinguishable from export actions at a high level. However, it says 'active document' even though document_id allows targeting any open document, and it does not explicitly differentiate itself from export_document or preview_document.

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 term 'preflight' implies this is used before an export, but the description gives no explicit when/when-not guidance, no prerequisites, and no named alternatives such as export_document or preview_document.

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

font_changeC

Change font of selected text

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNo
fontNameYes
fontStyleNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not say whether the change is destructive, requires an active selection, affects the front document, or is undoable — real gaps for a mutation tool.

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

Conciseness3/5

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

Five words, front-loaded and waste-free. But this brevity is under-specification rather than conciseness, since essential scope information is missing.

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 no annotations, no output schema, four parameters, and an ambiguous scope ("selected text" in which document?), the description leaves too much undefined for correct invocation.

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

Parameters1/5

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

Schema description coverage is only 25% (just document_id), and the description mentions no parameters at all — not fontName, size, or fontStyle. With 4 params and low coverage, the description fails to compensate.

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?

States a verb and resource ("Change font of selected text"), so the basic action is clear. However, it gives no differentiation from the sibling text_applyFont, which appears to overlap heavily, leaving the agent unsure which to pick.

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 guidance and no named alternative, despite text_applyFont and text_applyCharStyle being obvious candidates. The agent must infer the selection context entirely.

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

font_findC

Search fonts by name

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden, and it discloses almost nothing. It doesn't state that the operation is read-only (implied but unstated), whether matching is case-sensitive, substring or exact, whether missing fonts or styles are included, or what the result set looks like.

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?

Four words, zero filler, and the search scope is front-loaded. Its brevity is efficient, though it tips into under-specification rather than genuine conciseness for a search tool.

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 no annotations, no output schema, and one of two parameters undocumented in the schema, the description should do considerably more. An agent cannot tell what a match returns (font names, font objects, missing-font flags) or how matching is performed, which is critical for a search tool.

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

Parameters3/5

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

Schema coverage is 50%: document_id is fully documented in the schema, but the required 'query' parameter has no schema description at all. The phrase 'by name' partially compensates by signaling that query is a font-name string, though it says nothing about partial matching or case sensitivity.

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?

States a specific verb and resource ('Search fonts') plus the search axis ('by name'), so the agent knows this is a font lookup rather than a mutation. However, it offers no differentiation from the sibling font_list, which also retrieves fonts, leaving the agent to guess which to pick.

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 given. It never says whether this is for locating a specific font before applying it (font_change/font_list) versus enumerating all fonts, and there are several plausible sibling alternatives (font_list, font_missing_check, text_search). The agent must infer the intent entirely.

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

font_glyph_insertC

Insert a special glyph at the cursor position

ParametersJSON Schema
NameRequiredDescriptionDefault
glyphIdYes
fontNameNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It implies a mutation at the cursor but says nothing about whether the operation is undoable, what happens if the target document lacks the font, whether an active insertion point is required, or any error behavior. Only the minimal 'inserts at cursor' trait 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.

Conciseness4/5

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

A single short, front-loaded sentence with zero filler. It is efficient, though its brevity reflects under-specification rather than disciplined concision.

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 no annotations, no output schema, and only 33% schema coverage, the description is too sparse. It omits the fontName/glyphId semantics, preconditions, and any behavioral consequences that an agent needs to call it correctly.

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

Parameters2/5

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

Schema description coverage is only 33% – only document_id is documented in the schema. The description mentions 'glyph' but does not clarify whether glyphId is a Unicode codepoint, a glyph index in the font, or something else, nor does it explain that fontName selects the source font. The two undocumented parameters receive no compensating detail.

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 names a specific verb (insert) and resource (a special glyph) plus the target location (cursor position), so the core action is understandable. However, it does not explain what distinguishes a 'special glyph' from normal text insertion, nor does it differentiate this tool from font-related siblings like font_find or font_change. Purpose is identifiable but thin.

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 versus alternatives such as text_setContent or text_applyFont, no prerequisites (e.g. a text frame must be active), and no mention of the cursor/selection requirement. The agent is left to infer all usage conditions.

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

font_listC

List all available fonts

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, and it discloses almost nothing. It does not say whether the result is app-wide or scoped to the document referenced by document_id, whether fonts are system or document fonts, or what fields come back; only the read-only nature is implied by the verb 'List'.

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?

A single front-loaded sentence with no filler, which is well matched to a simple list tool. It is arguably too terse given the family of font tools, but there is no wasted text.

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 one optional parameter and no output schema, the description should at least clarify the scope of the listing (all installed fonts vs. fonts used/available in the specified document), and it does not. Combined with no annotations and no alternatives guidance, the definition leaves key invocation decisions unresolved.

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 100%: document_id is fully documented in the schema, including name-or-index semantics and the front-document default. The description adds nothing beyond that, so the baseline 3 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?

States a specific verb and resource ('List all available fonts'), which is clearly distinct from mutation siblings like font_change and font_glyph_insert. However, it never names or contrasts with the closer siblings font_find and font_missing_check, leaving the agent to infer the boundary itself.

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 given, and the description never mentions the alternatives font_find (search by criteria) or font_missing_check (missing-font audit) that sit in the same family. The agent gets no signal about which of the three to pick.

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

font_missing_checkC

Check for missing fonts in the document

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description bears the full behavioral burden and does not meet it. It never states that this is a read-only inspection, what happens if no fonts are missing, whether it can be slow on large documents, or what the result actually contains.

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?

A single short sentence with the verb-restatement pattern kept to a minimum and no wasted words. It is appropriately sized for a simple inspection tool, though it is arguably too terse to be useful.

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?

There is no output schema and no annotations, so the description is the only place an agent could learn what a 'check' returns (a list of missing fonts, a count, a status). That information is entirely absent, leaving the agent unable to interpret the result of the 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?

Schema description coverage is 100% and the single document_id parameter is fully documented, including the name-or-index convention and the front-document default. The description adds nothing beyond the schema, so the baseline 3 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?

States a specific verb (check) and a specific target (missing fonts in the document), which is meaningfully narrower than siblings like font_list or font_find. However, it does not explicitly differentiate itself from font_list, font_find, or export_getFonts, so an agent must infer the distinction from the word 'missing'.

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 reach for this tool versus font_list, font_find, font_change, or export_getFonts. No prerequisites, no mention of what state the document should be in, and no indication of whether it targets the whole document or a scope.

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

grep_findC

Find text using GREP pattern in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNodocument
grepWhatYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
includeFootnotesNo
includeMasterPagesNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it only says 'find'. It is silent on match behavior (case sensitivity, whether it returns all matches or first), the return shape, and what scope/story/selection actually change. For a read tool with zero annotation coverage this is a significant gap.

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?

A single front-loaded sentence with no filler. It is appropriately sized, though the brevity reflects under-specification rather than disciplined economy.

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 5 parameters, 20% schema coverage, no annotations, and no output schema, the definition is far too thin. An agent cannot know match semantics, return behavior, or parameter effects from this description.

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

Parameters2/5

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

Schema description coverage is only 20% across 5 parameters. The description only loosely gestures at the document target ('active document') and explains none of scope (document/story/selection), includeFootnotes, or includeMasterPages, so it fails to compensate for the sparse schema.

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

Purpose4/5

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

States a specific verb+resource ('Find text using GREP pattern') and a scope ('active document'), which an agent can distinguish from text_search and text_findReplace. However, it does not explicitly name or differentiate from the closely related grep_findFormat, grep_replace, or text_search, so the boundary is left to inference.

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 when-to-use guidance and no alternatives. In a sibling set containing grep_findFormat, grep_replace, grep_replaceFormat, text_search, and text_findReplace, the agent gets no signal about when GREP-find is preferred over plain text search or format-find.

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

grep_findFormatC

Find text with specific formatting

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNodocument
formatNo
findWhatYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden, yet it discloses nothing beyond the bare action. It omits whether this is a read-only search, what the result set looks like, how matches are returned, or any scoping/performance behavior — a significant gap given grep can be expensive.

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?

It is a single short sentence with no wasted words, but the brevity reflects under-specification rather than tight, front-loaded communication of needed 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 4-parameter tool with a nested format object, no output schema, and no annotations, the description is far too thin. An agent lacks the information needed to correctly construct findWhat or the format matcher.

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

Parameters2/5

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

Schema description coverage is only 25%; only document_id is described in the schema, while findWhat, format (a nested object with eight sub-fields), and scope are undocumented. The description adds no meaning to any of these, so it fails to compensate for the low coverage.

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 states a verb ('Find') and resource ('text') with a qualifier ('with specific formatting'), so the general purpose is inferable. However, it does not distinguish this tool from near-identical siblings such as grep_find and text_searchFormatting, leaving the agent unable to tell them apart.

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 indication of when to use this tool versus grep_find, grep_replaceFormat, or text_searchFormatting, no prerequisites, and no scope guidance despite the 'scope' enum. The agent is left to guess from the name alone.

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

grep_replaceC

Find and replace text using GREP pattern

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNodocument
grepWhatYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
replaceWithYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden for a mutating tool, yet it says nothing about permissions, irreversibility, undo grouping, or what happens to matches in background stories. 'Find and replace' implies mutation but the blast radius is undisclosed.

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?

A single short sentence with zero padding, but its brevity comes from under-specification rather than from tight editing. It is front-loaded and readable, just thin.

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 four-parameter mutation tool with no annotations, no output schema, and mostly undocumented parameters, the description should explain scope behavior, target resolution, and replace semantics. None of that is present.

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

Parameters2/5

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

Schema description coverage is only 25%, and the description adds no parameter meaning beyond restating 'GREP pattern' for grepWhat. The scope enum (document/story/selection) and the document_id target are never mentioned in the description, so the description does not compensate for the coverage gap.

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?

States a specific verb pair (find and replace) plus the resource (text) and the method (GREP pattern), which differentiates it from the read-only sibling grep_find. It stops short of naming any alternative tool by name, so an agent must infer the boundary with grep_find, grep_replaceFormat, and text_findReplace.

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 guidance, no mention of alternatives such as grep_find (search only) or text_findReplace (plain-text replace), and no indication of prerequisites like having a document open. The agent gets a capability statement and nothing about selection conditions.

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

grep_replaceFormatC

Find and replace text while changing formatting

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNo
findWhatYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
replaceWithYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a mutating find-and-replace operation, but does not disclose scope, regex behavior, undoability, permissions, or what happens to existing formatting beyond the vague phrase 'while changing formatting.'

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. However, its extreme brevity leaves important structure and detail absent, which borders on under-specification rather than effective conciseness.

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 a nested format object, no annotations, no output schema, and only 25% schema coverage, the description is incomplete. It does not explain behavior, scope, format-object semantics, or return/effect, so an agent cannot call it confidently.

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?

Only document_id has a schema description; findWhat, replaceWith, and the nested format object are undocumented. The description mentions formatting but does not explain the format object fields or the semantics of findWhat/replaceWith, so it adds little beyond the schema.

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 states a find-and-replace action with a formatting twist, but it does not explain how formatting relates to the replacement (e.g., whether format applies to the replacement text, matched text, or both). It also does not distinguish itself from close siblings such as grep_replace, grep_findFormat, or text_findReplace, leaving the agent to infer its unique role.

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 grep_replace, grep_findFormat, or text_findReplace, nor any mention of prerequisites or exclusions. The agent must guess the appropriate context from the name alone.

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

group_listC

List all groups in a page

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'List' implies a read, but nothing is said about ordering, whether nested groups are included, or result size — and there is no output schema to fall back on.

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?

A single short sentence with no padding, and the scope is front-loaded. It is efficient, though efficiency here partly reflects under-specification rather than discipline.

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 two-parameter list tool with no annotations and no output schema, the description should at minimum clarify what a 'group' is here and what pageIndex means. Neither is covered, leaving real ambiguity an agent could act on incorrectly.

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 coverage is 50%: document_id is documented in the schema, but pageIndex has no description. Worse, the description's word 'page' is ambiguous against the required 'pageIndex' — it is unclear whether this indexes a document page or a pagination window, and the description does nothing to resolve 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?

Specific verb+resource ('List all groups') plus a scope ('in a page'), which is enough to distinguish it from group_ungroup. It does not, however, distinguish itself from sibling listers like shape_list or table_list, which an agent might reasonably confuse it with.

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

Usage Guidelines2/5

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

No guidance on when to use this versus alternatives, and no prerequisites (e.g., a document must be open). The agent is left to infer that group_list is the read-only counterpart to group_ungroup.

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

group_ungroupC

Ungroup a group by index

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIndexYes
groupIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not disclose that this is a mutation, whether it is reversible via undo, what happens to the contained items, or which document must be open — all significant gaps for a structural write 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?

A single five-word sentence with no wasted words and the action front-loaded, but it is terse to the point of under-specification rather than genuinely efficient for a 3-parameter mutation tool.

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 no annotations, no output schema, and two of three parameters undocumented, the definition is not complete enough. It omits how to obtain a valid group index, what state the document must be in, and what the result of ungrouping is.

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 coverage is only 33%: document_id is documented in the schema, but pageIndex and groupIndex have no descriptions anywhere. The phrase 'by index' does not clarify whether the index is page-relative, document-relative, or global, so the description fails to compensate for the coverage gap.

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?

States a specific verb+resource ('Ungroup a group'), which distinguishes it from the read-only sibling group_list. However, 'by index' is vague: with two required indices (pageIndex, groupIndex) the description never says which index identifies the group, leaving the agent to infer from 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?

No when-to-use guidance, no prerequisites (e.g., the target must currently be a group), and no pointer to group_list for discovering valid indices. The agent gets no routing help among the many group/shape tools.

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

image_adjustC

Adjust image properties (brightness, contrast, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
contrastNo
itemIndexYes
pageIndexYes
brightnessNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden but discloses nothing: it doesn't say whether the change is reversible, whether it requires the image to be selected, whether it mutates the underlying asset, or how the two required index parameters relate to the operation.

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

Conciseness3/5

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

A single front-loaded sentence is appropriately sized, but the trailing '(etc.)' is vague filler that adds no information and hints at undocumented properties.

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 zero annotations, no output schema, and five parameters (two required) at 20% coverage, the description is inadequate; an agent cannot determine targeting rules, permitted values, or the effect of the operation from it.

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 coverage is only 20% (only document_id is described). The description names brightness and contrast, which merely restates schema property names, and says nothing about the required pageIndex/itemIndex or their targeting semantics, so it fails to compensate for the coverage gap.

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?

States a specific verb (Adjust) and resource (image properties) with example properties. It is distinguishable from siblings like image_fit or image_place, but it does not explicitly differentiate itself from effects tools such as effect_applyTransparency that also alter image appearance.

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 image_fit, effect_applyDropShadow, or transform tools. No prerequisites, no context for selecting it.

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

image_fitC

Fit image content to its frame

ParametersJSON Schema
NameRequiredDescriptionDefault
fittingYes
itemIndexYes
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not disclose whether this mutates the document, whether it is undoable, whether it requires the image/frame to be selected or merely addressed by page/item index, or what happens to image proportions.

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?

A single front-loaded sentence with zero filler, which is structurally clean. However, the extreme brevity leaves real specification gaps that a slightly longer description could close without becoming verbose.

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

Completeness2/5

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

With no annotations, no output schema, four parameters at 25% coverage, and a mutation-like effect on document content, the description is far too thin. An agent cannot tell how to address the target image/frame, what the fitting modes do, or what to expect afterward.

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

Parameters2/5

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

Schema description coverage is only 25% (only document_id is documented), and the description adds nothing about fitting, itemIndex, or pageIndex. The five enum values (fill, proportional, fitContentToFrame, fitFrameToContent, center) are self-describing labels but their distinct effects are never explained, so the compensation required at low coverage is absent.

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?

"Fit image content to its frame" names a specific verb (fit) and resource (image content/frame), so the operation is identifiable. It does not distinguish itself from nearby siblings like image_adjust or image_place, leaving overlap ambiguity about which tool to use for frame/image sizing.

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 instead of image_adjust, image_place, or transform_scale, and no mention of prerequisites such as the image needing to be placed or a frame selected. Usage must be inferred entirely from the name.

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

image_infoC

Get metadata for an image on a page

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIndexYes
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Get' implies a read, but nothing states permissions, whether it mutates anything, or what fields the metadata contains - a significant gap for a tool with zero annotation coverage.

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?

A single short sentence that is front-loaded and wastes no words. It is efficient, though arguably too terse given the gaps elsewhere.

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 3-parameter tool with no annotations and no output schema, the description should say what metadata is returned and how the page/item indices are resolved. Neither is covered, leaving the definition under-specified for correct invocation.

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 coverage is only 33%: document_id is documented in the schema, but pageIndex and itemIndex are bare integers with no description. The phrase 'on a page' hints that pageIndex/itemIndex locate the image, but it adds no real semantics for the two required parameters.

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?

States a specific verb and resource ('Get metadata for an image on a page'), which is clearly a read operation. It does not, however, distinguish itself from siblings like image_list or image_getLinks, so an agent must infer the boundary on its own.

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 the nearby image_list or image_getLinks, nor any precondition or exclusion stated. The agent is left to guess usage from the name alone.

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

image_listC

List all placed images in a page

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'List' implies a read-only operation, but the description does not state the return shape (image references? IDs?), ordering, or whether the document context is required. For a tool with zero annotation coverage this is a notable gap.

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?

A single front-loaded sentence with no redundant text, so every word earns its place. It is arguably too terse given the unstated return behavior, but structurally it is clean.

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 no annotations, no output schema, and only half the parameters documented, the description should say more about what a 'placed image' entry contains and how the document context is resolved. As written, an agent lacks enough information to anticipate the result.

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

Parameters3/5

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

Schema coverage is 50%: document_id is documented in the schema, while pageIndex has no description. The phrase 'in a page' loosely ties the listing to the pageIndex parameter, but adds no format or indexing detail beyond that, so it only partially compensates for the documented gap.

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 ('List all placed images') and scopes it to a page, which is clear enough to distinguish from siblings like image_place or image_adjust. It does not, however, distinguish itself from image_info, image_getLinks, or resources_listLinks, which an agent might reasonably confuse it with.

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 statement of when to use this tool versus alternatives such as image_info, image_getLinks, or resources_listLinks. No prerequisites or exclusions are given, leaving the agent to infer usage entirely from the name.

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

image_placeC

Place an image from a file path onto a page

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
widthNo
heightNo
filePathYes
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations and no output schema, the description carries the full behavioral burden but discloses almost nothing: it does not say whether the image is inline or floating/anchored, whether it needs an open document, whether placement is reversible, or what happens when optional width/height are omitted. This is a bare statement of intent for a mutating 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?

A single front-loaded sentence with zero padding. It is efficient, though its terseness is part of why other dimensions are under-served rather than a virtue in itself.

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 7-parameter mutation tool with no annotations, no output schema, and near-zero schema description coverage, the description is far too thin. An agent lacks the information needed to call it correctly (units, sizing defaults, anchor behavior, document context) and would have to guess.

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

Parameters2/5

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

Schema description coverage is only 14% (just document_id), so the description must compensate but barely does. It implies filePath and page positioning, yet says nothing about the optional width and height sizing parameters, their units, or what omitting them does (natural size vs. auto-fit), leaving three required/optional numeric parameters semantically opaque.

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 (place), the resource (an image), its source (file path), and destination (a page), which is enough to distinguish it from image_list, image_info, or image_adjust. It does not, however, explicitly differentiate itself from the closely related image_fit or image_relink siblings, which an agent might reasonably confuse with placement.

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, when-not-to-use, or alternatives are given. An agent cannot tell from the description whether this is the right choice over image_fit, image_relink, anchoredObject_create, or shape_create when positioning visual content.

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

index_addEntryC

Add an index entry for the current selection

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYes
sortByNo
subTopicNo
pageRangeNosingle
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
pageReferenceTypeNoregular

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It implies a mutation and ties execution to "the current selection," but never states whether an active selection is required, what happens without one, whether the change is reversible, or that document_id selects the target document.

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?

A single front-loaded sentence with no waste, but it is arguably under-specified for a six-parameter mutation tool rather than genuinely concise.

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 six parameters, low schema coverage, no annotations, and no output schema, the description is far too thin. An agent cannot confidently construct a correct call from this alone.

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 coverage is only 17% (just document_id). The description adds nothing about topic, subTopic, sortBy, pageRange, or pageReferenceType, leaving five of six parameters undocumented in both the description and the schema.

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

Purpose4/5

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

The description gives a specific verb+resource ("Add an index entry") and narrows the target to "the current selection." However, it does not distinguish itself from the sibling tools index_createTopic and index_generate, which an agent could easily confuse with adding an index entry.

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 guidance, no prerequisite (e.g., that a text selection must exist), and no reference to the alternative index_createTopic. The agent gets no routing information among the index-related siblings.

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

index_createTopicC

Create a new index topic

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
parentNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a mutation ('Create') but says nothing about persistence, duplicate-topic handling, whether the topic is immediately usable by index_generate, required permissions, or reversibility. That is a significant gap for a write tool.

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

Conciseness3/5

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

A single short sentence is efficient and front-loaded with the core action, but it is terse to the point of under-specification rather than genuinely tight prose. Nothing is wasted, yet nothing beyond the name is contributed.

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 3-parameter mutation tool with no annotations, no output schema, and a large sibling set including index_addEntry/index_generate/index_listTopics, the definition omits hierarchy semantics, document scoping, and workflow position. An agent would be guessing.

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

Parameters2/5

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

Schema description coverage is only 33% (only document_id is documented in the schema). The description adds no parameter meaning at all, and in particular never explains the 'parent' parameter — essential for understanding that topics form a hierarchy — nor the semantics of 'name'.

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 gives a clear verb+resource ('Create a new index topic'), so the agent knows the operation is a creation of an index topic. However, it offers no differentiation from closely related siblings such as index_addEntry, index_listTopics, and index_generate, which an agent must disambiguate on its own.

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 index_addEntry or index_generate, nor any mention of prerequisites (e.g. whether an index must exist, or whether the topic requires a document context). Usage is only implied by the name.

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

index_generateC

Generate the index on a specified page

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
boundsNo
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
includeBookDocumentsNo

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It omits whether this inserts new content into the document, overwrites an existing index, requires an open/active document, or has side effects on the page layout — significant gaps for a document-mutating tool.

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

Conciseness3/5

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

A single front-loaded sentence with no filler, so it is structurally tight, but the terseness comes at the cost of specification rather than being genuinely concise.

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 5 parameters, 20% schema coverage, a nested bounds object, no annotations, and no output schema, the description should say much more about the target page, prerequisites, and result. It leaves most of what an agent needs to call this correctly unstated.

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

Parameters2/5

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

Schema description coverage is only 20%: only document_id is documented in the schema. The required pageIndex and the 'title' and 'bounds' properties are undocumented anywhere; the description only gestures at 'a specified page' without clarifying indexing base or whether bounds/title control the generated index block.

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?

States a specific verb ('Generate') and resource ('the index') plus a scope detail ('on a specified page'). However, it does not differentiate itself from the closely related siblings index_addEntry, index_createTopic, and index_listTopics, which all operate on the same index feature.

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, no prerequisites, and no alternatives named. An agent cannot tell from the description whether index topics/entries must already exist or whether this replaces an existing index page.

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

index_listTopicsC

List all index topics in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'List' implies a non-destructive read, but there is no disclosure of return shape, whether nested/sub-topics are included, ordering, or pagination for a document that may contain thousands of topics.

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?

A single tight sentence with the verb and resource front-loaded and zero waste. It is efficient, though brevity here shades into under-specification.

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?

Adequate for a simple no-required-param list tool with no output schema, but the description says 'active document' while the schema allows targeting any open document by name or index, leaving that capability unmentioned and the scope slightly muddled.

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

Parameters3/5

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

Schema coverage is 100% and the single document_id parameter is fully documented in the schema (name, 0-based index, default to front document). The description adds nothing beyond that baseline, so a 3 is appropriate.

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?

Clear specific verb (List) plus resource (index topics) and scope (active document). It is distinguishable from index_createTopic/index_addEntry because the verb differs, but the description does not explicitly differentiate itself from them or relate to index_generate.

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, no prerequisites, and no reference to the sibling tools index_addEntry, index_createTopic, or index_generate that operate on the same topic collection. The only contextual hint is the phrase 'active document'.

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

interactive_listAnchorsC

List all cross-reference anchors in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'List' implies a safe read, but the description says nothing about permissions, output format, ordering, or pagination, which are the details an agent would want before calling a listing 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?

A single front-loaded sentence with no wasted words, which is appropriate for a simple listing tool. It is perhaps too terse to carry any additional guidance, but as conciseness it is clean.

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 no annotations, no output schema, and no sibling differentiation, the description is thin for its role. An agent cannot tell what an anchor entry looks like, how it differs from xref_list output, or when this is the right tool, leaving meaningful gaps.

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 100%, so the document_id parameter (name or 0-based index, defaults to front document) is already fully documented in the schema. The description adds nothing beyond this, so the baseline 3 applies. It also loosely says 'active document' while the schema allows targeting another open document, a minor mismatch.

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 gives a specific verb (List) and resource (cross-reference anchors) scoped to the active document, so the agent knows exactly what it returns. It does not, however, distinguish itself from the sibling xref_list, which an agent could easily confuse for the same listing operation.

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 guidance, no prerequisites, and no named alternative. With siblings like xref_list, interactive_listHyperlinks, and interactive_listButtons present, the agent gets no help choosing between them.

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

interactive_listButtonsC

List all buttons in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. It confirms this is a read/list operation implicitly, but says nothing about scope (document-wide vs. page-level), whether nested/hidden buttons are included, permission needs, or result 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?

A single short, front-loaded sentence with no filler. It is appropriately sized, though the terseness contributes to the gaps noted elsewhere rather than being a virtue in itself.

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?

There is no output schema and no annotations, so the description must carry return-value and safety context; it does neither. For a listing tool, an agent cannot tell what a 'button' entry contains or how results are structured.

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 100%, so the document_id parameter and its default-to-front-document behavior are already fully documented in the schema. The description's 'active document' phrasing merely restates that default, adding no new semantics.

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?

States a specific verb+resource: 'List all buttons in the active document'. An agent can tell what it does, but the description offers no differentiation from adjacent siblings such as interactive_listHyperlinks or interactive_listAnchors, so it does not fully earn a 5.

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, prerequisites, or alternative routing is given. The phrase 'active document' is the only scoping hint, and it does not tell the agent when to reach for this tool versus interactive_listAnchors or page_listAll.

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

layer_createC

Create a new layer in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoLayer
lockedNo
visibleNo
printableNo
guideLayerNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Create' implies a mutation, but the description says nothing about side effects, whether the new layer is added above or below existing layers, what happens on failure, or whether the operation requires specific document permissions. For a mutation tool with zero annotation coverage, this is a significant gap.

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 front-loaded sentence with no wasted words, which is structurally efficient. However, it is under-specified rather than genuinely concise given the tool's six parameters and mutation behavior. It meets minimum viability but does not earn higher marks.

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 six parameters, 0 required, only 17% schema coverage, no output schema, and no annotations. The description mentions only the basic act of creation and says nothing about defaults (e.g., name defaults to 'Layer', visible defaults to true), document scope beyond 'active document', or return behavior. This is incomplete for an agent to invoke the tool confidently.

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

Parameters2/5

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

Schema description coverage is only 17% – only document_id is documented in the schema, while name, locked, visible, printable, and guideLayer have no descriptions. The tool description adds no parameter-level meaning at all, so it fails to compensate for the low schema coverage. An agent cannot learn the defaults or intended values of most parameters from either source.

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: 'Create a new layer'. It distinguishes itself from siblings like layer_delete, layer_list, layer_reorder, and layer_setProperties by naming the create operation. However, it does not explicitly differentiate its scope or describe what kind of layer is created, so it stops short of a 5.

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

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 layer_list or layer_setProperties. The phrase 'in the active document' gives a vague context, but it doesn't tell the agent when creation is appropriate or what preconditions must hold. This is effectively no usage guidance.

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

layer_deleteD

Delete a layer

ParametersJSON Schema
NameRequiredDescriptionDefault
layerIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

D1.8/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing: not whether deletion is permanent or undoable, whether contained objects are destroyed, which layer is targeted by default, or whether the front document is implicitly affected. For an irreversible-sounding mutation this is a complete gap.

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?

Three words are technically concise, but this is under-specification rather than economy. There is no front-loaded scope, no qualification, and no sentence that earns value.

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 no annotations, no output schema, a destructive operation, and an undocumented required parameter, the description is not complete enough for an agent to invoke this safely or predictably. At minimum it should say which layer is affected and whether the action is reversible.

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 coverage is only 50%: document_id is documented with a useful description, but layerIndex, the required parameter, has no description anywhere. The tool description adds no meaning beyond the schema and does not compensate for the undocumented required argument.

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

Purpose2/5

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

The description 'Delete a layer' merely restates the tool name layer_delete and the verb/resource pairing that is already obvious from the identifier. It states what happens in the broadest possible terms but distinguishes nothing from siblings such as layer_reorder or layer_setProperties, nor does it clarify scope (which document, which layer).

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, no prerequisites, and no mention of alternatives or of what happens to the layer's contents. The agent is left to infer everything from the tool name, even though sibling layer tools and undo/redo exist as relevant context.

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

layer_listC

List all layers in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations at all, the description carries the full behavioral burden, and it discloses almost nothing: ordering of returned layers, whether hidden/locked layers are included, and result shape are unstated. The phrase 'active document' also sits awkwardly next to a document_id parameter that the schema says can target any open document.

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?

A single front-loaded sentence with no filler or redundant restatement. It is efficient, though so terse that it lacks the detail a read tool usually needs.

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?

There is no output schema and no annotations, so the description should describe what a listing returns (layer names, indices, visibility/lock state) and how to consume it. For a query tool with zero structured support, the one-line description leaves the agent guessing about the return 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?

Schema description coverage is 100% for the single document_id parameter, so the schema already explains name-or-index addressing and the front-document default. The description adds no additional parameter meaning, which is the expected baseline when the schema does the work.

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?

States a specific verb (List) and resource (layers) scoped to a document, which separates it from the sibling mutation tools layer_create, layer_delete, layer_reorder, and layer_setProperties. It is clear but contains no explicit sibling differentiation or statement of what a layer listing contains.

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 versus layer_setProperties/layer_reorder, no prerequisites, and no mention of what an agent should do next with the results. Usage is only broadly implied by the verb.

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

layer_reorderC

Move a layer to a new position in the layer stack

ParametersJSON Schema
NameRequiredDescriptionDefault
newIndexYes
layerIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden. It only says the layer moves and does not disclose whether other layers shift, whether the operation is destructive or reversible, what permissions are required, or how errors are reported.

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 wasted words. It states the action and destination immediately.

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 no annotations, no output schema, and incomplete schema coverage, the description is too sparse. It omits prerequisites, index-shifting behavior, and the optional document_id default documented only in the schema.

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 low (33%), and the description adds no parameter meaning. It does not explain layerIndex or newIndex semantics, such as whether they are 0-based, how newIndex interacts with existing indices, or what happens if the target position is already occupied.

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?

States a specific verb (Move) and resource (layer) plus the target concept (new position in the layer stack), so the tool's purpose is clear. It does not explicitly differentiate itself from siblings like layer_create, layer_delete, or layer_setProperties, though the reorder operation is naturally distinct.

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. It does not say when reordering is appropriate versus layer_setProperties or layer_delete, nor does it mention prerequisites such as having an open document.

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

layer_setPropertiesC

Set layer properties (visibility, lock, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
lockedNo
visibleNo
printableNo
layerIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden, yet it discloses nothing about whether unspecified properties are left untouched, whether changes are reversible, whether the target layer must exist, or whether undo grouping applies. 'Set' implies mutation but no mutation semantics (permissions, side effects, return behavior) are described.

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?

It is a single front-loaded sentence with no padding, which is good, but the 'etc.' is hedging that wastes the one slot where useful enumeration could have gone. Brevity here comes at the cost of specification rather than being earned conciseness.

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 5-parameter mutation tool with zero annotation coverage, no output schema, and only 20% parameter description coverage, this one-liner is far too thin. An agent cannot determine required inputs, mutation semantics, or the full set of controllable properties from the description.

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 coverage is only 20% – just document_id is documented in the schema. The description names 'visibility' and 'lock' (mapping loosely to visible/locked) but ignores the required layerIndex and the printable property, and adds no format or default details beyond what the schema shows. It does not compensate for the low coverage.

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?

States a specific verb and resource ('Set layer properties') and gives two concrete examples (visibility, lock), which is enough to distinguish it from siblings like layer_create, layer_list, layer_delete, and layer_reorder. However, the trailing 'etc.' leaves the actual scope of settable properties ambiguous and omits the 'printable' property that the schema exposes.

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 when-to-use guidance, no mention of prerequisites such as needing an open document or a valid layerIndex, and no differentiation of when to prefer this over layer_create or layer_reorder. An agent must infer everything 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.

list_applyToParagraphC

Apply a list to a specific paragraph

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNo
listNameYes
pageIndexYes
frameIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
paragraphIndexYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not state whether 'Apply' overwrites existing list formatting, how numbering restarts, whether the listName must reference a defined list, or what errors occur on an invalid paragraph address.

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?

One short, front-loaded sentence with no filler, which is structurally clean but far too terse for a six-parameter mutation tool. The brevity reflects under-specification rather than disciplined concision.

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?

A mutation tool with no annotations, no output schema, six parameters at 17% documentation coverage, and no statement of prerequisites or side effects. The description leaves the agent without the information needed to call it correctly the first time.

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

Parameters2/5

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

Schema description coverage is only 17% (just document_id), leaving pageIndex, frameIndex, paragraphIndex, listName, and level undocumented in both schema and description. The description's phrase 'specific paragraph' hints at the three-index addressing scheme but never explains it, and it says nothing about level or the listName format.

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 gives a specific verb ('Apply') and resource ('list') plus the target ('a specific paragraph'), which is clearer than the bare name. However, it does not distinguish this from the very similar sibling list_applyToSelection, which applies a list to whatever is selected rather than to an explicitly addressed paragraph.

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 prefer this over list_applyToSelection, nor any mention that a list must first exist via list_define or that list_removeFromParagraph is the inverse operation. The agent must infer the workflow from sibling names alone.

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

list_applyToSelectionC

Apply a list to the current text selection

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNo
listNameYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, and it discloses only that the action targets the current selection. It says nothing about whether this mutates existing formatting, requires an existing list definition, is undoable, or what permissions/state are needed for a write 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?

A single short sentence with the target scope front-loaded and no filler. Its brevity is efficient, though it borders on under-specification rather than tightness.

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 no annotations, no output schema, and only a third of parameters documented, the description is too thin. An agent lacks the prerequisites, parameter meaning, and effect disclosure needed to invoke it confidently.

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 coverage is only 33% — listName and level have no descriptions — and the description adds nothing about the list name format or what level (default 1) controls. It merely implies a list name exists, leaving the two undocumented parameters unclarified.

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?

Specific verb (apply) plus resource (list) plus target scope (current text selection) — an agent can distinguish it from list_applyToParagraph by the 'selection' vs 'paragraph' target. It stops short of explicitly naming that sibling, so it's clear but not fully differentiated.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites (e.g. the list must already be defined via list_define), and no mention of alternatives like list_applyToParagraph or list_restartNumbering. The selection-based target is the only implicit cue.

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

list_defineC

Define a new numbered or bulleted list

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
typeYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
continueNumberingNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. "Define" implies creation of a list definition, but the description does not say whether a document must be open, whether it mutates the document, how it interacts with existing lists, or what is returned.

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?

A single efficient sentence with no waste and the core action front-loaded. It is terse rather than padded, though arguably too sparse to be genuinely well-structured.

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 creation tool with no annotations, no output schema, and only 25% parameter coverage, the description leaves most of what an agent needs unanswered. It states the action but not the context, prerequisites, or consequences.

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

Parameters2/5

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

Schema description coverage is only 25%: only `document_id` is documented in the schema. The description contributes nothing about `name`, `type`, or `continueNumbering`, so it fails to compensate for the coverage gap. The only partial signal is that "numbered or bulleted" echoes the `type` enum.

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 names a specific verb ("Define") and resource ("list") and states the two variants (numbered/bulleted), matching the `type` enum. It does not explicitly distinguish itself from siblings like list_applyToParagraph or list_list, so an agent must infer the 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?

There is no explicit when-to-use guidance and no alternatives are named. The relationship to siblings such as list_applyToParagraph, list_restartNumbering, and list_list (i.e., define first, then apply) is left entirely to inference.

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

list_listB

List all defined lists in the document

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the burden. 'List all' implies a read-only, complete enumeration of numbering/bullet lists, which conveys a safe non-destructive profile and no filtering. It does not disclose return format, permissions, or whether the front-document default changes behavior, leaving moderate gaps.

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 scope and intent.

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 tool with one optional param this is nearly sufficient, but with no output schema the description should indicate what a 'defined list' is and what is returned. The scope word 'all' is the only hint, leaving a modest completeness gap.

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

Parameters3/5

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

Schema coverage is 100% for the single document_id parameter, including its default and accepted forms, so the schema does the heavy lifting. The description adds no parameter semantics beyond what the schema already states, making the baseline 3 correct.

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 gives a specific verb (List) and resource (defined lists) scoped to a document, which separates it from siblings like list_define or list_applyToParagraph. It does not explicitly name those siblings, but the resource is distinct enough that an agent can identify the intent.

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 list_define, list_applyToParagraph, or list_restartNumbering. No preconditions or context are given; the agent must infer usage entirely from the name and resource.

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

list_removeFromParagraphC

Remove list formatting from a paragraph

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIndexYes
frameIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
paragraphIndexYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden and does not meet it. It doesn't say what happens to numbering, bullets, indentation, or the paragraph style after removal, nor whether the operation is reversible or requires the paragraph to currently be a list.

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?

A single short sentence with zero waste, front-loaded on the action. It is efficient, though the brevity borders on under-specification rather than optimal conciseness.

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 no-annotation mutation tool with three undocumented required parameters and no output schema, the description is far too thin. An agent cannot tell what indexes address the paragraph, what state the document must be in, or what side effects to expect.

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 coverage is only 25% – only document_id is documented, while the three required parameters (pageIndex, frameIndex, paragraphIndex) have no descriptions anywhere. The description's vague 'a paragraph' hints at paragraphIndex but adds no real addressing or format guidance to compensate.

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 plus resource plus target ('Remove list formatting from a paragraph'), so an agent immediately knows it is the inverse of the sibling list_applyToParagraph. It stops short of naming that sibling explicitly, so differentiation is inferred rather than stated.

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 explicit when-to-use, when-not-to-use, or alternative named. The inverse relationship with list_applyToParagraph/list_applyToSelection is left for the agent to infer from the verb alone, and no preconditions (e.g. must already be a list) are given.

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

list_restartNumberingC

Restart numbering at a specific paragraph

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIndexYes
frameIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
startNumberYes
paragraphIndexYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Restart numbering' implies a mutation, but the description says nothing about what state is affected, whether it is reversible, what format startNumber takes, or what is returned – a significant gap for a no-annotation tool.

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

Conciseness3/5

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

A single short sentence with no wasted words and the action front-loaded, but it is under-specified rather than genuinely concise. Brevity here comes at the cost of the guidance the tool needs.

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 five-parameter mutation tool with no annotations, no output schema, and 20% schema coverage, a one-line description is inadequate. Nothing tells the agent how to locate the target paragraph or what startNumber does, so the definition is not sufficient to call the tool correctly.

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

Parameters2/5

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

Schema description coverage is only 20% (just document_id), so the description must compensate for the other four parameters. It adds no information about paragraphIndex, startNumber, pageIndex, or frameIndex – 'a specific paragraph' only loosely gestures at paragraphIndex without clarifying syntax or semantics.

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 states a verb ('restart') and resource ('numbering') but leaves the resource ambiguous – 'numbering' could mean list numbering, section numbering, or footnote numbering, and siblings like section_setNumbering and list_applyToParagraph make the distinction material. It does not differentiate this tool from those siblings, so the purpose is only vaguely conveyed.

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 guidance, no mention of prerequisites, and no reference to any alternative tool. An agent cannot tell from the description when this should be invoked versus list_applyToParagraph or section_setNumbering.

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

master_applyC

Apply a master spread to a specific page

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIndexYes
masterNameYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and discloses nothing: whether existing page overrides are preserved, whether the master must already exist, whether the action is undoable, or what happens on invalid input.

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

Conciseness4/5

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

A single efficient sentence with the action front-loaded and no filler. It is concise, though concision here borders on under-specification for a mutation tool.

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 no annotations, no output schema, and two of three parameters undocumented, the description is too thin to let an agent invoke it confidently.

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 coverage is only 33% — only document_id is documented. The description refers to 'a specific page' and 'a master spread' but adds no format or constraint detail (index vs. name, 0-based indexing, valid masterName source) beyond what the schema already states.

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?

States a specific verb and resource: applying a master spread to a page. However, it does not differentiate from the near-identical sibling page_applyMaster, leaving an agent unable to decide between the two from the text alone.

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, no prerequisites (e.g. whether the page must be empty or the master must exist), and no mention of the page_applyMaster alternative that appears to do the same job.

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

master_createC

Create a new master spread with a given name and page count

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
pageCountNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Create' implies mutation, but it says nothing about side effects, whether the master is persisted to a document, uniqueness of the name, or the return value. For a creation tool with zero annotation coverage this is a significant gap.

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?

A single front-loaded sentence with zero filler, which is efficient. It is arguably too sparse for a mutation tool, but that shortfall belongs to contextual completeness rather than structure.

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 no annotations, no output schema, and 3 parameters at 33% schema coverage, the description is too thin. It omits the document context requirement (document_id defaulting to the front document), name-uniqueness behavior, and what is returned, leaving the agent without enough to invoke it confidently.

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 coverage is only 33%: only document_id is documented in the schema. The description names 'name' and 'page count', which maps to two of the three parameters, but adds no meaning beyond the property names and does not compensate for the undocumented constraints (pageCount range 1-10, default 1).

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?

States a specific verb and resource ('Create a new master spread') plus the two key inputs (name, page count), so an agent can tell it apart from sibling mutation tools like master_duplicate or master_apply. It stops short of explicitly contrasting itself with those 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?

The description gives no when-to-use guidance, no alternatives (e.g. master_duplicate for copying an existing spread), and no prerequisites such as a document needing to be open. Usage must be entirely inferred.

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

master_deleteC

Delete a master spread by name

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a destructive, irreversible operation but never states whether the deletion can be undone, what happens to pages already using the master, whether it requires the document to be writable, or what the result is.

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?

A single seven-word sentence with zero filler and the action front-loaded. It is efficient, though the brevity reflects under-specification as much as tight editing.

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 tool with no annotations, no output schema, and only half the parameters documented, the description is substantially incomplete. It should at minimum address undo/reversibility, in-use constraints, and how the master name is resolved.

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

Parameters3/5

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

Schema coverage is 50%: document_id is fully documented in the schema, but 'name' has only a minLength constraint. The phrase 'by name' usefully signals that the name identifies the master spread rather than the document, adding a little meaning beyond the schema, but it gives no format or lookup guidance.

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?

States a specific verb and resource ('Delete a master spread') plus the identification method ('by name'), so an agent can distinguish it from master_create/master_duplicate/master_apply. It does not explicitly contrast itself with any sibling, but the verb makes the distinction obvious.

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 guidance, no mention of alternatives, and no preconditions such as whether the master must first be removed from pages or whether a list call is needed to resolve the name. The agent is left to infer everything.

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

master_duplicateC

Duplicate an existing master spread

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
newNameYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Duplicate' implies a write operation that creates a copy, but it does not disclose whether the original is preserved, what happens if newName collides, permission requirements, or any mutation 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 a single front-loaded sentence with no wasted words. However, it is under-specified for a mutation tool with three parameters and no annotations, so 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?

Given a mutation tool with no annotations, no output schema, and only 33% parameter description coverage, the description is too thin. It does not provide the behavioral, parameter, or usage context an agent would need to invoke it confidently.

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 33%. The required parameters name and newName have no descriptions in the schema, and the description adds no meaning for any parameter. Only document_id is documented in the schema, so the description fails to compensate for the coverage gap.

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 ('Duplicate') and resource ('master spread'), which clearly separates it from master_create, master_delete, and master_list. It does not explicitly reference a sibling alternative, but the resource scope 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 master_create, master_apply, or even page_duplicate. The implied use case is copying an existing master spread, but no exclusions or alternatives are given.

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

master_getPagesC

List all pages on a master spread

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'List' implies a safe read, but the description does not disclose pagination, ordering, or whether the required 'name' must match an existing master spread. For a tool with zero annotation coverage this is thin.

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?

A single front-loaded sentence with no filler. It is efficient, though the brevity contributes to the gaps in parameter and behavioral disclosure.

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 no annotations, no output schema, and one of two parameters undocumented, the description should do more. It omits what 'name' refers to and what the returned page list contains, leaving the agent to guess.

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 coverage is 50%: document_id is documented, but the required 'name' parameter has no description anywhere. The description implies 'name' is the master spread identifier but never says so, leaving the required parameter semantically 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?

States a specific verb and resource: 'List all pages on a master spread'. An agent can distinguish this from page_listAll (all document pages) and document_getStoryPages. However, it does not name a sibling or clarify the master-spread scope against master_list.

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, no prerequisites, and no mention of alternatives such as page_listAll or master_list. The agent must infer that this tool is for inspecting a master spread's pages.

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

master_listB

List all master spreads with page count

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It implies a read-only list and notes that page count is included, but it omits permissions, side effects, pagination, or any other operational details.

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 zero wasted words. It efficiently communicates the core action and the key return item.

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 one optional parameter and no output schema, the description is minimally adequate. However, it omits usage guidance and does not distinguish itself from the similar export_getMasterSpreads sibling, leaving clear gaps.

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 100%, so the single optional parameter (document_id) is fully documented in the schema itself. The description adds no additional parameter meaning, so the baseline score of 3 is appropriate.

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 (List) and resource (master spreads) and mentions the returned page count. It is clear on its own, but it does not differentiate itself from similar siblings like export_getMasterSpreads or master_getPages.

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. The description simply states the action without any context, prerequisites, or exclusions.

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

note_addEndnoteC

Add an endnote to a story

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
storyIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
numberingTypeNodecimal

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and delivers almost nothing: it does not say the operation mutates the document, that a document must be open, where the endnote text is inserted relative to the story, or how numberingType affects the result. Only the bare action 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.

Conciseness3/5

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

The single sentence is front-loaded and wastes no words, which is good, but for a four-parameter mutation tool it is under-specified rather than genuinely concise. Shortness here comes at the cost of missing information.

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?

No output schema and no annotations, plus low parameter coverage, mean the description should do much more work. It omits document targeting, story resolution, numbering behavior, and return/error semantics, so an agent cannot call this reliably from the definition alone.

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

Parameters2/5

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

Schema description coverage is only 25% (just document_id), so the description must compensate and does not. It never explains what storyIndex refers to, what text is inserted, or how the numberingType enum values (decimal, lowerRoman, etc.) are applied, leaving three parameters effectively 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?

States a specific verb (Add) and resource (endnote) and scopes it to a story, so the agent knows this creates an endnote rather than a footnote. It does not explicitly contrast with the sibling note_addFootnote, but the distinct noun 'endnote' carries that differentiation implicitly.

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, no mention of the alternative (note_addFootnote) or the note_footnoteOptions sibling, and no prerequisites such as an open document or a valid story index. The agent must infer everything from the name.

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

note_addFootnoteC

Add a footnote to a specific paragraph in a story

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
prefixNo
suffixNo
storyIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
numberingTypeNodecimal
paragraphIndexYes
startingNumberNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral disclosure burden. It only states the basic action ('Add') but does not describe required permissions, whether the story must be open, what happens to existing footnotes, or any side effects. This is a significant gap for a mutation tool.

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

Conciseness5/5

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

A single, front-loaded sentence with no wasted words. It is appropriately concise for the amount of information provided, though the information itself is sparse. Structure 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?

Given 8 parameters, 3 required, no output schema, no annotations, and 13% schema coverage, the description is far from complete. It provides only the core purpose and does not help an agent understand how to invoke the tool correctly beyond the basic intent.

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 very low (13%), so the description should compensate. It implies the meaning of 'storyIndex' and 'paragraphIndex' by mentioning 'a story' and 'a specific paragraph', but it omits any mention of the other six parameters (text, prefix, suffix, document_id, numberingType, startingNumber). The description adds minimal value beyond the schema.

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

Purpose4/5

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

States a specific verb and resource: 'Add a footnote to a specific paragraph in a story'. This clearly distinguishes it from most siblings, though it does not explicitly differentiate from note_addEndnote, which adds endnotes. Still, the resource 'footnote' is specific enough for an agent to select it over unrelated 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?

No guidance on when to use this tool versus alternatives such as note_addEndnote or note_listFootnotes. There is no mention of prerequisites or context. The agent must infer usage entirely from the name and description.

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

note_footnoteOptionsC

Set footnote options for the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
layoutNo
prefixNo
suffixNo
separatorNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
numberingTypeNo
startingNumberNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Set' implies a mutation, but the description omits permissions needed, reversibility, whether existing options are overwritten, and any response 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 single sentence is front-loaded and contains no filler, but it is under-specified for a 7-parameter tool. It is concise without being appropriately sized for the operation's complexity.

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 7 parameters, 14% schema coverage, no annotations, and no output schema, the description is far too sparse. It leaves usage, parameter semantics, and behavioral traits almost entirely undocumented.

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?

The tool has 7 parameters and schema description coverage is only 14% (only document_id is described). The description adds zero parameter meaning, so it fails to compensate for the poor schema coverage.

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?

States a specific verb ('Set') and resource ('footnote options') scoped to the active document. It is distinguishable from siblings like note_addFootnote and note_listFootnotes, but does not name alternatives or clarify which options are covered.

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 explicit when-to-use, when-not-to-use, or alternative tools are given. Usage is only implied by the phrase 'for the active document'; an agent gets no guidance on prerequisites or appropriate scenarios.

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

note_listFootnotesC

List all footnotes in a story or the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
storyIndexNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It never states that this is a read-only operation, whether results are paginated, or what a returned footnote contains; only 'list all' hints at read-only semantics.

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?

A single tight sentence with the resource front-loaded and no filler. It is efficient, though arguably at the cost of the missing detail noted elsewhere.

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 no output schema, no annotations, and an undocumented storyIndex parameter, the definition leaves real gaps: an agent cannot tell what a footnote result looks like or how to source a story index. More disclosure is warranted for a tool with zero structured support.

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 coverage is 50%: document_id is documented in the schema, but storyIndex has no description anywhere. The phrasing 'in a story or the active document' loosely maps to the two parameters but never explains what a story index is or where to obtain one (e.g. text_getStories).

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?

States a specific verb ('List') and resource ('footnotes') plus its scope ('in a story or the active document'). This cleanly distinguishes it from the note_addFootnote/note_addEndnote siblings, though it doesn't clarify that endnotes are out of 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?

No guidance on when to use this versus note_footnoteOptions or note_addEndnote, and no indication of when to supply storyIndex versus document_id. The agent must infer the two calling modes entirely from the schema.

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

page_addC

Add a new page to the active document at a specified position

ParametersJSON Schema
NameRequiredDescriptionDefault
positionNoatEnd
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
referencePageNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It implies a mutation but says nothing about side effects on existing pages, undoability, whether it requires an open document, or what the caller gets back. For a mutation tool with zero annotation coverage this is a significant gap.

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?

A single front-loaded sentence with no filler. It is efficient but arguably too terse, trading concision for the missing guidance noted elsewhere.

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 3 parameters, no annotations, no output schema, and low schema coverage, the description should explain the referencePage dependency and the position enum. It does none of that, so an agent invoking before/after has no indication that a reference page is needed.

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 coverage is only 33%. The description covers the position concept loosely and gestures at the document via 'active document', but it does not explain that 'before'/'after' require referencePage, nor does it clarify the enum values or the default-to-front-document behavior. It compensates for little of the coverage gap.

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?

States a specific verb and resource ('Add a new page') plus scope ('to the active document at a specified position'), so an agent can distinguish it from page_duplicate or page_move without opening the schema. It stops short of naming those siblings explicitly.

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

Usage Guidelines2/5

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

No guidance on when to use this versus page_duplicate, page_move, or page_delete, and no prerequisites stated. The 'at a specified position' phrase hints at use cases but leaves the alternative-selection logic entirely to inference.

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

page_applyMasterC

Apply a master spread to a page

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIndexYes
masterNameYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not disclose whether applying a master overwrites existing master-page items, whether the operation is reversible (undo), or what permissions/state is required. For a mutation tool with zero annotation coverage this is a meaningful gap.

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?

A single front-loaded sentence with no filler. It is efficient, though its brevity reflects under-specification rather than tight completeness.

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?

A mutation tool with no annotations, no output schema, and two of three parameters undocumented in both the schema and description is not complete enough for confident invocation. The agent lacks the information needed to know what applying a master does to existing page content.

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

Parameters2/5

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

Schema description coverage is only 33% — only document_id is documented in the schema, while pageIndex and masterName are bare. The description names 'page' and 'master spread' but adds no format, indexing base, or naming semantics to compensate for the undocumented parameters.

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?

States a specific verb+resource pair ('Apply a master spread to a page'), which is clear about what happens. However it does not distinguish itself from the sibling master_apply, leaving ambiguity about which one an agent should pick.

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 guidance, no prerequisites (e.g. that the master must already exist, see master_list/master_create), and no mention of the near-identical sibling master_apply. The agent must infer the context entirely.

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

page_deleteC

Delete a page from the active document by index

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It conveys that the operation is destructive and scoped to the active document, but says nothing about irreversibility, whether the deletion is undoable, what happens to content on the deleted page, or the required permissions.

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?

A single, front-loaded sentence with no filler or redundancy. It is efficient, though its terseness is part of what leaves gaps elsewhere.

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 mutation with no annotations, no output schema, and a required parameter whose semantics are undocumented, the description is too thin. An agent cannot know the indexing convention, reversibility, or side effects on page content and numbering before calling it.

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 coverage is 50%: document_id is fully documented in the schema, but the required 'index' parameter has only type/minimum, no description. The description says 'by index' but never clarifies 0-based versus 1-based indexing or how index relates to page ordering, so it does not compensate for the coverage gap on the required parameter.

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?

States a specific verb (Delete) and resource (page) plus a scoping constraint ('from the active document by index'), which separates it from sibling mutators like page_add, page_duplicate, and page_move. It is clear on its own, though it does not explicitly contrast itself with those 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 on when to use this versus page_add/page_duplicate/page_move, and no prerequisites, warnings, or alternative named. The agent must infer usage entirely from the name and one-line description.

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

page_duplicateC

Duplicate a page in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and discloses almost nothing: it doesn't say where the duplicate is inserted (after the original?), whether the original is modified, whether the operation is undoable, or how the required index is interpreted.

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?

A single front-loaded sentence with no wasted words. It is efficient, though its brevity edges into under-specification rather than pure conciseness.

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 no annotations, no output schema, and an undocumented required parameter, the description is far too thin. An agent cannot confidently predict the result of the call or the meaning of the scope phrase 'active document'.

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 coverage is 50%; the required 'index' parameter has no description at all, and the description does not compensate by explaining whether index is the source page's index or an insertion position. Claims 'the active document' while the schema also accepts a document_id, adding ambiguity rather than clarity.

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?

States a specific verb (duplicate) and resource (page) scoped to a document. It is distinguishable from page_add, page_delete, and page_move, though it never acknowledges the sibling duplicators (master_duplicate, style_duplicate) or clarifies how duplication differs from page_add.

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, no prerequisites, and no statement of how this differs from page_add for creating a page. An agent gets no help deciding between duplication and adding a blank page.

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

page_getInfoC

Get detailed information about a specific page

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read via 'Get' but never confirms read-only semantics, says nothing about behavior for an out-of-range index, and gives no sense of the shape or scope of the returned 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?

A single short sentence with the verb and resource front-loaded and no filler. It is efficient, though its brevity is partly a symptom of under-specification rather than disciplined restraint.

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 no annotations and no output schema, the description must explain what 'detailed information' comprises and how the required index is interpreted; it does neither. For a lookup tool with an undocumented required parameter, this is inadequate.

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 50%: document_id is documented ('a name or 0-based index... defaults to the front document'), but the required 'index' parameter has no description anywhere. The description adds nothing to clarify whether index is the page position, and does not compensate for the coverage gap.

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?

States a specific verb and resource (get info about a page), which is clearly distinct from mutating siblings like page_add or page_delete. However, 'detailed information' is vague about what is actually returned, and it does not distinguish itself from page_listAll or document_getInfo.

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 page_listAll (to enumerate pages) or document_getInfo (for document-level info). The agent must infer that this is the per-page inspection tool purely from the name.

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

page_listAllB

List all pages in the active document with their properties

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, so the description carries the full behavioral burden. It never explicitly states the operation is read-only/non-destructive, nor does it disclose return shape, ordering, or whether it paginates. 'List' weakly implies a read, but the description leaves the safety profile to inference.

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 operation and its scope.

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?

This is a low-complexity read tool with one fully documented optional parameter and no output schema, so the description is nearly sufficient. However, with no annotations it should at least confirm read-only behavior and clarify what 'properties' are returned; it leaves those gaps.

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 100%, so the document_id parameter is already fully documented in the schema including its name/index/default semantics. The description adds nothing beyond the schema, so the baseline of 3 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?

States a specific verb and resource: 'List all pages in the active document with their properties.' The scope ('all pages') is clear, but it does not differentiate itself from siblings like page_getInfo (single-page info) or document_getStoryPages, so the agent must infer which lister to use.

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 guidance, no prerequisites, and no named alternative such as page_getInfo for a single page. The name implies a listing use case, but nothing tells the agent when this tool is preferable to its siblings.

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

page_moveC

Move a page to a new position in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYes
toIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations are absent, so the description carries the full disclosure burden. It doesn't say whether the move is reversible, how intervening pages shift, whether indices are 0-based, or whether an undo point is created — all material for a mutation tool.

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

Conciseness3/5

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

A single efficient sentence with no waste, but its brevity reflects under-specification rather than disciplined concision given the gaps above.

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 no annotations, no output schema, and a confusing index/toIndex pair, the description does far too little. An agent needs to know the index semantics and the effect on surrounding pages before invoking it.

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 coverage is only 33% and the description adds nothing about the two required params. Crucially, the distinction between 'index' (current position) and 'toIndex' (target position) is left entirely undefined, which is the single most important ambiguity for calling this 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?

Clear verb+resource: 'Move a page' with the destination framing 'to a new position in the active document'. It does not differentiate from siblings like page_duplicate or page_add, but the action itself 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?

No when-to-use guidance, no prerequisites, and no mention of alternatives among the many page_* siblings. The agent must infer when this is the right tool.

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

preview_documentC

Render a page of the active document as an image (PNG or JPEG) so you can visually inspect layout, colors and typography

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNopng
pageIndexNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
documentIndexNo
resolutionPpiNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses the output type (PNG/JPEG image) but says nothing about whether rendering requires an open document, whether it is read-only or writes a file to disk, cost/performance, or how the image is returned to the caller.

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?

A single, front-loaded sentence with no filler; the object and the purpose are stated immediately. It is not padded, and every clause carries information.

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 5-parameter tool with no annotations, no output schema, and 20% schema coverage, the description omits too much: return-value shape, resolution semantics, document selection semantics, and any safety/performance context. The single sentence is a good start but far from sufficient.

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 coverage is only 20% (just document_id), and the description names only format, page, and the target document loosely. The resolutionPpi parameter (72-600, default 150) and documentIndex are undocumented in both schema and description, so an agent must guess at resolution behavior and how documentIndex interacts with document_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?

It states a specific verb and resource (render a page of the active document as an image) plus the intent (visual inspection of layout, colors, typography). That distinguishes it reasonably well from pagination/metadata siblings, but it does not explicitly differentiate itself from export_document or export_batchFolder, which also produce page output.

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 'so you can visually inspect' implies the use case (checking rendered appearance) but names no conditions, prerequisites, or alternatives. With export_document and export_batchFolder in the sibling set, an agent gets no explicit steer on when to preview versus export.

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

recipe_exportPresetA

Export the active document to PDF using a named PDF export preset in one call — validates the preset first and, if it is wrong, fails with the list of valid preset names

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoCustom timeout in ms
filePathYesAbsolute path of the PDF to write
presetNameYesName of an existing PDF export preset, e.g. "[Press Quality]" — the error lists the valid names
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
documentIndexNoIndex into the open-document list (see document_getState); defaults to the front document

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that the preset is validated first and that failure returns the list of valid preset names, but it omits important export-side behavior such as whether an existing file is overwritten, what permissions are needed, and how timeout failures are handled.

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 that states the action, method, and key validation behavior without filler. Every clause earns its place and the agent gets the most important information first.

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 5-parameter export tool with full schema coverage and no output schema, the description provides sufficient purpose and error-handling context for invocation. It is somewhat incomplete because it does not address overwrite behavior or how it relates to sibling export tools, but the schema covers parameters and there is no return value to explain.

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 100%, so the schema already documents all five parameters in detail, including the presetName example and document selection behavior. The description adds the validation behavior around presetName but no additional syntax or meaning beyond what the structured parameters already provide, making the baseline score of 3 appropriate.

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

Purpose5/5

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

The description states a specific verb, resource, output format, and method: exporting the active document to PDF using a named PDF export preset. This distinguishes it from the generic sibling export_document by requiring a named preset, giving an agent enough to identify the tool without opening its schema.

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 when to use it: exporting the active document to PDF via a named export preset in one call. However, it does not explicitly compare this tool against alternatives such as export_document or export_batchFolder, nor does it state prerequisites or exclusions, so the usage guidance remains implied rather than explicit.

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

recipe_flowTextStoryA

Place a text file and flow it across as many pages as it needs in one call — creates the frames, links them, adds pages when it runs out, and reports where the story ended and whether it still overflows

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoCustom timeout in ms
filePathYesAbsolute path to the text file to place (.txt, .rtf, .docx, … or a text-only .indd)
maxPagesNoHard cap on frames created; if reached, the remaining overset text is reported, not thrown
pageIndexNoPage to start the story on (0-based)
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
documentIndexNoIndex into the open-document list (see document_getState); defaults to the front document

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does so well: it discloses the side effects (creates frames, links them, adds pages when space runs out) and the reporting behavior (where the story ended, whether it still overflows). It does not state permission/auth requirements or that it mutates the open document, keeping it short of 5.

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 em-dash sentence that front-loads the core action and then lists the composite behaviors; every clause earns its place with zero 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?

For a six-parameter mutation tool with no annotations and no output schema, the description usefully explains the return-ish outcome (ending position and overflow status), which compensates for the absent output schema. It leaves document-selection/versioning behavior to the schema but is otherwise complete.

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

Parameters3/5

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

Schema description coverage is 100%, so all six parameters (filePath, maxPages, pageIndex, document_id, documentIndex, timeout) are already documented. The description hints at the maxPages overflow-reporting behavior but adds no syntax or format detail beyond the schema, so baseline 3 applies.

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 (place/flow) and resource (text file as a story across pages), and the composite nature clearly distinguishes it from atomic siblings like text_addFrame, text_linkFrames, and page_add.

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

Usage Guidelines4/5

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

The phrase 'in one call' signals this is the composite one-shot versus doing the create-frame/link-frame/add-page steps individually, giving clear context for when to prefer it. It stops short of naming the atomic alternatives or stating exclusions (e.g. when NOT to use it).

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

redoC

Redo the last undone operation

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not say whether redo works multiple levels deep, what happens when the undo stack is empty, whether it errors or no-ops, or which document is affected by default — all relevant for an unannotated mutation tool.

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

Conciseness4/5

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

A single short sentence with no filler, and the essential information is front-loaded. It is efficient but almost too terse to earn a top score.

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 tool is low complexity with one optional, well-documented parameter and no output schema, so little is strictly required. However, with zero annotations the description leaves the redo-stack semantics and empty-stack behavior unstated.

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 100%; document_id is fully documented in the schema (name or 0-based index, defaults to front document). The description adds nothing about the parameter, so the baseline 3 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?

States a specific verb (redo) and resource (the last undone operation), and the phrase 'last undone' implicitly contrasts with the sibling 'undo'. It does not explicitly differentiate from undo_history or undo_beginGroup/endGroup, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, no prerequisites, and no mention of the closely related siblings undo, undo_history, or undo_beginGroup/undo_endGroup. The only usage signal is the implicit 'after an undo' framing baked into the word 'redone'.

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

resources_getLinkInfoC

Get detailed status for a specific link

ParametersJSON Schema
NameRequiredDescriptionDefault
linkIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden and does not meet it. 'Detailed status' is not unpacked — nothing about what the status contains, whether it reports broken/missing/modified links, or whether any permissions or an open document are required. The only inferable trait is that it is a read operation, from the verb 'Get'.

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?

A single front-loaded sentence with no filler, which is appropriate for a simple lookup. It is terse to the point of under-specification, but nothing in it is wasted.

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 no annotations, no output schema, and only 50% parameter coverage, the description leaves key gaps: what 'status' means and how to obtain a valid linkIndex. An agent would need to guess its way through the call.

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 coverage is only 50%: document_id is documented inline, but linkIndex has no description and the tool description adds nothing about it — not where the index comes from (resources_listLinks) nor whether it is document-scoped. With below-half coverage the description should compensate and does not.

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?

States a specific verb ('Get detailed status') and resource ('a specific link'), so an agent knows exactly what it returns. However, it does not distinguish itself from near-name siblings such as resources_listLinks or image_getLinks, so the sibling differentiation element of a 5 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 explicit when-to-use guidance, no mention of the alternative tools (resources_listLinks, resources_updateLink, image_getLinks), and no statement of prerequisites. 'For a specific link' only weakly implies you first need a link index from another call.

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

script_runC

Execute arbitrary ExtendScript code with optional debug mode that returns line-level error stack traces

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
debugNoEnable debug mode: wraps code in try/catch and returns ExtendScript error stack
timeoutNoCustom timeout in ms
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions that debug mode returns line-level error stack traces, but says nothing about side effects of executing arbitrary code, sandboxing, permission requirements, or the default timeout behavior, all of which matter for an execution 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?

A single compact sentence with no filler, and the primary purpose is front-loaded. It is efficient, though the debug clause could be dropped since the schema already covers it.

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 four-parameter code-execution tool with no annotations and no output schema, the description is too thin. It omits sandboxing/permission expectations, default timeout, how document_id interacts with execution, and what a normal (non-debug) result looks like.

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

Parameters3/5

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

Schema coverage is 75% – 'debug' and 'timeout' and 'document_id' are documented in the schema, while 'code' is not. The description's mention of debug mode largely restates the schema's own description, adding no format hints, limits, or timeout default beyond what the schema already supplies.

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?

States a specific verb and resource: 'Execute arbitrary ExtendScript code' plus the debug-mode behavior. However, it does not differentiate itself from the sibling export_executeScript, which an agent could easily confuse with this tool when deciding how to run a script.

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 indication of when to use this versus the sibling export_executeScript, nor any prerequisites. The word 'arbitrary' hints at a general-purpose escape hatch, but the agent gets no explicit when/when-not guidance.

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

section_createC

Create a new section starting at a specified page

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
includePrefixNo
sectionPrefixNo
numberingStyleNodecimal
startPageIndexYes
pageNumberStartNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says nothing about permissions, reversibility, interaction with existing sections, or what defaults the new section receives, which is a significant gap for a mutation tool.

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

Conciseness4/5

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

A single efficient sentence, front-loaded with the verb and resource, with no wasted words. Brevity is appropriate structurally, though it leaves content gaps.

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 7-parameter mutation tool with no annotations, no output schema, and 14% schema coverage, a one-line description is far too thin. An agent lacks the context needed to invoke it correctly across its parameters.

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

Parameters2/5

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

Schema description coverage is only 14% (just document_id), so the description must compensate for the six undocumented parameters. It only gestures at startPageIndex ('starting at a specified page') and says nothing about name, includePrefix, sectionPrefix, numberingStyle, or pageNumberStart.

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?

States a specific verb+resource ('Create a new section') and adds the scope constraint ('starting at a specified page'). It is clearly distinguishable from section_delete and section_list by name, but does not explicitly differentiate itself from sibling section tools in the text.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, no prerequisites, and does not name alternatives such as section_setNumbering or section_delete. The agent must infer usage purely from the name.

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

section_deleteC

Delete a section by its index

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
sectionIndexYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden for a destructive mutation. It does not state whether the deletion is reversible, whether it can be undone via the undo tool, what happens to section content, or what permissions are required.

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?

A single tight sentence with no filler, and the action is front-loaded. It is efficient but too sparse to count as well-structured for a destructive operation.

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 tool with no annotations, no output schema, and one undocumented parameter, the description should cover reversibility and indexing semantics. As written, it omits everything an agent needs beyond the literal action.

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 50%: document_id is fully documented in the schema, while sectionIndex has no schema description. The description names 'index' as the identifying input, loosely mapping to sectionIndex, but adds no details (0-based, whether it references the list from section_list) 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?

States a specific verb and resource ('Delete a section'), so an agent knows exactly what it does. However, it offers no differentiation from sibling destructive tools (page_delete, layer_delete, shape_delete) or from section_create/section_list, leaving the agent to infer scope from the name alone.

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, no alternatives named, and no prerequisites stated. The description does not mention that section_list or section_create exist as the complementary read/creation operations for the same resource.

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

section_listB

List all sections in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. 'List' strongly implies a non-destructive read, which is useful, but the description never confirms read-only semantics, doesn't describe the return shape (e.g., section names vs indices), and adds no scoping caveats beyond the single clause.

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?

A single tight sentence with no filler and the resource/scope front-loaded. It is efficient, though its brevity leaves no room for the routing or behavioral context an agent might want.

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 one-optional-parameter read tool with no output schema, the description is minimally adequate: the agent can call it correctly. However, with no annotations and no output schema, it leaves the read-only nature and return content unstated, so it is complete only at a bare-minimum level.

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 100%, so document_id (name or 0-based index, defaulting to the front document) is already fully documented. The description's phrase 'active document' only loosely echoes the schema default and adds no syntax or format detail beyond it, so baseline 3 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?

States a specific verb ('List') and resource ('sections') scoped to the active document, so the agent knows exactly what it retrieves. It does not explicitly differentiate itself from the sibling set (section_create, section_delete, section_setNumbering), though the 'list' verb makes the distinction reasonably inferable.

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, when-not-to-use, or alternative guidance is given. The agent must infer that this is the read counterpart to section_create/section_delete purely from the tool name, with no stated prerequisites or context.

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

section_setNumberingC

Update page numbering for a section

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
sectionIndexYes
numberingStyleNo
pageNumberStartYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It indicates a mutation but omits side effects, required permissions, reversibility, and how existing numbering is affected.

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?

A single front-loaded sentence with no wasted words. It is structurally concise, though perhaps too terse for a 4-parameter mutation tool, but the sentence itself 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?

No annotations, no output schema, low schema coverage, and a mutation operation: the one-sentence description is not nearly complete enough for correct invocation. It leaves usage, behavior, and parameter meanings to be inferred.

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 only 25% (document_id alone is documented). The description does not name or explain sectionIndex, numberingStyle, or pageNumberStart, so it fails to compensate for the undocumented parameters.

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?

States a specific verb ('Update') and resource ('page numbering for a section'), making the purpose identifiable. It does not explicitly differentiate from sibling tools like section_delete or section_list, but the domain-specific resource is clear.

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?

Provides no when-to-use guidance, prerequisites, or alternatives. The agent must infer that this applies when changing page numbering for an existing section, with no explicit conditions or sibling routing.

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

shape_createC

Create a geometric shape (rectangle, ellipse, polygon, line)

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYes
boundsYes
fillColorNo
pageIndexYes
layerIndexNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
strokeColorNo
strokeWeightNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, yet it discloses nothing beyond the basic action. It does not state the coordinate space for bounds, how pageIndex/layerIndex default, whether the shape is placed on the current layer, what permissions are needed, or what happens on failure for a mutation tool.

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

Conciseness4/5

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

It is a single front-loaded sentence with no redundant phrasing or filler. The terseness is efficient, though it is arguably under-specified rather than tightly scoped.

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 no annotations, no output schema, a nested bounds object, and 8 mostly undocumented parameters, a one-line description is inadequate. An agent lacks the coordinate conventions, defaults, and placement behavior needed to call this correctly.

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

Parameters2/5

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

Schema description coverage is only 13% (essentially just document_id), leaving 7 of 8 parameters undocumented. The description only echoes the type enum values and adds no meaning for bounds, pageIndex, layerIndex, fillColor, strokeColor, or strokeWeight, so it fails to compensate for the schema gap.

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 ('Create a geometric shape') and enumerates the four supported shape types, which matches the type enum. However, it offers no differentiation from the closely related siblings shape_rectangle_create, shape_ellipse_create, shape_polygon_create, and shape_line_create, so an agent cannot tell from the description alone when to prefer this generic tool over the specialized ones.

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 guidance, no prerequisites, and no mention of alternatives. The presence of four type-specific sibling creation tools makes this omission significant, since the description gives no cue about how this generic tool relates to them.

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

shape_deleteC

Delete a shape from a page

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIndexYes
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Delete' signals a destructive mutation, but it says nothing about whether the deletion can be undone, whether it applies to grouped/anchored objects, what happens on an invalid index, or whether any confirmation is required. For a destructive tool with zero annotation coverage this is a significant gap.

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?

A single short, front-loaded sentence with no filler. It is efficient, though the brevity is partly the source of the missing detail rather than a virtue in itself.

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 3-parameter destructive tool with no annotations, no output schema, and low schema coverage, the description omits index semantics, undo/reversibility, and error behavior. An agent can guess the call shape but not the consequences.

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?

Only 33% of parameters have schema descriptions (document_id only). The description mentions 'from a page' but never explains that pageIndex and itemIndex are 0-based positional references, which is the key ambiguity an agent faces when choosing indices. It does not compensate for the coverage gap.

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 gives a specific verb (delete) and resource (shape) scoped to a page, which clearly separates it from siblings like shape_create, shape_list, and shape_modify. It does not explicitly name those siblings, but the verb+resource pair is unambiguous on its own.

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 shape_modify or undo/redo, no mention of prerequisites, and no note that the operation is likely irreversible or recoverable via undo. The agent must infer all of this from the name alone.

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

shape_ellipse_createC

Create an ellipse or circle on a page

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
widthYes
heightYes
fillColorNo
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
strokeColorNo
strokeWeightNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It says nothing about the coordinate system, which page/layer the shape lands on, default fill/stroke behavior when fillColor or strokeColor are omitted, or whether the operation is reversible. For a creation/mutation tool with zero annotation coverage this is a significant gap.

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?

A single front-loaded sentence with zero waste, but it is arguably over-terse for a 9-parameter creation tool, so it does not fully earn top marks.

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 9 parameters, 5 required, 11% schema coverage, no annotations, and no output schema, the description is far too thin. An agent cannot know coordinate conventions, defaults, or target-document resolution beyond the one schema-documented 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 only 11% (only document_id is documented), so the description must compensate and does not. It never explains x/y as an anchor or bounding-box origin, nor the fillColor/strokeColor/strokeWeight formats; the ellipse/circle wording only loosely hints that a circle is width == height.

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?

States a specific verb ('Create') and resource ('ellipse or circle on a page'), which implicitly distinguishes it from siblings like shape_rectangle_create and shape_polygon_create by shape type. It does not explicitly name alternatives, but the shape qualifier is enough for an agent to distinguish it.

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?

Provides no when-to-use guidance, no conditions selecting it over shape_rectangle_create/shape_polygon_create/shape_create, and no prerequisites. Usage is only implied by the tool name.

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

shape_line_createC

Create a graphic line on a page

ParametersJSON Schema
NameRequiredDescriptionDefault
x1Yes
x2Yes
y1Yes
y2Yes
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
strokeColorNo
strokeWeightNo

TDQS

C2.5/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden but only says it creates a line. It omits what happens on success/failure, whether a document must be open, what the coordinate space is, and whether the new line is selected or returned.

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?

A single front-loaded sentence with no waste, but it is terse to the point of under-specification rather than genuinely concise.

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 an 8-parameter, 5-required mutation tool with no annotations, no output schema, and 13% schema coverage, one seven-word sentence is wholly inadequate to call it correctly.

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 coverage is only 13% — just document_id is described. The description does not compensate at all, leaving x1/y1/x2/y2, pageIndex, strokeColor, and strokeWeight entirely undocumented in both schema and prose.

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?

States a specific verb+resource: creating a graphic line on a page. This cleanly distinguishes it from shape_rectangle_create, shape_ellipse_create, and shape_polygon_create, though it never names those siblings explicitly.

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

Usage Guidelines2/5

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

No guidance on when to use this versus the other shape_* creators or shape_create, and no prerequisites (e.g. an open document, a valid page). Usage is only implied by the tool name.

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

shape_listC

List all shapes on a page

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden but discloses almost nothing. It does not state that this is read-only, whether locked/hidden shapes are included, ordering, or any pagination or size limits. Only the implicit 'List' verb hints at safety.

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?

A single front-loaded sentence with no filler. It is efficient, though arguably under-specified rather than truly concise, since it omits everything but the core action.

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?

No output schema, no annotations, and one of two parameters undocumented. For a list tool whose result shape and scope are unknown to the agent, the description leaves significant gaps that structured fields do not fill.

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 coverage is 50%: document_id is well documented in the schema, but pageIndex has no description in either place. The description's 'on a page' loosely gestures at pageIndex but adds no meaning about indexing, defaults, or valid values beyond the schema's minimum: 0.

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?

States a clear verb+resource+scope: 'List all shapes on a page'. This distinguishes it from creation siblings like shape_create and shape_rectangle_create. It does not, however, differentiate itself from other list tools (image_list, table_list, layer_list) beyond the resource noun.

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 or when-not-to-use guidance. There is no mention of alternatives (e.g. image_list, table_list) or the conditions under which an agent should reach for shape_list. Usage is only implied by the word 'List'.

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

shape_modifyC

Modify properties of an existing shape

ParametersJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
widthNo
heightNo
fillColorNo
itemIndexYes
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
strokeColorNo
cornerRadiusNo
strokeWeightNo

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden but only implies mutation. It does not disclose what gets changed, whether unspecified properties are preserved, required permissions, or any return/confirmation behavior. Only the bare fact of mutation is conveyed.

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?

A single front-loaded sentence with zero waste, but it is under-specified rather than concise in a useful way, carrying no structure for the agent to work with.

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 11 parameters, no annotations, no output schema, and almost no schema descriptions, the definition is far too thin. Missing are how the target is located (pageIndex/itemIndex), which properties are mutable, and any confirmation of effect.

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

Parameters1/5

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

Schema coverage is 9% (only document_id is documented) across 11 parameters, so the description must compensate and adds nothing. It never mentions x/y/width/height, fill/stroke color, cornerRadius, or how pageIndex/itemIndex identify the target shape, leaving the bulk of the interface 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?

States a specific verb ('Modify') and resource ('properties of an existing shape'), and the word 'existing' distinguishes it from creation tools like shape_create. However, it does not differentiate itself from the many sibling shape/transform tools (shape_delete, transform_scale, transform_rotate) that also act on existing shapes.

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, no prerequisites, and no mention of alternatives such as transform_scale/transform_rotate for geometry changes or color_apply for fills. The agent is left to infer context entirely.

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

shape_polygon_createC

Create a polygon on a page

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
widthYes
heightYes
fillColorNo
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
strokeColorNo
strokeWeightNo
numberOfSidesNo

TDQS

C2.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It indicates creation but does not mention permissions, document state requirements, undo behavior, or what happens to the page. This is a significant gap for a mutation tool with zero annotation coverage.

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 single sentence is concise but under-specified for a tool with ten parameters, rather than efficiently front-loaded. It wastes no words, yet omits essential structural information an agent needs before invoking it.

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 ten parameters, no annotations, no output schema, and a mutation of a page, the description is far too sparse to be complete. It omits parameter semantics, usage context, and behavioral traits, leaving the agent to infer almost everything from the name.

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 only 10%, and the description adds no parameter meaning beyond the vague phrase 'on a page'. Ten parameters including required pageIndex, x, y, width, height and optional fill/stroke/numberOfSides attributes are left entirely undocumented in the description. The description does not compensate for the low schema coverage.

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?

States a specific verb (Create) and resource (polygon) with a scope (on a page), so an agent can identify the basic action. It does not explicitly differentiate from sibling tools like shape_create or shape_rectangle_create, leaving the distinction to the tool name alone.

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?

Provides no guidance on when to use this tool instead of alternatives, nor any prerequisites such as needing an open document or a specific page. The description only states what the tool does, not when it is appropriate.

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

shape_rectangle_createC

Create a rectangle on a page

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
widthYes
heightYes
fillColorNo
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
strokeColorNo
cornerRadiusNo
strokeWeightNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It communicates a write operation via 'Create' but says nothing about permissions, side effects, undoability, or failure behavior. For a mutation tool with zero annotation coverage, this is a substantial gap.

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?

One short sentence, front-loaded, with no wasted words. However, it is arguably too minimal for a tool with 10 parameters, bordering on under-specification rather than helpful conciseness.

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?

No output schema, no annotations, 10 parameters with 10% schema coverage, and a single-sentence description. Coordinate system, units, color format, page indexing, and document selection are all unspecified, making the definition inadequate for correct invocation.

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

Parameters1/5

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

Schema description coverage is 10% (only document_id is described), and the description provides no parameter guidance. With 10 parameters including required x, y, width, height, and pageIndex, nearly all parameter semantics are left 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?

States a specific verb and resource with scope ('Create a rectangle on a page'), distinguishing it from shape_ellipse_create and shape_polygon_create by resource. It does not explain how it differs from the generic shape_create, so sibling differentiation is incomplete.

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, no alternatives named, and no prerequisites such as requiring an open document. The agent cannot tell from the description whether to prefer this over shape_create or shape_ellipse_create.

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

style_createCharacterC

Create a new character style

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
colorNo
basedOnNo
fontStyleNo
pointSizeNo
fontFamilyNo
propertiesNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a mutation but says nothing about persistence, whether the new style is applied to any selection, what happens on name collision, or how the target document is resolved.

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?

A single front-loaded sentence with no waste, but it is under-specified rather than truly concise – the brevity comes at the cost of any 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?

For an 8-parameter mutation tool with no annotations, no output schema, 13% schema coverage, and a nested properties object, a bare five-word description is far too thin. An agent has almost nothing to guide correct invocation.

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

Parameters1/5

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

Schema description coverage is only 13% – just document_id is documented, and that documentation lives in the schema, not the description. Seven parameters (name, color, basedOn, fontStyle, pointSize, fontFamily, properties) are undocumented in both places, and the description adds no parameter meaning at all.

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?

States a specific verb (Create) and resource (character style), which distinguishes it from style_createParagraph. However, it does not explicitly name the sibling it differs from, so the differentiation is implicit rather than stated.

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 indication of when to use this tool versus style_createParagraph, style_duplicate, or style_listCharacter, nor any prerequisites. Usage is left entirely to inference from the name.

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

style_createParagraphC

Create a new paragraph style

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
colorNo
basedOnNo
leadingNo
fontStyleNo
pointSizeNo
fontFamilyNo
propertiesNo
spaceAfterNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
spaceBeforeNo

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden but discloses nothing beyond 'create'. It does not say whether it requires an open document, how name collisions are handled, whether the style is auto-applied, or that it is a mutating operation. For a mutation tool with zero annotation coverage this is a significant gap.

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?

A single front-loaded sentence with no padding, but it is under-specified rather than genuinely concise, earning neutrality.

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 complex 11-parameter mutation tool with no annotations and no output schema, a one-line description is far too thin. The agent lacks the behavioral and parameter context needed to call it correctly.

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

Parameters2/5

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

Schema description coverage is only 9% (just document_id), and there are 11 parameters, yet the description names none of them. Fields like basedOn, leading, pointSize, and spaceBefore/spaceAfter are undocumented anywhere, so the description fails to compensate for the schema gap.

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?

States a specific verb + resource ('Create a new paragraph style') that is unambiguous, and the 'paragraph' qualifier implicitly distinguishes it from style_createCharacter. However, it does not explicitly contrast with that sibling or with style_duplicate, leaving the differentiation to be inferred from the name alone.

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

Usage Guidelines2/5

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

The description provides no when-to-use context, no prerequisites (e.g., an open document), and no mention of alternatives like style_duplicate or style_listParagraph. The agent must infer usage entirely from the name.

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

style_deleteC

Delete a style

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
typeYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. It does not say whether deletion is permanent or undoable, whether a style currently applied to content can be removed, whether built-in/default styles are protected, or what happens to text using the deleted style.

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?

Three words are not concise so much as under-specified; the description fits on one line and is front-loaded, but it omits everything an agent would need, so brevity here is a deficit rather than an 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?

For a destructive, 3-parameter tool with two required arguments, no annotations, and no output schema, the description is far too thin. It should at minimum state the scope of deletion across the three style types and any guard conditions (style in use, default styles), none of which is covered anywhere else.

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

Parameters2/5

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

Schema description coverage is only 33%: 'name' and 'type' carry no descriptions at all, and only 'document_id' is documented. The description supplies no compensating meaning for the undocumented parameters (e.g., whether 'name' is case-sensitive, whether the style must exist, or what the enum values imply for scope of deletion).

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?

"Delete a style" names a verb and a resource, so the basic purpose lands. But it is close to a restatement of the tool name and does not distinguish this from sibling delete tools (master_delete, layer_delete, section_delete, color_swatch_delete) or indicate that it spans paragraph, character, and object style types via the required 'type' enum.

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 guidance, no mention of prerequisites, and no routing to alternatives such as style_duplicate or the style_list* tools for inspecting styles first. The agent must infer entirely from the name and schema.

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

style_duplicateD

Duplicate a style

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
typeYes
newNameYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

D1.8/5.0
Behavior1/5

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

With no annotations, the description carries the full behavioral burden and provides none of it: nothing about whether this is a write operation, whether the source style is preserved, what the duplicate's resulting name is, or permission requirements. The single phrase adds no behavioral information beyond the name.

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?

Brevity here is under-specification rather than conciseness: a four-word phrase with three required inputs leaves the agent guessing. There is no structure, front-loading, or useful content to compress.

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?

A mutation tool with no annotations, no output schema, and three undocumented required parameters needs substantial description, but the definition offers nothing about side effects, return value, or error cases.

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 only 25% (only document_id is documented), and the description supplies no parameter meaning at all. Three required parameters (name, type, newName) are left entirely to the schema with no explanation of their roles in the duplication.

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?

"Duplicate a style" gives a verb and resource, so an agent knows the operation, but it is essentially a restatement of the tool name and adds nothing about which style types (paragraph/character/object) apply or how it differs from siblings like master_duplicate or page_duplicate.

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, no prerequisites, and no mention of alternatives such as style_createParagraph/style_createCharacter for authoring styles from scratch. The agent must infer all routing 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.

style_listCharacterC

List all character styles in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It implies a read but never states that the tool is non-mutating, whether results are paginated or truncated, or what a returned style entry contains.

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?

A single short sentence with zero waste and the scope (active document) front-loaded. It is efficient, though the brevity is partly a consequence of omitted information rather than disciplined editing.

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 trivial no-argument read with full schema coverage, this is minimally adequate. With no output schema, however, the description could have said what the listing returns (names, IDs, counts), which an agent would need to chain into style_createCharacter or text_applyCharStyle.

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 100% and the single document_id parameter is fully documented in the schema, including the name-or-index semantics and front-document default. The description adds no parameter detail, so the baseline 3 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?

States a specific verb (list) and resource (character styles) scoped to the active document, which cleanly separates it from style_listParagraph, style_listObject and the style_create/delete siblings. It does not explicitly name those siblings, so it falls short of the top band.

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 choose this over style_listParagraph or style_listObject, and no mention that document_id can point at another open document via document_listOpen. Usage is only implied by the verb.

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

style_listObjectC

List all object styles in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not state that the operation is read-only, whether it returns styles from all style groups or only the object style group, whether unused styles are included, or how results are ordered/returned.

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?

A single front-loaded sentence with no wasted clauses. It is efficient, though its brevity borders on under-specification rather than achieved conciseness.

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 zero-required-parameter read tool with no output schema, a single sentence is nearly enough, but the omission of read-only status and the scope ambiguity ('active document' vs. the document_id parameter that can target any open document) leave small gaps an agent would have to resolve by inference.

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 100% – the single document_id parameter is fully documented in the schema (name or 0-based index, defaults to front document). The description only says 'active document', which adds nothing and slightly under-describes the parameter's ability to target any open document. Baseline 3 applies when the schema does the heavy lifting.

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?

States a specific verb (List) and resource (object styles) scoped to a document, which distinguishes it from the sibling list tools style_listParagraph, style_listCharacter, tableStyle_list and cellStyle_list. It does not name those siblings explicitly, but the resource noun is specific enough that an agent can route correctly without opening schemas.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no mention of when a different style-listing or style-creation tool is the right choice. The only implicit context is the word 'List', which tells the agent nothing about preconditions or alternatives.

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

style_listParagraphB

List all paragraph styles in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It implies a read operation via 'List', but never confirms read-only behavior, scoping to the active document only (the param allows other documents), or the shape of the result. For a no-annotation tool this is a thin disclosure.

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?

One sentence, front-loaded with the action and resource, with zero filler. Nothing could be trimmed and nothing is buried.

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 enumeration tool with one well-documented optional param and no output schema, the description covers the core purpose. However, with no output schema present it does not indicate what is returned (names, IDs, styles), and it omits that the document_id can target non-active documents, leaving minor gaps.

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

Parameters3/5

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

The single document_id parameter has 100% schema description coverage, including the name-or-index format, the default to front document, and a pointer to document_listOpen. The description adds no parameter detail beyond what the schema already provides, so the baseline 3 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?

States a specific verb (List) and resource (paragraph styles) scoped to the active document. It clearly distinguishes itself from style_listCharacter and style_listObject by naming the style type, though it never explicitly names those siblings.

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?

Usage is only implied by the clear verb+resource: an agent can infer you call this to enumerate paragraph styles. There is no explicit when-to-use, no prerequisite, and no mention of how this relates to text_applyParagraphStyle or the other style_list* siblings.

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

table_addColumnC

Add a column to a table at a specific index

ParametersJSON Schema
NameRequiredDescriptionDefault
atIndexNo
pageIndexYes
tableIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden for a mutation tool. It doesn't state required permissions, whether the new column gets a default width/format, how it interacts with existing cell content, or whether the operation is undoable — all relevant for a destructive structural edit.

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?

One short front-loaded sentence with no filler, but it is under-specified rather than concise — the brevity costs clarity on parameters and behavior.

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?

A 4-parameter structural mutation with no annotations, no output schema, and mostly undocumented parameters. The description does not supply the missing context an agent needs to invoke it correctly.

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 coverage is only 25% (just document_id is described). The description's 'at a specific index' loosely maps to atIndex, but leaves pageIndex, tableIndex, their relationship, and the optionality/default of atIndex entirely unexplained in both schema and 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?

States a specific verb+resource ('Add a column to a table') with the scoping notion of index. It does not distinguish itself from adjacent siblings like table_addRow or table_create, but the core action 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 indication of when to use this versus table_addRow, table_create, or table_setRowColumnSize, nor any prerequisite such as a table/document needing to be open. Only implied usage via the tool name.

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

table_addRowC

Add a row to a table at a specific index

ParametersJSON Schema
NameRequiredDescriptionDefault
atIndexNo
pageIndexYes
tableIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It says nothing about whether atIndex omitted appends to the end, what document state is required, whether the mutation is reversible, or what is returned. For a mutation tool with zero annotation coverage, this is a significant gap.

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?

A single front-loaded sentence with no waste, but the brevity reflects under-specification rather than genuine conciseness. It earns its place but is too thin for a four-parameter tool.

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?

A mutation tool with no annotations, no output schema, and low parameter coverage needs substantially more than one sentence. Critical details about the index semantics and document targeting are 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 coverage is only 25% (only document_id is described). The phrase 'at a specific index' gestures at atIndex but does not clarify its semantics (insert-before position, default behavior when omitted, or relationship to the required pageIndex/tableIndex). pageIndex and tableIndex remain undocumented in both schema and description, so the description fails to compensate for the coverage gap.

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 (add), resource (a row), and target (a table at a specific index). This distinguishes it from table_addColumn, table_deleteRow, and table_mergeCells, though it does not explicitly name those 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 when-to-use guidance, no prerequisites, and no alternatives are mentioned. The agent gets no help deciding when this tool is appropriate versus table_setCell or table_create.

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

table_createC

Create a table on a page at specified bounds with row/column count

ParametersJSON Schema
NameRequiredDescriptionDefault
rowsNo
boundsYes
columnsNo
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing beyond the mutation implied by 'Create'. It does not say whether the operation requires an open/writable document, whether it is undoable, what happens on overlapping bounds, or what is returned. For a mutation tool with zero annotation coverage this is a significant gap.

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?

A single front-loaded sentence with no filler, stating the action, target, and key inputs immediately. It is arguably over-terse for a 5-parameter mutation tool, but nothing in it is wasted.

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 a nested bounds object, 5 parameters at 20% coverage, no annotations, and no output schema, the description is too thin. An agent could guess the call but would lack coordinate conventions, requiredness of rows/columns, and any safety/permission context needed to invoke it confidently.

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

Parameters2/5

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

Schema description coverage is only 20% (only document_id is documented in the schema). The description gestures at bounds and row/column count but adds no semantics: coordinate origin/units for the nested bounds object, the fact that rows and columns default to 3 and are optional, or what pageIndex references (0-based). The parameter burden is largely unmet.

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 gives a specific verb+resource (create a table), the containing resource (a page), and the placement/geometry inputs (specified bounds, row/column count). This clearly separates it from sibling mutators like table_addRow, table_addColumn, and table_setCell. It stops short of naming which sibling to use for post-creation edits, so it lands at 4 rather than 5.

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 and no prerequisites stated (e.g., a document must be open, whether the page must already exist). An agent must infer that this is the entry point for table creation rather than table_list or table_addRow. No alternatives are mentioned.

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

table_deleteColumnC

Delete a column from a table

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIndexYes
tableIndexYes
columnIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. 'Delete' implies a destructive, likely irreversible mutation, but the description says nothing about whether adjacent columns shift left, whether content is lost permanently, permission requirements, or the default document target. It only restates the destructive verb.

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?

A single front-loaded sentence with no waste, which is structurally clean. But its brevity is under-specification rather than true conciseness, since required context is simply absent.

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?

A destructive mutation tool with no annotations, no output schema, and three undocumented required parameters needs substantially more disclosure about indices, defaults, and side effects. As written, an agent cannot call it confidently without probing the schema.

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

Parameters2/5

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

Schema description coverage is only 25% (only document_id is documented). The three required parameters — pageIndex, tableIndex, columnIndex — have no descriptions in the schema, and the description adds no meaning about indexing base, ordering, or default document behavior, so it fails to compensate for the coverage gap.

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?

States a specific verb+resource ('Delete a column from a table'), which is unambiguous on its own. However, it does nothing to distinguish itself from the very similar sibling table_deleteRow, and the distinction is only inferable from the tool name.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no reference to alternatives such as table_deleteRow or table_deleteColumn-style operations. The agent gets no indication of ordering constraints (e.g., must the table have more than one column).

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

table_deleteRowC

Delete a row from a table

ParametersJSON Schema
NameRequiredDescriptionDefault
rowIndexYes
pageIndexYes
tableIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Delete' implies a destructive mutation, but the description says nothing about reversibility, permissions, document state requirements, or side effects.

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

Conciseness3/5

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

The single sentence is concise and front-loaded with no wasted words. However, it is under-specified for a destructive, four-parameter operation rather than appropriately sized.

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 no annotations, no output schema, and low parameter coverage, the description is not complete enough for reliable invocation. It omits preconditions, parameter meaning, and mutation behavior for a destructive table operation.

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?

The description is silent on all four parameters. With schema description coverage at only 25%, it fails to compensate for the undocumented pageIndex, tableIndex, and rowIndex semantics.

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?

States a concrete verb and resource: deleting a row from a table. It is clear what the tool does, but it does not distinguish itself from sibling table operations such as table_deleteColumn or table_splitCell.

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?

Provides no when-to-use guidance, prerequisites, or alternatives. The agent must infer that this is the correct tool simply from the name and one-line description.

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

table_getInfoC

Get detailed info about a table (rows, columns, cell contents)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIndexYes
tableIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Get' implies a read, but it says nothing about whether this is read-only, what the returned detail looks like, or any limits on large tables — leaving the behavioral profile largely inferred.

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?

A single tight sentence with the verb and scope front-loaded and zero filler. It is efficient, though its brevity veers into under-specification rather than pure conciseness.

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 no annotations and no output schema, the description needed to explain the return shape and clarify the two undocumented required parameters. It does neither, so an agent lacks enough context to call it confidently or interpret the result.

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

Parameters2/5

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

Schema description coverage is only 33% (only document_id is documented). pageIndex and tableIndex carry no descriptions in either schema or description, and the phrase 'rows, columns, cell contents' describes output, not the required parameters, so the description does not compensate for the gap.

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?

States a specific verb (Get) and resource (table) and clarifies the scope of 'info' as rows, columns, and cell contents. However, it does not distinguish itself from the sibling table_list, which an agent could reasonably confuse for inspection purposes.

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 explicit when-to-use guidance, no prerequisites, and no named alternative. The read intent is only implied by the verb 'Get'; nothing tells the agent when to reach for table_getInfo versus table_list.

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

table_listB

List all tables on a page or in the document

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIndexNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. "List" correctly implies a safe read operation and discloses the page/document scope, but it says nothing about return shape, ordering, or the behavior when pageIndex is omitted.

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?

A single short sentence that is front-loaded with the verb and resource and wastes no words. It is efficient, though arguably too terse to be fully useful.

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 two-parameter read-only tool with no output schema and no annotations, the description is minimally adequate. It omits the default scope behavior and any hint of the returned table structure, which an agent would need.

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 50%: document_id is documented in the schema while pageIndex is not. The description's "on a page or in the document" loosely maps to those two parameters but adds no format or default details, so it only partially compensates.

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?

States a specific verb and resource ("List all tables") plus a scope ("on a page or in the document"). It is clearly distinguished from single-table siblings like table_getInfo, though it does not name them explicitly.

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 "on a page or in the document" implies the two usage contexts, but there is no explicit when-to-use guidance, no mention of when to prefer table_getInfo, and no statement of what happens when no scope is given.

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

table_mergeCellsC

Merge a range of cells into one

ParametersJSON Schema
NameRequiredDescriptionDefault
endRowYes
startRowYes
endColumnYes
pageIndexYes
tableIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
startColumnYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a mutating operation but does not describe what happens to cell content, whether the action is reversible, what permissions are required, or what the return value is.

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 appropriately concise for a short tool description, though the sparseness is more a completeness issue than a conciseness one.

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 7 parameters (6 required), no annotations, and no output schema, the description is far too sparse. It does not explain required parameters, document context, or mutation behavior, leaving the agent with almost no operational guidance.

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

Parameters2/5

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

Schema description coverage is only 14% (only document_id is described), and the description adds no parameter names or formats. The phrase 'range of cells' vaguely hints at start/end coordinates but does not clarify the roles of pageIndex, tableIndex, startRow, startColumn, endRow, or endColumn.

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 gives a specific verb ('Merge') and resource ('a range of cells into one'), making the operation clear. However, it does not distinguish this tool from its likely sibling table_splitCell, so an agent must infer the difference from the tool name alone.

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 only states what the tool does; it provides no guidance on when to use it versus alternatives, no prerequisites, and no exclusions. There is no mention of table_splitCell or any condition that would select this tool.

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

table_setCellC

Set content of a specific cell

ParametersJSON Schema
NameRequiredDescriptionDefault
rowYes
columnYes
contentYes
pageIndexYes
tableIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Set' implies a write/overwrite operation, but the description does not state whether existing content is replaced, whether formatting is preserved, what permissions are required, or what the response looks like.

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 very short and front-loaded, with no wasted words. However, its extreme brevity may under-specify a multi-parameter mutation tool.

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 six parameters, no annotations, no output schema, and low schema description coverage, the definition is missing key behavioral and parameter context needed for reliable invocation.

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

Parameters2/5

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

Schema description coverage is only 17%; only document_id has a description. The description does not explain the row, column, pageIndex, tableIndex, or content parameters, so it fails to compensate for the sparse schema documentation.

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 gives a clear verb+resource combination: setting the content of a specific cell. It implicitly distinguishes itself from formatting siblings like table_setCellFill or table_setCellAlignment by specifying 'content', but it does not explicitly name alternatives or scope details.

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 related tools such as table_setCellFill or text_setContent. No prerequisites, contexts, or exclusions are provided.

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

table_setCellAlignmentC

Set cell text alignment

ParametersJSON Schema
NameRequiredDescriptionDefault
rowIndexYes
pageIndexYes
tableIndexYes
columnIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
verticalAlignmentNo
horizontalAlignmentNo

TDQS

C2.3/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden, and it discloses nothing: not that this is a mutation, whether changes are undoable, whether at least one of verticalAlignment/horizontalAlignment must be supplied, or how cell addresses are resolved. 'Set' implies a write but nothing about side effects is stated.

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?

One short, front-loaded sentence with no waste, but its brevity comes from omission rather than discipline. It is concise yet leaves the agent without enough to act confidently on a 7-parameter 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?

With 7 parameters, 4 required, low schema coverage, no annotations, and no output schema, the description should carry substantial weight — instead it is a four-word phrase. Critical details (index conventions, whether horizontal/vertical alignment are mutually exclusive or optional with defaults) are entirely absent.

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

Parameters2/5

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

Schema description coverage is only 14% — only document_id is documented, while pageIndex, tableIndex, rowIndex, columnIndex, verticalAlignment, and horizontalAlignment are bare. The description adds nothing about index base, cell addressing, or what alignment values mean or whether they are optional; the phrase 'text alignment' is the only weak hint.

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?

States a specific verb and resource ('Set cell text alignment') and is clearly distinguishable from sibling tools such as table_setCellFill, table_setCellStroke, and table_setCellInset. It is terse but not tautological, though it never names a sibling or scoping condition.

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 indication of when to use this tool versus table_setCell or the other table_setCell* variants, nor any prerequisite or context for calling it. The agent must infer usage entirely from the name.

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

table_setCellFillC

Set a cell's fill color and tint

ParametersJSON Schema
NameRequiredDescriptionDefault
rowIndexYes
fillColorYes
pageIndexYes
tableIndexYes
columnIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
tintPercentNo

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. 'Set' implies mutation that overwrites whatever fill a cell already had, but it doesn't disclose reversibility, undo behavior, required permissions, or whether the value replaces or merges with an existing tint. A six-word description leaves all of this unstated.

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 single sentence is front-loaded and wastes no words, which is the right shape. However, at six words for a seven-parameter mutation tool it is under-specified rather than efficient, so it only meets the middle bar.

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 seven-parameter, five-required mutation tool with no annotations, no output schema, and near-zero schema documentation, the description should at minimum explain the index addressing scheme and the expected color format. Those omissions leave an agent unable to call it correctly without guessing.

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 coverage is only 14% – just document_id is documented. The five required index parameters (pageIndex, tableIndex, rowIndex, columnIndex) have no descriptions anywhere, and the description says nothing about the coordinate scheme. The critical fillColor format (hex, RGB, or swatch reference) is also unspecified, though the description's mention of 'tint' loosely maps to tintPercent.

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?

States a specific verb ('Set') and resource ('a cell's fill color and tint'), which distinguishes it from neighboring cell operations like table_setCellStroke, table_setCellInset, and table_setCellAlignment. It doesn't name siblings explicitly, but the fill-color focus 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?

No when-to-use guidance, no preconditions (e.g. a document must be open, a table/cell must exist), and no alternatives offered such as color_apply or cellStyle_create for applying fills at scale. The agent must infer everything from the name.

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

table_setCellInsetC

Set cell inset spacing

ParametersJSON Schema
NameRequiredDescriptionDefault
topYes
leftYes
rightYes
bottomYes
rowIndexYes
pageIndexYes
tableIndexYes
columnIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.3/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full behavioral-disclosure burden, and it supplies almost none. 'Set' implies mutation, but the description does not state whether this requires an open document, what units the top/bottom/left/right values use, whether changes are reversible, or what side effects occur. This is essentially a restatement of the tool name.

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 four-word sentence is front-loaded and wastes nothing in wording. However, it is under-specified rather than appropriately sized for a nine-parameter mutation tool, leaving no structured context about prerequisites or parameter meaning.

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 nine parameters, 11% schema coverage, no annotations, and no output schema, the description is far too thin to be complete. An agent cannot confidently call this tool correctly without inferring units, indexing behavior, document targeting, and whether the operation is safe or reversible.

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

Parameters2/5

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

Schema description coverage is only 11%, with nine parameters and eight required, so the description must compensate and does not. 'Cell inset spacing' loosely maps to the four numeric inset parameters, but it says nothing about units, index semantics, the document_id default, or how rowIndex/columnIndex/tableIndex/pageIndex locate the target cell.

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: 'Set cell inset spacing.' It clearly identifies a table-cell mutation and distinguishes itself from unrelated siblings such as text_setInsetSpacing by naming 'cell.' However, it does not explicitly differentiate itself from nearby table cell tools such as table_setCellFill or table_setCellAlignment.

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. It does not mention that text_setInsetSpacing is for text frames, that table_setRowColumnSize is for row/column dimensions, or that a document and table must already be open. The agent is left to infer all usage conditions.

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

table_setCellStrokeC

Set cell edge stroke properties

ParametersJSON Schema
NameRequiredDescriptionDefault
edgeYes
rowIndexYes
pageIndexYes
strokeTypeNo
tableIndexYes
columnIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
strokeColorNo
strokeWeightYes

TDQS

C2.3/5.0
Behavior2/5

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

With no annotations, the description carries the full disclosure burden, yet it only implies mutation via "Set". It does not say whether strokeWeight=0 removes a stroke, whether strokeType/strokeColor are optional, whether the change is undoable, or what permissions/state are required. This leaves the agent guessing about 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 five-word sentence is front-loaded and wastes nothing, but at this size it is under-specified rather than concise. Brevity here costs information an agent needs for a 9-parameter mutation.

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 9-parameter (6 required) mutation tool with no annotations, no output schema, and near-zero schema coverage, the description should carry default values, optionality, and behavioral effects. It provides none of these, leaving the definition substantially incomplete.

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

Parameters2/5

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

Schema description coverage is only 11% (just document_id), so the description must compensate for eight undocumented parameters — it does not. "edge" and "stroke" loosely hint at the edge enum and stroke fields, but there is no explanation of strokeWeight units, strokeType values, or that strokeColor is optional.

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 states a verb ("Set") and a resource ("cell edge stroke properties"), and the stroke-setting scope distinguishes it from sibling mutators such as table_setCellFill or table_setCellAlignment. However, "properties" is unspecified — it does not say which of strokeWeight, strokeColor, or strokeType are in play — so it reads close to a restatement of the tool name rather than a clarifying statement.

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, no naming of sibling tools like table_setCellFill, and no stated prerequisites (e.g. table must exist, cells must be addressable). The agent must infer all routing from the name alone.

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

table_setHeaderFooterC

Set header and footer row counts

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIndexYes
footerRowsNo
headerRowsNo
tableIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
repeatHeaderNo

TDQS

C2.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It says nothing about whether this mutates the document, what permissions are needed, whether existing header/footer content is destroyed when counts are reduced, or what repeatHeader does — a serious gap for a mutation tool with zero annotation coverage.

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 single front-loaded sentence is tight, but for a six-parameter mutation tool it is under-specified rather than concise. The brevity here signals missing information, not efficient communication.

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 no annotations, no output schema, six parameters at 17% schema coverage, and no behavioral detail, the description is not complete enough to call this tool correctly. An agent must guess at parameter roles and side effects.

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

Parameters2/5

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

Schema description coverage is only 17% (just document_id), leaving pageIndex, tableIndex, headerRows, footerRows and repeatHeader undocumented in both schema and description. The phrase 'header and footer row counts' loosely maps to headerRows/footerRows but leaves indexing, required pageIndex/tableIndex, and repeatHeader entirely unexplained.

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?

States a specific verb ('Set') and resource ('header and footer row counts'), so the agent knows this configures table header/footer rows. It is clear on its own but does not differentiate itself from table-adjacent siblings like table_setRowColumnSize or table_create.

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, no prerequisites, and no mention of alternatives. Nothing tells the agent when this tool is appropriate versus other table-mutation tools such as table_setRowColumnSize or table_setCell.

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

table_setRowColumnSizeC

Set row height or column width

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeYes
typeYes
indexYes
unitsNopoints
pageIndexYes
tableIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It says 'set' but does not explain permissions, whether the change is reversible, what happens to existing cell content when dimensions change, or what the tool returns. For a mutation tool with zero annotation coverage, this is a significant gap.

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 efficient sentence with no wasted words and is front-loaded. However, for a seven-parameter mutation tool it is arguably under-specified rather than appropriately concise.

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 seven parameters, 14% schema coverage, no annotations, and no output schema, this description is completely inadequate. It omits units, indexing semantics, document targeting, and the distinction between row and column behavior, all of which the agent needs.

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 very low at 14%, with only document_id documented. The description adds no meaning for the other six parameters—type, index, size, units, pageIndex, and tableIndex—which are critical to invoking this tool correctly. It does not compensate for the schema gap at all.

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 gives a specific verb and resource: set row height or column width. It clearly distinguishes sizing from sibling table operations like table_addRow, table_addColumn, and table_setCell. However, it does not explicitly state the table context or how it differs from adjacent tools such as table_setHeaderFooter or table_setCellInset.

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, nor does it state prerequisites such as needing an existing table or an open document. It also omits any exclusions or edge cases, leaving the agent to infer usage entirely from the name and schema.

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

table_splitCellC

Split a merged cell

ParametersJSON Schema
NameRequiredDescriptionDefault
rowIndexYes
verticalNo
pageIndexYes
horizontalNo
tableIndexYes
columnIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not disclose whether the operation is destructive, what happens if the target cell is not merged, how vertical/horizontal flags interact, or what the result looks like.

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?

A single very short sentence is front-loaded and waste-free, but for a 7-parameter mutation tool this is under-specification rather than conciseness. The brevity leaves critical gaps that a useful definition would fill.

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 the complexity (7 params, mutation of table structure), no annotations, no output schema, and near-zero parameter documentation in the schema, the description is completely inadequate. It does not give an agent enough to call the tool correctly.

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 only 14% (only document_id is documented). Seven parameters exist, including the semantically important vertical and horizontal booleans, yet the description provides zero meaning for any of them. With low coverage the description must compensate and it does not.

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 names a specific verb (split) and resource (merged cell), so it is not vague. However it is nearly a restatement of the tool name, adds no scope about which table/cell is affected, and does not differentiate itself from the obvious sibling table_mergeCells.

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 versus alternatives such as table_mergeCells, nor any prerequisites or context. The agent is left to infer usage entirely from the name.

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

tableStyle_createC

Create a table style in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
basedOnNo
fillColorNo
spaceAfterNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
spaceBeforeNo
strokeColorNo
strokeWeightNo
alternatingFillsNonone
alternatingFillColorsNo

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden. It only states that creation happens in the active document, without disclosing return values, permissions, overwrite behavior, side effects, or whether the operation is reversible.

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?

A single clear, front-loaded sentence with no filler. It is well-structured, though arguably too terse given the tool's complexity.

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 10-parameter creation tool with no annotations, no output schema, and 10% schema description coverage, a one-sentence description is grossly insufficient. It omits parameter semantics, usage context, and behavioral details.

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 only 10%, yet the description mentions no parameters at all. Nine of ten parameters (fillColor, basedOn, alternatingFills, etc.) are completely undocumented in both the schema and the description, leaving the agent unable to use them meaningfully.

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?

States a specific verb ('Create') and resource ('table style'), and scopes it to the active document. However, it does not distinguish this tool from sibling creation tools like cellStyle_create or style_createParagraph, so it falls short of a 5.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives such as style_createParagraph or tableStyle_list. It also omits any prerequisites or conditions for use.

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

tableStyle_listB

List all table styles in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden, but this is a simple read-only enumeration whose behavior is largely self-evident from 'List all'. It does not disclose whether built-in styles or style groups are included, the return shape, or ordering. Adequate for a trivial read, thin for a no-annotation tool.

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

Conciseness5/5

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

One sentence, front-loaded with the action and resource, with zero filler. Nothing is padded or repeated.

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 single-parameter, no-output-schema listing tool this is close to sufficient, but the description says 'active document' while the schema permits targeting any open document, and it omits whether the result covers built-in styles or style groups.

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

Parameters3/5

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

Schema coverage is 100% and the single document_id parameter is fully documented in the schema, so the baseline is 3. The description adds no syntax or defaulting detail, and its phrase 'active document' does not acknowledge that the parameter can target a named or indexed document instead.

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?

Clear verb+resource: 'List all table styles'. The qualifier 'table styles' implicitly separates it from sibling listers like cellStyle_list, style_listParagraph, and style_listCharacter, so an agent can pick the right one. It stops short of explicitly naming a sibling or stating scope differences.

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 guidance, no prerequisite, and no pointer to alternatives (e.g., tableStyle_create for the write counterpart). Usage is only inferable from the name itself.

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

text_addFrameC

Add a text frame to a specified page with content

ParametersJSON Schema
NameRequiredDescriptionDefault
boundsYes
contentNo
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing about permissions, whether 'add' is a persistent mutation, what coordinate space/units 'bounds' uses, or what happens on failure. It is not misleading, just uninformative.

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?

A single front-loaded sentence with no wasted words. It is appropriately sized for a one-line statement, though its brevity contributes to the gaps noted elsewhere.

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 creation/mutation tool with no annotations, no output schema, and a required nested geometry parameter that is undocumented, the description is insufficient. An agent cannot confidently call it without inferring bounds semantics and document context.

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 coverage is only 25%, with document_id the sole documented parameter. The description loosely signals pageIndex ('specified page') and content, but the required nested 'bounds' object (top/left/bottom/right numbers) is entirely unexplained in units or coordinate reference.

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?

States a specific verb (add), resource (text frame), and location (a specified page with content). It is distinguishable from siblings like text_getTextFrames and text_setContent, but it never explicitly names or contrasts an alternative tool.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as text_setContent for existing frames or shape_create. No prerequisites (e.g., a document must be open) are stated.

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

text_applyCharStyleC

Apply a character style to a range of characters within a paragraph

ParametersJSON Schema
NameRequiredDescriptionDefault
endCharYes
startCharYes
styleNameYes
storyIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
paragraphIndexYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It says 'apply' but does not disclose whether an existing character style on the range is overwritten, whether an unknown styleName errors or is created, whether the document is saved, or what the response contains. Only the targeting scope is conveyed.

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?

A single front-loaded sentence with zero filler. It is concise and well-structured, though its brevity reflects under-specification rather than disciplined economy.

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 6-parameter mutation tool with 17% schema coverage, no annotations, and no output schema, the description leaves major gaps: style existence requirements, overwrite behavior, story/paragraph coordinate semantics, and error handling are all unaddressed.

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 17% – only document_id is documented. The phrase 'range of characters within a paragraph' loosely hints at startChar/endChar/paragraphIndex, but storyIndex, styleName validity, and the endChar/startChar offset conventions (0-based start, 1-based end minimum) are left entirely to the schema's bare types.

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 ('Apply a character style') plus the exact scope ('a range of characters within a paragraph'), which is enough to distinguish it from the sibling text_applyParagraphStyle. It stops short of naming that sibling explicitly, so it earns a 4 rather than a 5.

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 guidance, no prerequisites (e.g. that the style must already exist via style_listCharacter/style_createCharacter), and no mention of the alternative text_applyParagraphStyle or text_applyFont. The agent must infer routing entirely from the name.

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

text_applyFontC

Apply font family, style, and/or size to a range of characters within a paragraph

ParametersJSON Schema
NameRequiredDescriptionDefault
endCharYes
fontStyleNoFont style (e.g. "Bold", "Italic", "Regular")
pointSizeNo
startCharYes
fontFamilyNoFont family name (e.g. "Minion Pro")
storyIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
paragraphIndexYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not state whether unspecified font attributes are preserved, whether the operation is undoable, what permissions are required, or what side effects occur on the target range.

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 that states the operation and scope with zero wasted words. Appropriately sized for the tool's purpose.

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 an 8-parameter mutation tool with no annotations and no output schema, the description omits prerequisites, side effects, default-document behavior, and formatting-preservation rules. It covers only the high-level purpose, leaving an agent without enough context to invoke it safely.

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 low (38%). The description clarifies the range parameters (startChar/endChar/paragraphIndex) and the font attributes (fontFamily/fontStyle/pointSize), but leaves storyIndex and document_id semantics to the schema and adds no range-convention details. Partial compensation for the coverage gap.

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?

States a specific verb (Apply), resource (font family, style, size), and scope (range of characters within a paragraph). An agent can distinguish this from paragraph-level formatting tools, though no sibling is named explicitly.

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

Usage Guidelines2/5

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

No guidance on when to use this versus text_applyCharStyle, text_applyParagraphStyle, or other formatting tools. Usage is only implied by the description's purpose, with no exclusions or alternatives.

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

text_applyParagraphStyleC

Apply a paragraph style to a text range

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIndexYes
styleNameYes
frameIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
paragraphIndexNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden but states nothing beyond the mutation itself. It does not say whether applying a style overwrites direct formatting, whether the named style must exist, or what happens when paragraphIndex is omitted.

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?

A single eight-word sentence front-loads the verb and resource with zero filler. It is efficient, but efficiency here mostly reflects how little it says rather than disciplined editing of rich content.

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 5-parameter mutation tool with no annotations and no output schema, this description is under-specified: parameter targeting, style-name validity, and the optional paragraphIndex are all unexplained. The only documented parameter lives in the schema, not the description, so the definition does not stand on its own.

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

Parameters2/5

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

Schema description coverage is only 20% (just document_id), so four of five parameters are undocumented. The description's 'text range' doesn't explain the pageIndex/frameIndex/paragraphIndex addressing scheme at all, and it never clarifies that paragraphIndex is optional or what its default behavior is.

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 verb+resource (apply a paragraph style) is specific and clearly distinct from the sibling text_applyCharStyle, so an agent knows what operation this is. However, it offers no differentiation from style_listParagraph or style_createParagraph, and the phrase 'text range' is a loose fit for a tool whose parameters actually target a page/frame/paragraph.

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 guidance, no prerequisites (must the style already exist?), and no mention of alternatives such as text_applyCharStyle or style_listParagraph for discovering valid style names. The agent must infer the workflow entirely from the schema.

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

text_findReplaceC

Find and replace text content

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNodocument
findWhatYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
replaceWithYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implicitly signals a mutation via 'replace', but discloses nothing about irreversibility/undo, case sensitivity, permission or open-document requirements, or what happens when no match is found. For a write operation this is a substantial gap.

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 single five-word sentence is front-loaded and free of padding, so there is no wasted text. However, it is terse to the point of under-specification rather than genuinely concise, leaving the structure with nothing to organize. Adequate form, insufficient substance.

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 4-parameter mutating tool with no annotations, no output schema, 25% schema coverage, and a dense field of find/replace siblings, the description omits nearly everything an agent needs: scope semantics, default target document, and mutation side effects. Only the core action is communicated.

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

Parameters2/5

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

Schema description coverage is only 25%: only document_id is documented in the schema. The description adds no meaning for findWhat, replaceWith, or the scope enum, whose 'document' vs 'story' vs 'selection' distinction is materially important and completely unexplained. With low coverage the description should compensate, and it does not.

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 states a verb pair and a resource ('find and replace' + 'text content'), so the basic action is inferable, but it adds essentially nothing beyond the tool name text_findReplace. It gives no scope, no distinction from siblings like grep_replace, grep_find, or text_search that also operate on text. This is the definition of a minimally viable, vague purpose.

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 the many overlapping siblings (grep_find, grep_replace, grep_findFormat, grep_replaceFormat, text_search, text_searchFormatting). No prerequisites (e.g., an open document) or exclusion conditions are stated. The agent must guess which find/replace variant applies.

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

text_getContentC

Get content from a text frame

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoCustom timeout in ms
pageIndexYes
frameIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
includeControlCharsNoInclude BOM (\ufeff) and control chars (\u0004) in output

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read but never states it is non-destructive, does not describe what 'content' includes (paragraphs, special characters, formatting), and says nothing about permissions or the timeout behavior, despite a timeout parameter existing.

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?

A single short sentence with no waste, but its brevity comes from under-specification rather than economy. It is front-loaded but does not earn its place beyond restating the name.

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 five parameters, no annotations, and no output schema, the description should explain what content is returned and how the frame is addressed. It omits all of this, leaving a meaningful gap for an agent trying to call it correctly.

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 60%; timeout, document_id, and includeControlChars are documented in the schema, but pageIndex and frameIndex are undocumented anywhere. The description adds no meaning beyond the schema, so the agent gets no help for the two required, undocumented addressing parameters.

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?

Names a specific verb (get) and resource (content from a text frame), which is clearer than the bare name. However, it does not distinguish itself from close siblings such as text_getStories, text_getTextFrames, or text_getFormatting, all of which also read text-related data.

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 versus text_getStories (story-level text) or text_getTextFrames. No prerequisites, exclusions, or alternative routing are mentioned.

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

text_getFormattingB

Get detailed formatting (font, size, style, character style) for each text style range in a paragraph

ParametersJSON Schema
NameRequiredDescriptionDefault
storyIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
paragraphIndexYes
includeControlCharsNoInclude BOM/control chars in range text

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full disclosure burden. 'Get' implies a read-only operation, and the description usefully enumerates the formatting fields returned per range, which is real behavioral context. However, it says nothing about permissions, the shape/count of returned ranges, or error behavior, so the burden is only partially met.

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 tight sentence that front-loads the verb and resource, then enumerates the concrete output fields. No filler, no redundancy, and every clause carries information.

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

Completeness3/5

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

There is no output schema, so the description must convey return values; it does name the formatting attributes but not the structure (one entry per range? arrays? nesting?). For a 4-parameter read tool it is adequate on purpose and output content, but silent on the required storyIndex and on return shape, leaving clear gaps.

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

Parameters3/5

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

Schema coverage is 50%: document_id and includeControlChars are described in the schema, but the two required parameters (storyIndex, paragraphIndex) are undocumented. The description's phrase 'in a paragraph' gives implicit context for paragraphIndex but adds nothing for storyIndex, so it only marginally compensates for the gap. Baseline 3 for the coverage level.

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?

States a specific verb ('Get') and a well-defined resource: detailed formatting attributes (font, size, style, character style) per text style range within a paragraph. This clearly separates it from siblings like text_getContent (raw text) and text_getStories (story listing). It does not name an alternative, so it falls short of the sibling-differentiation bar for a 5.

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 contains no when-to-use, when-not-to-use, or alternative guidance. Given siblings such as text_getContent, text_getTextFrames, and grep_findFormat, an agent receives no help deciding when formatting inspection is the right call. Usage is only implied by the tool name and verb.

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

text_getStoriesC

List all stories in the active document with optional timeout and max results

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoCustom timeout in ms for large documents
maxResultsNoMaximum number of stories to return
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
includeControlCharsNoInclude BOM and control characters in content preview

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It says nothing about whether the listing is paginated, what happens when maxResults truncates the result, whether the operation is read-only, or what a returned 'story' contains; the mention of timeout and max results merely restates the schema.

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?

A single front-loaded sentence with the operation and scope stated immediately and no filler. It is arguably terse for a four-parameter tool, but nothing in it is wasted.

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 no output schema and no return-value description, an agent cannot tell what a story listing contains (IDs, names, content preview?) even though the includeControlChars parameter implies content preview is returned. For a retrieval tool with four optional parameters, the description leaves too much unstated.

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 100%, so all four parameters are already documented in the schema, making 3 the baseline. The description echoes two of them (timeout, max results) but adds nothing beyond the structured definitions and ignores document_id and includeControlChars entirely.

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 gives a specific verb and resource ('List all stories') plus scope ('in the active document'), which separates it from siblings like document_getPageStories and text_getTextFrames. It does not, however, explain how it differs from document_getStoryPages or text_getContent, both of which sound adjacent.

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 and no named alternative, despite several plausible substitutes in the sibling list (document_getStoryPages, document_getStoryPages, text_getContent, document_getPageStories). The agent must infer selection on its own.

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

text_getTextFramesC

List all text frames on a page with optional timeout

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoCustom timeout in ms for large documents
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
includeControlCharsNoInclude BOM and control characters in content preview

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It adds one useful signal — a timeout for large documents implies potentially slow execution — but says nothing about permissions, whether empty frames are included, or what the returned frames 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?

A single front-loaded sentence with zero filler. The verb, resource, scope, and the one notable modifier are all in the first few words.

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

Completeness2/5

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

With no annotations and no output schema, an agent must infer the return shape (frame references? IDs? contents?) and the read-only nature from the word 'List' alone. For a 4-parameter tool in a large sibling set, the definition does too little.

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

Parameters3/5

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

Schema coverage is 75%, which already documents timeout, document_id, and includeControlChars, so the baseline is 3. The description restates the page scope and the timeout option but adds no meaning for pageIndex (undocumented in the schema) or for document_id and includeControlChars.

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?

States a specific verb and resource with scope: 'List all text frames on a page'. An agent can distinguish this from siblings like text_getContent or text_getStories, which concern content and stories rather than frame objects. It stops short of naming those siblings explicitly.

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 statement of when to use this versus text_getStories, text_getContent, or text_getFormatting, all of which operate on the same text domain. The 'optional timeout' phrasing hints only at performance tuning, not at when this tool is the right choice.

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

text_linkFramesC

Link (thread) two text frames together

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
sourcePageIndexYes
targetPageIndexYes
sourceFrameIndexYes
targetFrameIndexYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, yet it only restates the operation. It does not disclose that text flows from source to target, what happens if frames are already linked, ordering constraints, or any side effects/requirements for this mutation.

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?

A single front-loaded sentence with zero waste and no redundancy. It is efficient, though its brevity reflects under-specification rather than disciplined concision.

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 5-parameter mutation tool with no annotations and no output schema, the description is far too thin. It omits flow direction, preconditions, and the meaning of the required index parameters, leaving an agent unable to call it confidently.

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 coverage is only 20% — document_id is documented, but the four required index parameters (source/target page and frame indices) have no descriptions. The brief phrase 'two text frames' hints at source/target but does not explain the index semantics or that direction matters, so the description fails to compensate for the coverage gap.

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?

States a specific verb (link/thread) and resource (two text frames), which is enough for an agent to grasp the operation. It does not explicitly distinguish itself from closely-related siblings like text_unlinkFrames or text_addFrame, but the pairing of 'link' with 'text frames' 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?

The description gives no when-to-use guidance, no prerequisites (e.g., frames must exist, direction of flow), and never mentions the obvious alternative text_unlinkFrames. An agent must infer everything about applicability from the name alone.

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

text_searchFormattingC

Find text ranges with specific formatting (font family, style, or size) within a story

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNo
fontStyleNoFont style to search for (e.g. "Bold", "Italic")
pointSizeNoFont size in points
fontFamilyNoFont family to search for
maxResultsNo
storyIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations exist, so the description carries the full burden. It implies a read-only query but says nothing about permissions, whether results are paginated, how maxResults interacts with the search, or the shape of returned ranges. For a 7-parameter query tool this is a substantial gap.

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?

A single front-loaded sentence with no wasted words. It is efficient, though arguably too terse given the parameter count and the absence of surrounding behavioral context.

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 no annotations, no output schema, and 7 parameters, the definition leaves return-value shape, result limits, and document/story targeting unexplained. An agent can guess the purpose but not reliably call it correctly in edge cases.

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 57%, and the description names font family, style, and size, which map onto fontFamily, fontStyle, and pointSize already documented in the schema. It adds no meaning for storyIndex, document_id, maxResults, or timeout, and no format/syntax details beyond the schema.

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

Purpose4/5

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

The description gives a specific verb ('Find') and resource ('text ranges with specific formatting'), and enumerates the three formatting dimensions searched. It is clearly distinct from a plain content search, though it doesn't name or contrast the close siblings text_search, grep_findFormat, or text_getFormatting.

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

Usage Guidelines2/5

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

No guidance on when to use this versus text_search (content), grep_findFormat (regex formatting), or text_getFormatting (retrieve formatting). The agent is left to infer selection entirely from the name and a single clause.

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

text_setAutoSizeC

Set auto-sizing type for a text frame

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIndexYes
frameIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
autoSizingTypeYes
referencePointNo

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not state that this is a mutating operation on an open document, whether it requires an active selection, whether prior auto-sizing settings can be restored, or what happens when an invalid frame index is supplied.

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?

A single short sentence with no filler is front-loaded well, but at this level of brevity it is under-specified rather than genuinely concise — nothing is wasted, yet almost nothing is delivered either.

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 5-parameter mutation tool with zero annotations, no output schema, and 20% schema coverage, the definition falls well short — an agent cannot reliably determine prerequisites, parameter meaning, or the effect of the change from this description.

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

Parameters2/5

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

Schema description coverage is only 20% — just document_id is documented. The description adds nothing about the required pageIndex/frameIndex addressing scheme, nor does it explain the autoSizingType values ('off', 'heightOnly', 'widthAndHeight', 'heightAndWidth') or the referencePoint enum, leaving half the parameters opaque.

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 ('Set') plus resource ('auto-sizing type') and target ('a text frame'), which is unambiguous. It does not, however, distinguish itself from the many other text_* frame-mutating siblings such as text_setTextWrap or text_setColumns, so the agent gets no routing signal.

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 guidance, no mention that a document must be open or a frame must exist, and no pointer to alternative tools for related frame formatting. The agent must infer all context 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.

text_setColumnsC

Set column count and gutter for a text frame

ParametersJSON Schema
NameRequiredDescriptionDefault
countYes
gutterNo
pageIndexYes
frameIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It states a mutation but omits whether existing text reflows when columns change, what constraints apply (schema caps count at 12, gutter minimum 0), or whether a target frame must exist. Only the bare operation 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.

Conciseness4/5

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

A single front-loaded sentence with no waste. However, it is arguably too terse for a 5-parameter mutation tool, leaving no room for the context it needs.

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 no annotations, no output schema, and 80% of parameters undocumented, the description is too sparse. It omits permission requirements, reflow behavior, and the meaning of the index parameters, leaving meaningful gaps an agent would need filled.

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 20%, with only document_id documented. The phrase 'column count and gutter' names the count and gutter parameters and gives rough intent, but pageIndex and frameIndex are undocumented in both schema and description, and gutter units are never stated. It does not compensate for the coverage gap.

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?

States a specific verb and resource: 'Set column count and gutter for a text frame.' An agent can tell this configures columns on an existing frame, distinguishing it from text_addFrame or text_setContent. No explicit sibling differentiation is provided, but the 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?

No when-to-use guidance, no prerequisites (e.g., a frame must already exist), and no alternatives named. Usage is only implied by the verb 'Set' and the frame target.

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

text_setContentC

Set content of a text frame

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYes
pageIndexYes
frameIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It doesn't state that this overwrites/replaces existing frame content, whether the target frame must already exist, or any permission/side-effect behavior — significant gaps for a mutation tool.

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

Conciseness4/5

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

A single terse, front-loaded fragment with no wasted words. It is appropriately sized structurally, though its brevity reflects under-specification rather than 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?

For a mutation tool with no annotations, no output schema, and three of four params undescribed, the definition is too thin. An agent lacks enough context to call it correctly in edge cases.

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 coverage is only 25% (only document_id is documented) and the description adds nothing about parameters. The three required params — pageIndex, frameIndex, content — are undocumented, so the description fails to compensate for the coverage gap beyond what their names imply.

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?

States a specific verb ('Set') and resource ('content of a text frame'), which pairs distinctly against the sibling text_getContent. It doesn't explicitly differentiate itself from other text_* mutators (setColumns, setTabs, etc.), but the verb+resource pair 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?

No guidance on when to use this tool versus alternatives, no prerequisites, and no note about how the frame is identified. The agent must infer everything from the name and schema.

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

text_setDropCapC

Set drop cap options for a paragraph

ParametersJSON Schema
NameRequiredDescriptionDefault
linesNo
pageIndexYes
charactersNo
frameIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
characterStyleNo
paragraphIndexYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, and it discloses almost nothing: it doesn't say whether this mutates existing drop cap settings, what happens to unspecified options, whether the paragraph must exist or be selected, or what is returned. "Set" implies a write, but no safety, idempotency, or side-effect context is given.

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?

A single front-loaded sentence with no filler or redundancy; it is efficiently sized. The brevity is partly a symptom of thin content, but as structure it is clean and readable.

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 7-parameter mutation tool with no annotations, no output schema, and only 14% schema coverage, the definition is inadequate. It omits targeting semantics, parameter meaning, and behavioral effects, leaving the agent without enough to call it confidently.

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

Parameters2/5

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

Schema description coverage is only 14% — just document_id is documented — leaving six parameters (lines, characters, characterStyle, pageIndex, frameIndex, paragraphIndex) undocumented in both schema and description. The description's mention of "drop cap options" loosely gestures at lines/characters/characterStyle but adds no formats, defaults, or range 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 states a specific verb ("Set") and resource ("drop cap options") with an explicit target ("for a paragraph"), which is enough to distinguish it from adjacent text_set* tools like text_setColumns or text_setKeepOptions. It is clear but does not explicitly contrast itself with any sibling, so it falls short of a 5.

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

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, no prerequisites, and no mention of the required pageIndex/frameIndex/paragraphIndex targeting workflow. The single sentence leaves the agent to infer everything about invocation context.

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

text_setFirstBaselineC

Set first baseline options for a text frame

ParametersJSON Schema
NameRequiredDescriptionDefault
minOffsetNo
pageIndexYes
frameIndexYes
offsetTypeYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a mutation ('Set') but says nothing about reversibility, required document state, permissions, or how the operation affects existing text formatting.

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

Conciseness4/5

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

The single sentence is efficiently front-loaded and contains no waste. However, its brevity is achieved by omitting useful details rather than through disciplined editing.

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 five-parameter mutation tool with no annotations, no output schema, and only 20% schema description coverage, the description is far too sparse. It omits when/why to use it, parameter meanings, and behavioral effects.

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 only 20%, leaving four of five parameters undocumented in the schema. The description adds nothing about any parameter, including the required offsetType enum, so it fails to compensate for the coverage gap.

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 ('Set') and resource ('first baseline options for a text frame'), making the operation clear. It does not explicitly distinguish itself from sibling text-formatting tools, but no sibling appears to overlap directly.

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, no prerequisites, and no context about what problem it solves. The agent is left to infer usage from the name alone.

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

text_setHyphenationC

Set hyphenation settings for a paragraph

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIndexYes
frameIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
hyphenationYes
wordSpacingNo
letterSpacingNo
minWordLengthNo
paragraphIndexYes
maxConsecutiveHyphensNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Set' implies mutation of existing paragraph formatting, but the description says nothing about whether other paragraph attributes are affected, what permissions are required, or how the frame/paragraph addressing resolves. For a mutating 9-parameter tool, this is a substantial gap.

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?

A single front-loaded sentence with no filler, which is structurally sound. It is terse to the point of under-specification rather than wasteful, but it commits no verbosity or ordering errors.

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 mutating tool with 9 parameters, 4 required, 11% schema coverage, no annotations and no output schema, the description supplies almost nothing an agent needs. The one bit of information beyond the name – that the target is a paragraph – is insufficient to call the tool correctly.

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 11% – only document_id is documented in the schema. Eight parameters (pageIndex, frameIndex, paragraphIndex, hyphenation, wordSpacing, letterSpacing, minWordLength, maxConsecutiveHyphens) are undocumented in both schema and description, and the description adds no semantics for any of them, not even units or valid relationships between spacing values.

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?

States a specific verb and resource ('Set hyphenation settings') and scopes it to a paragraph, which is enough to distinguish it from unrelated siblings like table_setCell or image_place. It does not, however, distinguish itself from the many sibling text_set* formatting tools (text_setDropCap, text_setKeepOptions, text_setTabs), so it lands at 4 rather than 5.

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 when-to-use context, no prerequisites, and no exclusions. An agent cannot tell from this text when hyphenation settings should be applied versus left alone, or how the tool relates to text_applyParagraphStyle and the other paragraph-formatting siblings.

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

text_setIgnoreWrapC

Set whether text frame ignores text wrap

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIndexYes
frameIndexYes
ignoreWrapYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Set' implies a mutation, but it says nothing about permissions, reversibility, persistence, or return behavior — significant gaps for a write 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?

A single efficient sentence with the action front-loaded and no filler. Brevity comes at the cost of clarity elsewhere, but the sentence itself is well-formed.

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 no annotations, no output schema, and 25% parameter coverage, the one-line description is inadequate. An agent lacks the framing/index semantics and mutation side-effects needed to call it reliably.

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 coverage is only 25% (just document_id). The description vaguely implies frameIndex and ignoreWrap but never clarifies that pageIndex/frameIndex are zero-based identifiers or how they interact. It does not compensate for the undocumented parameters.

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?

States a specific verb ('Set') and resource ('whether text frame ignores text wrap'), so an agent can tell it toggles an ignore-wrap flag on a text frame. It is distinguishable from the nearby text_setTextWrap tool, though it doesn't explicitly name that sibling.

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

Usage Guidelines2/5

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

No guidance on when to use this versus text_setTextWrap or text_setInsetSpacing, no prerequisites, and no mention that the frame/document must already exist. Usage context is entirely left to inference.

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

text_setInsetSpacingC

Set text frame inset spacing

ParametersJSON Schema
NameRequiredDescriptionDefault
topYes
leftYes
rightYes
bottomYes
pageIndexYes
frameIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It does not state that existing inset values are overwritten, what units the values use (points?), whether zero is meaningful, or whether the target frame must already exist. For a mutation tool this is a significant gap.

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?

A single front-loaded phrase with no wasted words, but it is terse to the point of under-specification rather than efficiently concise.

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?

A 7-parameter mutation tool with no annotations, no output schema, and 14% schema coverage needs far more than six words. Units, frame targeting, and mutation behavior are all missing, leaving the agent unable to call it confidently.

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

Parameters2/5

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

Schema description coverage is only 14% (only document_id is documented); top/left/bottom/right/pageIndex/frameIndex carry no descriptions. The description adds no meaning such as units or index semantics, so it fails to compensate for the coverage gap, though the parameter names are fairly self-explanatory.

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?

States a specific verb (Set) and resource (text frame inset spacing), which is enough to distinguish it from adjacent text_* formatting siblings like text_setColumns or text_setTextWrap. It does not explicitly name a sibling it is not, keeping it just short of a 5.

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

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 versus text_setColumns, text_setTextWrap, or other frame/text settings, nor any prerequisites or context. The agent gets the action but no routing or conditions.

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

text_setKeepOptionsC

Set keep options (widow/orphan control) for a paragraph

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIndexYes
frameIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
keepWithNextNo
linesTogetherNo
paragraphIndexNo
startParagraphNoanywhere
keepWithPreviousNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a mutation but says nothing about which paragraph is affected, required targeting context, reversibility, or interaction with existing paragraph settings.

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?

A single tight, front-loaded sentence with no filler. It is appropriately terse per se, though its brevity reflects under-specification for an 8-parameter tool rather than genuine completeness.

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 mutation tool with 8 undocumented parameters, no annotations, and no output schema, the description is far too thin. An agent cannot know what the numeric keep options mean or how the target paragraph is identified.

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 only 13% (just document_id), leaving 7 of 8 parameters undocumented in both schema and description. The description mentions no parameter at all, so keepWithNext (0-5), linesTogether (1-10), startParagraph's enum, and keepWithPrevious are entirely unexplained.

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?

States a specific verb (Set) and resource (keep options), with the parenthetical clarifying the term as widow/orphan control. It is distinguishable from text_setColumns, text_setTabs, and other text_set* siblings, but the description never explicitly contrasts itself with them.

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, no prerequisites, and no alternatives named. The agent is told what the tool does but nothing about when to reach for it versus the many other paragraph-formatting tools in the sibling set.

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

text_setParagraphRuleAboveC

Add or modify rule above a paragraph

ParametersJSON Schema
NameRequiredDescriptionDefault
ruleOnYes
ruleTypeNo
pageIndexYes
ruleColorYes
ruleWidthYes
frameIndexYes
ruleOffsetYes
ruleWeightYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
paragraphIndexYes
ruleLeftIndentYes
ruleRightIndentYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full burden. It says 'add or modify' but does not disclose whether ruleOn=false removes the rule, what happens to required-but-unset values, permission needs, or reversibility. For a 10-required-parameter mutation this is a substantial gap.

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?

A single front-loaded sentence with no wasted words; the problem is under-specification rather than verbosity, so its compact form is appropriate even if the content is thin.

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 12 parameters (10 required), no annotations, no output schema, and near-zero schema coverage, the description leaves the agent unable to determine what values to supply or what the call returns. Only the bare purpose is conveyed.

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

Parameters2/5

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

Schema description coverage is only 8% — document_id is the sole documented parameter — and the description adds no meaning for ruleOn, ruleWeight, ruleColor, ruleWidth's enum, ruleOffset, or the indent parameters. The ten required parameters are effectively 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?

States a concrete verb (add or modify) and a specific resource (the rule above a paragraph), and the word 'above' implicitly distinguishes it from the sibling text_setParagraphRuleBelow. It is clear but never names the alternative or the document-editing context, so it stops short of full sibling differentiation.

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

Usage Guidelines2/5

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

No guidance on when to use this versus text_setParagraphRuleBelow, nor any prerequisites (document must be open, paragraph must exist). The agent must infer everything about applicability from the name.

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

text_setParagraphRuleBelowC

Add or modify rule below a paragraph

ParametersJSON Schema
NameRequiredDescriptionDefault
ruleOnYes
ruleTypeNo
pageIndexYes
ruleColorYes
ruleWidthYes
frameIndexYes
ruleOffsetYes
ruleWeightYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
paragraphIndexYes
ruleLeftIndentYes
ruleRightIndentYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden but discloses almost nothing. It does not explain whether toggling ruleOn off removes the rule, whether changes are reversible, what permissions are needed, or how ruleWidth/ruleColor interact.

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?

A single front-loaded sentence with no filler. It is efficiently sized for the small amount of content it chooses to convey, though that content is sparse relative to tool complexity.

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 12-parameter mutation tool with no annotations, no output schema, and 92% of parameters undocumented, this description is far from complete. An agent cannot determine required value formats, defaults, or behavioral effects from it.

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 only 8% (only document_id has a description), and the tool has 12 parameters with 10 required. The description mentions no parameters at all, so it adds zero meaning beyond the sparse schema.

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

Purpose4/5

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

States a specific verb (add/modify) and resource (paragraph rule below). The word 'below' implicitly distinguishes it from sibling text_setParagraphRuleAbove, but the description does not explicitly name or contrast that alternative.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like text_setParagraphRuleAbove, and no prerequisites such as whether the document must be open or how to obtain paragraphIndex. The only hint is the verb 'Add or modify'.

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

text_setTabsC

Set tab stops for a paragraph

ParametersJSON Schema
NameRequiredDescriptionDefault
tabStopsYes
pageIndexYes
frameIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
paragraphIndexYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it says almost nothing: it does not disclose whether existing tab stops are replaced or appended, whether the document must be writable, or whether the operation is undoable. 'Set' hints at a mutation but leaves the destructive/replacement semantics ambiguous.

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?

A single short sentence with no filler, and the purpose is front-loaded. It is efficient, though its brevity is under-specification rather than disciplined concision.

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 5-parameter mutation tool with 20% schema coverage, no annotations, and no output schema, an agent cannot reliably invoke this from the description alone. Addressing scheme, replacement behavior, and tab-stop semantics are all 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 only 20% (only document_id is documented in-schema), so the description must compensate and does not. It never explains pageIndex/frameIndex/paragraphIndex addressing, the tabStops array shape, the position units, or the alignment/leader/character fields.

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?

States a specific verb (Set) and resource (tab stops) scoped to a paragraph, which is enough for an agent to distinguish it from nearby formatting siblings like text_setColumns or text_setDropCap. It is clear but adds no differentiation language against those 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?

There is no guidance on when to use this tool versus alternatives (e.g., text_setColumns, text_applyParagraphStyle) and no stated prerequisites such as an open/modifiable document with existing text frames. An agent must infer the context entirely.

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

text_setTextWrapC

Set text wrap preferences for an object

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYes
sideNoboth
offsetNo
itemIndexYes
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits on its own. It only states that preferences are set, without explaining permissions, persistence, undo behavior, selection requirements, or what happens if the object type does not support wrapping.

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 single sentence is front-loaded and avoids waste, but it is so sparse that it omits necessary scoping details. It is not overlong, yet it under-delivers for a tool of this complexity.

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 six parameters, two enums, no annotations, no output schema, and low schema description coverage, the description is far too thin. It does not explain wrapping modes, targeting by page/item index, or how the operation interacts with sibling tools.

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 only 17%, and the description adds no meaning for mode, side, offset, pageIndex, or itemIndex. With six parameters and most undocumented, the description fails to compensate for the schema's gaps.

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 ('Set') and resource ('text wrap preferences') for an object, making the core action clear. However, it does not differentiate this tool from siblings such as text_setIgnoreWrap or text_setInsetSpacing, and 'object' is ambiguous across text frames, shapes, and groups.

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 indication of when this tool should be used versus alternatives like text_setIgnoreWrap or text_setInsetSpacing. It also omits prerequisites, supported object types, and conditions under which text wrapping is applicable.

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

text_setVerticalJustificationC

Set vertical justification for a text frame

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIndexYes
frameIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
justificationYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure and largely fails it: it does not say the operation mutates the document, whether it is undoable, what happens if the frameIndex is out of range, or what errors surface. Only the word 'Set' hints at a mutation.

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?

A single front-loaded sentence with no filler, but it is under-specified rather than efficiently concise — the one clause does not carry enough information for a 4-parameter mutation tool.

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 four parameters, 25% schema coverage, no annotations, and no output schema, the description is too thin for correct invocation. An agent gets no guidance on indexing semantics, enum behavior, or failure modes.

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

Parameters2/5

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

Schema description coverage is only 25% (just document_id is documented) and the description adds no meaning to pageIndex, frameIndex, or justification beyond implying a text frame. The justification enum values (top/center/bottom/justify) are never explained, so the description does not compensate for the coverage gap.

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?

States a specific verb (Set) and resource (vertical justification) scoped to a text frame, which is concrete and unambiguous. It does not distinguish itself from the many sibling text_set* tools (setColumns, setTextWrap, setDropCap, etc.), so it stops short of a 5.

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

Usage Guidelines2/5

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

The description gives no when-to-use context, no prerequisites, and no alternatives (e.g., it never mentions the frame must already exist or that text_setContent/text_addFrame are the creation paths). Usage can only be inferred from the name.

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

text_unlinkFramesC

Unlink a text frame from its thread

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIndexYes
frameIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and fails to disclose anything beyond the bare action: no note on what unlinking does to the thread's text flow, whether it is reversible, what errors occur if the frame is not threaded, or permission requirements.

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 single sentence is efficient and front-loaded, but its brevity reflects under-specification rather than genuine conciseness for a mutation tool with three parameters.

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 no-annotation mutation tool with 33% parameter coverage and no output schema, the description should explain threading semantics, error cases, and parameter meaning. It omits all of this, leaving the agent under-informed.

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

Parameters2/5

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

Schema description coverage is only 33% (only document_id is documented), so the description needed to compensate, but it mentions no parameters at all. pageIndex and frameIndex are left entirely to the schema's type/minimum constraints, with no explanation of what a frame index refers to or how frames are ordered.

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?

States a specific verb (unlink) and resource (a text frame from its thread), which is concrete enough for an agent to grasp. It does not explicitly distinguish itself from the sibling text_linkFrames, though the inverse relationship is inferable.

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 versus text_linkFrames or any other tool, and no prerequisites or conditions are stated. The single sentence leaves usage entirely to inference.

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

toc_createStyleC

Create or modify a Table of Contents style in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
titleNo
entryStyleNo
titleStyleNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
pageNumberStyleNoafterEntry
replaceExistingNo
betweenEntryAndNumberNo
includeParagraphStylesNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral disclosure burden. It only says create/modify in the active document and omits critical context such as whether existing styles are overwritten (replaceExisting defaults to true), what happens to applied styles, and permission requirements.

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 single sentence is front-loaded, clear, and free of filler. It is appropriately concise for a one-line description, though that conciseness comes at the cost of completeness.

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 nine parameters, no annotations, no output schema, and very low schema description coverage, the description is far too sparse. It does not explain parameter behavior, defaults, side effects, or document targeting nuances.

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

Parameters2/5

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

Schema description coverage is only 11% (only document_id is described), and the description adds no meaning for the other eight parameters like title, entryStyle, titleStyle, pageNumberStyle, replaceExisting, betweenEntryAndNumber, or includeParagraphStyles.

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 a specific verb (create or modify) and resource (Table of Contents style), so an agent knows the general operation. However, it does not distinguish this tool from the sibling toc_update, which likely also modifies existing TOC styles.

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 toc_update, toc_listStyles, or toc_generate, nor are prerequisites such as document state or required permissions mentioned.

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

toc_generateC

Generate a Table of Contents on a specified page

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
boundsNo
pageIndexYes
styleNameYes
layerIndexNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says nothing about whether an existing TOC is overwritten, what permissions or open-document state are required, where the generated content comes from, or what the call returns on failure.

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?

A single front-loaded sentence with zero filler, which is the right shape for a short description. It is terse to the point of under-specification rather than wasteful.

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 no annotations, no output schema, six parameters at 17% coverage, and a nested bounds object, the definition is far too thin. Nothing tells the agent how to supply a valid styleName or what side effects the generation has on the document.

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

Parameters2/5

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

Schema description coverage is only 17% (just document_id), and the description compensates for almost nothing: 'specified page' loosely maps to pageIndex, but styleName, title, bounds (a nested object), and layerIndex are undocumented in both places. An agent cannot know what styleName should reference or what bounds controls.

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?

States a specific verb (generate) and resource (Table of Contents) plus the scoping location (a specified page), which is enough to distinguish it from toc_createStyle and toc_listStyles. It does not clarify how it differs from the equally mutating sibling toc_update, so a 5 is not warranted.

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 guidance, no prerequisite (e.g., that a TOC style from toc_createStyle/toc_listStyles must already exist), and no routing to toc_update for refreshing an existing TOC. The agent must infer everything from the sibling names.

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

toc_listStylesB

List all Table of Contents styles in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description must carry the behavioral burden. It does convey that this is a read-only enumeration scoped to the active document (useful context), but it says nothing about whether the operation is safe/non-destructive, what the returned entries look like, or whether any state is required beyond an open document.

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?

One short sentence with the resource and scope front-loaded and no wasted words. It is appropriately sized for a simple list operation.

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 tool this is close to sufficient, but with no output schema and no annotations, the description leaves the return shape (whether styles are names, counts, or full definitions) entirely unspecified. Adequate but with a clear gap.

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

Parameters3/5

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

The single document_id parameter is fully described in the schema (100% coverage), including the name-or-index form and the front-document default, so the baseline of 3 applies. The description's phrase 'in the active document' roughly restates the default but adds no syntax or format detail beyond the schema.

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

Purpose4/5

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

The description states a specific verb (List) and resource (Table of Contents styles) scoped to the active document, which cleanly separates it from toc_createStyle, toc_generate, and toc_update. It is clear on its own, but it does not name a sibling or otherwise differentiate itself explicitly against them.

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 guidance, no prerequisites, and no mention of the alternatives (toc_createStyle to add a style, toc_generate/toc_update to act on the TOC). The usage is only inferable from the verb 'List'; an agent gets no routing help.

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

toc_updateC

Update (regenerate) an existing TOC from its story

ParametersJSON Schema
NameRequiredDescriptionDefault
styleNameNo
storyIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Regenerate' hints that existing TOC content is rebuilt, but it does not state that prior entries are replaced, whether the operation is reversible, or what permissions/preconditions are needed.

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?

A single tight sentence with the verb and scope front-loaded; nothing is wasted, though it is arguably too terse given the undocumented parameters.

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 no annotations, no output schema, and two of three parameters undocumented, this one-line description leaves too much unstated — the agent lacks the parameter meaning and behavioral context needed to call it correctly.

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 coverage is 33%: only document_id is documented in the schema, while storyIndex (required) and styleName are bare. The description's 'from its story' loosely gestures at storyIndex but adds nothing about styleName, format, 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?

States a specific verb ('Update (regenerate)') and resource ('an existing TOC') plus the source story, so the operation is clear. It does not distinguish itself from close siblings like toc_generate or toc_createStyle, leaving that to inference.

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 phrase 'existing TOC' weakly implies this is for refreshing rather than creating, but no alternative (toc_generate, toc_createStyle) is named and no preconditions are given. An agent must guess which TOC tool applies.

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

transform_alignC

Align objects on a page relative to selection, margins, or page

ParametersJSON Schema
NameRequiredDescriptionDefault
alignModeYes
pageIndexYes
relativeToNoselection
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
itemIndicesYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden and does not disclose that this is a mutating operation that repositions page items, whether it is undoable, what happens to unselected objects on the page, or whether a document must be open/writable. 'Align' implies mutation but nothing about side effects or permissions is stated.

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?

A single front-loaded sentence with zero filler, which is efficient. It is terse to the point of under-specification for a five-parameter mutation tool, but structurally there is no wasted text.

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?

Five parameters, 20% schema coverage, no annotations and no output schema – the definition should carry much more weight than one line. It omits operand selection semantics (itemIndices), the document requirement, and any note on mutation/undo, leaving the agent to infer too much.

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

Parameters2/5

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

Schema description coverage is only 20% – only document_id is documented in the schema. The description repeats the relativeTo enum values but adds no meaning for alignMode beyond the raw enum, and says nothing about itemIndices (which items) or pageIndex (which page). It does not compensate for the coverage gap.

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?

States a specific verb+resource ('Align objects on a page') and enumerates the reference frames it aligns against, so an agent can distinguish it from transform_rotate/scale/flip/distribute. Differentiation from siblings is implied by the verb rather than stated explicitly, keeping it just below a 5.

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, no prerequisites, and no pointers to alternatives such as transform_distribute for evenly spacing objects. The phrase 'relative to selection, margins, or page' merely previews a schema enum rather than advising the agent when each choice is appropriate.

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

transform_distributeC

Distribute objects evenly on a page

ParametersJSON Schema
NameRequiredDescriptionDefault
boundsNoselection
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
itemIndicesYes
distributeModeYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Distribute' implies a mutation of object positions, but the description says nothing about what gets modified, whether it is undoable, whether objects must be selected first, or what the result looks like. This is a significant gap for a mutation tool.

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

Conciseness4/5

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

A single tight sentence that is front-loaded and wastes no words. Its brevity is a virtue structurally, though it edges toward under-specification rather than pure conciseness.

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 5-parameter mutation tool with no annotations and no output schema, the description is far too thin. It omits the range of distributeMode options, the meaning of bounds, and any behavioral context, leaving an agent without enough to invoke it reliably.

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

Parameters2/5

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

Schema description coverage is only 20% (just document_id), and the description adds nothing about the parameters. The five parameters, including required itemIndices and distributeMode and the bounds/distributeMode enums, are left for the agent to interpret from the schema alone, which the description does not compensate for.

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?

States a specific verb (distribute) and resource (objects on a page), so the core action is clear. However, it does not differentiate itself from the sibling transform_align, which is the natural alternative an agent would confuse it with (align vs. evenly distribute).

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 indication of when to use this versus transform_align, transform_scale, or any other transform sibling. No prerequisites, no conditions, no exclusions are stated, leaving the agent to infer usage entirely from the name.

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

transform_flipC

Flip an object horizontally or vertically

ParametersJSON Schema
NameRequiredDescriptionDefault
axisYes
itemIndexYes
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Flip' implies a mutation, but there is no disclosure about whether the change is undoable, what permissions are required, what happens to locked objects, or the return value—only the axis behavior is stated.

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 single sentence is efficient, front-loaded, and has zero wasted words. It is appropriately sized for a concise statement, though it lacks the detail needed for a full definition.

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 four parameters, low schema description coverage, no annotations, and no output schema, the description is far too terse. It omits essential context an agent needs—what constitutes an 'object', how pageIndex/itemIndex identify it, and what side effects to expect.

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

Parameters2/5

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

Schema description coverage is only 25% (only document_id is documented), so the description should compensate for pageIndex, itemIndex, and axis. It merely restates the axis enum values ('horizontally or vertically') that are already in the schema, adding no meaning beyond what the schema provides.

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?

States a specific verb ('Flip') and resource ('an object') with the axis options, so it is clear this is a geometric flip operation distinct from transform_rotate or transform_scale. However, 'an object' is vague and the description does not explicitly differentiate itself from siblings like transform_align or transform_rotate.

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 when-to-use guidance, prerequisites, or alternatives. It does not explain when flipping is appropriate versus rotating or scaling, leaving the agent to infer usage context entirely.

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

transform_rotateC

Rotate an object by a specified angle

ParametersJSON Schema
NameRequiredDescriptionDefault
angleYes
itemIndexYes
pageIndexYes
layerIndexNo
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It omits whether the rotation is applied in place, whether it is absolute or relative, whether it is undoable (undo/redo siblings exist), and what permissions or document state are required for a mutation of this kind.

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?

A single short sentence with no filler and the core action front-loaded. It is efficiently written, though the brevity reflects under-specification rather than disciplined conciseness.

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 no annotations, no output schema, and four of five parameters undocumented anywhere, the description is far too thin. An agent cannot reliably construct a correct call without knowing angle units or what pageIndex/itemIndex/layerIndex address.

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?

With 5 parameters and only 20% schema description coverage, the description must compensate but does not: angle units (degrees vs. radians) are unspecified, and pageIndex, itemIndex, and layerIndex are never explained. Only document_id is documented, and that documentation lives in the schema rather than 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 states a specific verb ("Rotate") and resource ("an object") plus the operating parameter (angle), so the agent knows exactly what the tool does. It does not, however, distinguish itself from sibling transform tools like transform_flip, transform_scale, or transform_align, leaving the family boundaries to inference.

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 the other transform_* siblings, nor any prerequisites such as needing a selection or a specific object reference. The agent must guess at context of use entirely.

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

transform_scaleC

Scale an object by percentages

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleXNo
scaleYNo
itemIndexYes
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
isPercentageNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure, and it adds almost nothing: it doesn't state permissions, whether scaling happens in place, how existing geometry is affected, or that it targets an item by page/index rather than the current selection. 'by percentages' is the only behavioral hint, aligning loosely with the isPercentage default.

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?

A single front-loaded sentence with no filler. It is efficient, though its brevity is also the source of the specification gaps elsewhere.

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 6-parameter mutation tool with no annotations, no output schema, and most parameters undocumented, the description is far too thin. An agent cannot confidently determine targeting semantics (pageIndex/itemIndex vs. selection), units, or failure behavior.

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

Parameters2/5

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

Schema description coverage is only 17% (just document_id), so the description must compensate, but 'by percentages' only weakly signals isPercentage. The core scaleX/scaleY ranges and the required pageIndex/itemIndex targeting are left entirely for the agent to infer from bare schema types.

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?

Specific verb (scale) plus resource (an object) with a modifier (by percentages), so the agent knows the operation. However, it does not distinguish itself from the four transform_* siblings (align, distribute, rotate, flip) and 'object' is vague, leaving the agent to infer it means page items.

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, no prerequisites, and no exclusions or pointers to alternatives. Given siblings like transform_flip and transform_rotate that could seem applicable, the absence of routing guidance 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.

undoC

Undo the last operation

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing beyond the bare action. It does not say whether undo is single- or multi-level, how it interacts with undo_beginGroup/undo_endGroup, whether it is scoped to one document, or what happens if there is nothing to undo.

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?

One short, front-loaded sentence with zero waste. It is efficient, though its brevity borders on under-specification rather than tightness.

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 no annotations and no output schema, the description is too thin. It omits undo grouping behavior, document scoping, and outcome reporting, leaving real gaps an agent would need to call it correctly.

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

Parameters3/5

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

The single optional document_id parameter is fully documented in the schema (100% coverage), including name-vs-index semantics and the front-document default. The description adds no additional parameter meaning, so the baseline 3 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?

States a specific verb (undo) and scope ('the last operation'), so an agent immediately knows this reverses the most recent change. It does not, however, distinguish itself from siblings like redo, undo_history, or undo_beginGroup/undo_endGroup, which an agent must sort out on its own.

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 versus redo, undo_history, or grouped undo. The only implied usage comes from the tool name itself; the description offers no context or exclusions.

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

undo_beginGroupA

Begin an undo group. While active, each subsequent script runs as a single undo step, so one Undo reverts a whole tool call (e.g. a multi-step recipe). It cannot merge separate calls into one step — each call is still its own undo entry. Call undo_endGroup() to restore the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and mostly delivers: it discloses the core behavior (subsequent scripts collapse into a single undo step), an important limitation (separate calls are still separate entries), and the required teardown (undo_endGroup restores the default). It doesn't cover error behavior, nesting, or idempotency, so it falls short of full disclosure for an unannotated tool.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the action and effect, followed by the key limitation and the cleanup call. No filler and nothing restated from the schema or a title.

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 one-optional-parameter tool with no output schema, the description covers the conceptual model (grouping, scope, limitation, teardown) that an agent needs to invoke it correctly. Gaps are minor: document scoping of the group and failure/nesting behavior are not addressed, but nothing essential for a correct call is missing.

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 100% and the single document_id parameter is fully documented in the schema, including the name/index option and front-document default. The description adds nothing about which document the group applies to, so baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb+resource ('Begin an undo group') and defines the scope of the group immediately. It also names its counterpart sibling undo_endGroup, so an agent can distinguish this from undo/redo/undo_history without opening a schema.

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?

Usage context is clear: use it when a multi-step script/tool call should revert as one step ('e.g. a multi-step recipe'). It even supplies a negative guideline ('cannot merge separate calls into one step') and names the closing call. What's missing is an explicit ordering precondition (call before the scripts) and any exclusion relative to undo/redo.

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

undo_endGroupB

End the undo group and restore the default undo behavior

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses only that default undo behavior is restored; it says nothing about whether grouped commands coalesce into a single undo step, what happens if no group is open, or any error/permission behavior for what is clearly a state-mutating 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?

A single tight sentence with the action front-loaded and no filler. It is efficient, though the sparseness borders on under-specification rather than model conciseness.

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?

Low-complexity tool with one fully documented parameter and no output schema, so little is strictly required. However, the grouping semantics — the actual purpose of the begin/end pair — are left unexplained, which is a meaningful gap for a session-state mutation.

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

Parameters3/5

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

Schema coverage is 100%, so document_id is fully documented in the schema (name vs. 0-based index, defaults to front document). The description adds nothing about the parameter, which is the expected baseline when the schema does the work.

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?

States a specific verb+resource ('End the undo group') and adds the outcome ('restore the default undo behavior'). It is distinguishable from siblings like undo/redo/undo_beginGroup, though it never names its counterpart explicitly.

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?

Usage is only implied: 'End the undo group' suggests it must follow undo_beginGroup, but the description never states that pairing, nor when to call it versus the plain undo tool. An agent can infer the workflow from the name alone but gets no explicit routing.

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

undo_historyC

Get undo/redo state information

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. "Get ... information" implies read-only, but it doesn't disclose what the state information contains, whether calling it affects the undo stack, or any side effects. For a tool whose whole value is the returned state, this is a significant gap.

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?

A single six-word sentence with no filler, and the core verb is front-loaded. It is efficient, though the terseness edges toward under-specification rather than tight conciseness.

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 no output schema and no annotations, the description is the only source of information about what this tool returns, and it says only "state information." An agent cannot tell whether it gets a boolean, a step count, or a label list, so the definition is not complete enough for reliable use.

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 100% and the single document_id parameter is fully documented in the schema, including the name-or-index union and the front-document default. The description adds no parameter meaning beyond that, so the baseline 3 applies.

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?

States a verb ("Get") and a resource ("undo/redo state information"), so the operation is identifiable as a read. However, it does not distinguish itself from the sibling tools undo, redo, undo_beginGroup, and undo_endGroup, which an agent could easily confuse with this query-only tool. Purpose is legible but undifferentiated.

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 indication of when to call this versus undo, redo, or undo_beginGroup, nor any mention of prerequisites (e.g., an open document). The agent is left to infer that this only inspects state rather than mutating the undo stack.

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

xml_addTagC

Create a new XML tag

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it says nothing about whether the new tag is added to the document's tag list, whether duplicate names are rejected, or what happens if no document is open. 'Create' implies mutation but no side effects or permissions are disclosed.

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?

A single front-loaded sentence with no waste. It is efficient, though its brevity reflects under-specification rather than disciplined concision.

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 no annotations, no output schema, and half the parameters undocumented, the description leaves an agent guessing about prerequisites, return value (e.g., the new tag's identifier), and side effects. For a mutation tool this is too thin.

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

Parameters2/5

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

Schema description coverage is only 50%: document_id is documented in the schema, but the required 'name' parameter has no description anywhere. The description adds nothing about naming rules (uniqueness, case sensitivity, allowed characters) to compensate for that gap.

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?

States a specific verb and resource ('Create a new XML tag'), so an agent immediately knows the operation. It does not differentiate from siblings like xml_import (which can also introduce tags) or xml_tagPageItem, 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?

No guidance on when to use this versus xml_import, xml_tagPageItem, or xml_listTags. It also doesn't state the obvious prerequisite that a document must be open (only implied by the document_id parameter).

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

xml_deleteTagC

Delete an XML tag by name

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It implies a destructive operation via 'Delete', but does not state what happens to tagged content, whether the deletion is permanent or undoable, or what permissions are required.

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 efficiently structured, though its extreme brevity leaves important details to other fields.

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 no annotations and no output schema, the description is insufficient. It omits side effects on tagged content, undo behavior, document targeting, and any safety context an agent would need before invoking it.

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

Parameters2/5

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

The description only says deletion is 'by name', which weakly maps to the required name parameter, but adds no format, constraints, or meaning beyond that. It says nothing about the document_id parameter, and with 50% schema description coverage the description does not compensate for the undocumented name parameter.

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 (Delete) and resource (XML tag) and adds the scope 'by name', so the core action is clear. However, it does not distinguish this tool from sibling tag tools like xml_listTags or xml_addTag, nor does it clarify whether it removes a tag definition or untags content.

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 xml_listTags, xml_addTag, or xml_tagPageItem. No prerequisites, exclusions, or context for when deletion is appropriate are provided.

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

xml_exportC

Export document structure as XML

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not disclose whether filePath is overwritten, whether the document must be open, what XML structure means, or what happens on failure.

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?

A single, front-loaded sentence with no wasted words. Its brevity is appropriate structurally, though the content is under-specified.

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

Completeness2/5

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

For an export tool with no annotations, no output schema, and incomplete parameter documentation, the description is too thin. It omits critical context about file handling, document state requirements, and expected output.

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

Parameters2/5

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

Schema description coverage is only 50%; document_id is documented in the schema, but filePath is not described in either the schema or the description. The description adds no parameter meaning beyond the tool name.

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?

States a specific verb and resource: 'Export document structure as XML'. It is distinguishable from xml_import and xml_listTags, but does not explicitly clarify how it differs from export_document or export_getXmlTags.

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

Usage Guidelines2/5

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

No guidance on when to use this instead of export_document, export_getXmlTags, or xml_import. The agent must infer the appropriate export scenario.

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

xml_importC

Import XML file into the document

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Import' implies a document mutation, but the description does not say whether existing content is replaced or merged, whether it requires an open document, or whether it is reversible/undoable, leaving the risk profile opaque for a write 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?

A single short sentence with no padding, and the action is front-loaded. It is efficient, though it errs toward under-specification rather than tight, complete communication.

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 document-mutating tool with no annotations, no output schema, and half its parameters undocumented, the description leaves major gaps: what import does to existing content, required document state, and the meaning of filePath. It is well short of what an agent would need to call this safely and correctly.

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 coverage is only 50%: document_id is documented in the schema, but filePath has no description at all and the description adds nothing (format, path style, relative vs absolute, accepted extensions). With the schema failing to cover half the parameters, the description does not compensate.

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?

States a specific verb and resource ('Import XML file into the document'), which is meaningful given the many XML-related siblings. However, it does not differentiate itself from xml_export, xml_addTag, xml_listTags, or xml_tagPageItem, so the agent must still infer the boundary from the name alone.

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 guidance, no prerequisites, and no routing to an alternative. The agent is told nothing about when importing XML is the right choice versus xml_export or the tag tools, so usage must be inferred entirely from the name.

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

xml_listTagsC

List all XML tags in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations are absent, so the description carries the full behavioral burden, and it discloses very little. It implies a read-only listing scoped to the active document, but says nothing about return ordering, nesting, or whether an open document is required (only implied by 'active document').

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?

One front-loaded sentence with zero filler. It is efficient, though its brevity is partly under-specification rather than pure economy.

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 no-output-schema read tool, a one-liner is defensible, but with no annotations and no return-format documentation in the schema, the description leaves the agent guessing about what a 'tag' entry contains and how results are ordered.

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

Parameters3/5

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

Schema coverage is 100% and the single document_id parameter is fully documented in the schema, including name/index forms and the front-document default. The description adds no meaning beyond the schema, so baseline 3 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?

Specific verb+resource: 'List all XML tags in the active document.' An agent can distinguish it from sibling mutators like xml_addTag and xml_deleteTag purely by the verb. It doesn't explicitly call out the overlap with export_getXmlTags, but the intent 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?

No when-to-use, when-not-to-use, or alternative routing. Siblings export_getXmlTags and xml_export/export_getXmlTags also surface XML data, yet the description gives no signal about when this listing tool is the right choice over them.

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

xml_tagPageItemC

Apply an XML tag to a page item

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNameYes
itemIndexYes
pageIndexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It does not say whether this mutates and is undoable, whether it replaces an existing tag on the item, whether the tag must be defined first, or whether the document must be open/active — all material for a mutation tool.

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

Conciseness3/5

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

A single front-loaded sentence with no wasted words, but the brevity reflects under-specification rather than disciplined economy — the tool needs more context than seven words can carry.

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?

A mutation tool with no annotations, no output schema, and three undocumented required parameters requires a much richer description. Missing are the target document default, tag-precondition, mutation/reversibility semantics, and any error conditions.

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

Parameters2/5

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

Schema description coverage is only 25% (only document_id is documented), so the description should compensate but does not. It never mentions tagName, pageIndex, itemIndex formats, or how the default document is resolved, adding essentially nothing beyond the schema's type constraints.

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?

States a specific verb+resource (apply an XML tag to a page item), which is clear and differentiable in spirit from siblings like xml_addTag (defining a tag) and xml_listTags. It does not, however, explicitly contrast itself with those siblings, so an agent must infer the 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, no prerequisites, and no named alternatives. An agent is left to guess whether the tag must already exist (via xml_addTag) or whether this is the right tool versus xml_import/xml_export.

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

xref_createC

Create a cross-reference in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceTextYes
targetNameYes
targetTypeYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
appliedFormatNoFull Paragraph & Page Number

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, and it discloses almost nothing: 'Create' implies mutation but there is no mention of permissions, undo impact, whether the target must already exist, or what happens on a missing source/target name. Only the 'active document' scoping is conveyed, which is thin for a write 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?

A single clean, front-loaded sentence with no filler, but its brevity reflects under-specification rather than disciplined economy – useful clauses about the target and format are simply absent.

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 5-parameter mutation tool with no annotations, no output schema, and a 20%-covered schema, the description is far too thin. An agent cannot reliably call it without inferring how source text maps to target type/name or what the format parameter accepts.

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

Parameters2/5

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

Schema description coverage is only 20% (document_id is the lone documented parameter), so the description must compensate for sourceText, targetType, targetName, and appliedFormat. It adds nothing – no explanation of what sourceText anchors, what the enum target types mean, or what the default format string does.

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?

States a specific verb ('Create') and resource ('cross-reference') plus the scope ('active document'), so an agent understands the operation. However, it never distinguishes itself from sibling xref_list or xref_updateFormat, so the agent gets no help choosing among related xref 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?

No guidance on when to use this versus xref_list/xref_updateFormat, nor prerequisites such as needing an open document or an existing target. The agent is left to infer both context and ordering from the name alone.

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

xref_listB

List all cross-references in the active document

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, but it discloses nothing beyond the read operation: no information on whether unresolved/broken cross-references are included, whether the result covers only the active document's story, or any rate/size considerations.

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 the verb and scope stated immediately and zero filler. Nothing could be removed without losing meaning.

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 one-optional-parameter list tool with no output schema, the description is largely adequate, but with no annotations and no output schema the agent learns nothing about the shape of the returned list (names vs. IDs vs. resolved text) or about the 'active' vs. schema's 'front' document wording.

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 100%, so the schema already explains the single optional document_id parameter, including its name-or-index format and front-document default. The description's phrase 'active document' loosely echoes that default but adds no syntax or format detail beyond the schema.

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

Purpose4/5

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

States a specific verb (List) and resource (cross-references) bounded to the active document, which cleanly separates it from xref_create and xref_updateFormat. It stops short of explicitly naming those siblings, so it is clear but not maximally differentiating.

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 only implies when to use it via the verb 'List'; there is no guidance about when to reach for xref_create or xref_updateFormat instead, and no prerequisites or scope caveats are given.

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

xref_updateFormatC

Update the format of a cross-reference

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYes
document_idNoWhich open document to act on: a name (see document_listOpen) or a 0-based index. Defaults to the front document.
appliedFormatYes

TDQS

C2.4/5.0
Behavior2/5

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

There are no annotations, so the description carries the full behavioral burden, and it discloses almost nothing. It does not state whether the change is global (affecting every xref of that style) or per-instance, whether it is reversible, what permissions are needed, or what happens on an invalid format value.

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?

It is a single front-loaded sentence with no wasted words. But the brevity reflects under-specification rather than tight editing — the sentence conveys almost no information beyond the tool name, so there is little content to be concise about.

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 no annotations, no output schema, and a partially undocumented schema, this description is far too thin. An agent cannot determine which reference is targeted, what a valid format is, or what side effects to expect before invoking it.

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

Parameters2/5

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

Schema description coverage is only 33%: 'index' and 'appliedFormat' are bare names with no schema description, and only 'document_id' is documented. The description adds no meaning for any parameter, and in particular never explains what valid values 'appliedFormat' accepts or how 'index' identifies the target reference, leaving the two required parameters opaque.

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?

It names a verb and a resource ('Update the format of a cross-reference') and is distinguishable from xref_create/xref_list siblings. However, 'the format' is ambiguous: it is not clear whether this edits a cross-reference format definition or the applied format on one existing reference (the schema's 'appliedFormat' suggests the latter). The core action is stated but under-specified.

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

Usage Guidelines2/5

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

No guidance on when to use this versus alternatives. The presence of xref_create and xref_list as siblings, plus format-oriented siblings like style_listCharacter, makes the intended context entirely a matter of inference. No prerequisites or exclusions are given.

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

Tool Schema Changelog

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

  1. 197 tool updatesv1.6.1
    • First observedanchoredObject_create
    • First observedanchoredObject_getSettings
    • First observedanchoredObject_release
    • First observedanchoredObject_setPosition
    • First observedanchoredObject_setProperties
    • First observedbook_getDocuments
    • First observedbook_list
    • First observedbook_open
    • First observedbook_synchronize
    • First observedcellStyle_create
    • First observedcellStyle_list
    • First observedchanges_getStatus
    • First observedcolor_apply
    • First observedcolor_gradient_create
    • First observedcolor_ink_list
    • First observedcolor_swatch_create
    • First observedcolor_swatch_delete
    • First observedcolor_swatch_list
    • First observeddataMerge_export
    • First observeddataMerge_listFields
    • First observeddataMerge_mergeRecords
    • First observeddataMerge_removeDataSource
    • First observeddataMerge_selectDataSource
    • First observeddocument_close
    • First observeddocument_create
    • First observeddocument_getInfo
    • First observeddocument_getPageStories
    • First observeddocument_getState
    • First observeddocument_getStoryPages
    • First observeddocument_listOpen
    • First observeddocument_open
    • First observeddocument_save
    • First observedeffect_applyDropShadow
    • First observedeffect_applyFeather
    • First observedeffect_applyGradientFeather
    • First observedeffect_applyTransparency
    • First observedexport_batchFolder
    • First observedexport_document
    • First observedexport_executeScript
    • First observedexport_getFonts
    • First observedexport_getMasterSpreads
    • First observedexport_getSwatches
    • First observedexport_getTables
    • First observedexport_getXmlTags
    • First observedexport_preflight
    • First observedfont_change
    • First observedfont_find
    • First observedfont_glyph_insert
    • First observedfont_list
    • First observedfont_missing_check
    • First observedgrep_find
    • First observedgrep_findFormat
    • First observedgrep_replace
    • First observedgrep_replaceFormat
    • First observedgroup_list
    • First observedgroup_ungroup
    • First observedimage_adjust
    • First observedimage_fit
    • First observedimage_getLinks
    • First observedimage_info
    • First observedimage_list
    • First observedimage_place
    • First observedimage_relink
    • First observedindex_addEntry
    • First observedindex_createTopic
    • First observedindex_generate
    • First observedindex_listTopics
    • First observedinteractive_addHyperlink
    • First observedinteractive_deleteHyperlink
    • First observedinteractive_listAnchors
    • First observedinteractive_listButtons
    • First observedinteractive_listHyperlinks
    • First observedlayer_create
    • First observedlayer_delete
    • First observedlayer_list
    • First observedlayer_reorder
    • First observedlayer_setProperties
    • First observedlist_applyToParagraph
    • First observedlist_applyToSelection
    • First observedlist_define
    • First observedlist_list
    • First observedlist_removeFromParagraph
    • First observedlist_restartNumbering
    • First observedmaster_apply
    • First observedmaster_create
    • First observedmaster_delete
    • First observedmaster_duplicate
    • First observedmaster_getPages
    • First observedmaster_list
    • First observednote_addEndnote
    • First observednote_addFootnote
    • First observednote_footnoteOptions
    • First observednote_listFootnotes
    • First observedpage_add
    • First observedpage_applyMaster
    • First observedpage_delete
    • First observedpage_duplicate
    • First observedpage_getInfo
    • First observedpage_listAll
    • First observedpage_move
    • First observedpreview_document
    • First observedrecipe_exportPreset
    • First observedrecipe_flowTextStory
    • First observedredo
    • First observedresources_embedLink
    • First observedresources_getLinkInfo
    • First observedresources_listLinks
    • First observedresources_unembedLink
    • First observedresources_updateAllLinks
    • First observedresources_updateLink
    • First observedscript_run
    • First observedsection_create
    • First observedsection_delete
    • First observedsection_list
    • First observedsection_setNumbering
    • First observedshape_create
    • First observedshape_delete
    • First observedshape_ellipse_create
    • First observedshape_line_create
    • First observedshape_list
    • First observedshape_modify
    • First observedshape_polygon_create
    • First observedshape_rectangle_create
    • First observedstyle_createCharacter
    • First observedstyle_createParagraph
    • First observedstyle_delete
    • First observedstyle_duplicate
    • First observedstyle_listCharacter
    • First observedstyle_listObject
    • First observedstyle_listParagraph
    • First observedtable_addColumn
    • First observedtable_addRow
    • First observedtable_create
    • First observedtable_deleteColumn
    • First observedtable_deleteRow
    • First observedtable_getInfo
    • First observedtable_list
    • First observedtable_mergeCells
    • First observedtable_setCell
    • First observedtable_setCellAlignment
    • First observedtable_setCellFill
    • First observedtable_setCellInset
    • First observedtable_setCellStroke
    • First observedtable_setHeaderFooter
    • First observedtable_setRowColumnSize
    • First observedtable_splitCell
    • First observedtableStyle_create
    • First observedtableStyle_list
    • First observedtext_addFrame
    • First observedtext_applyCharStyle
    • First observedtext_applyFont
    • First observedtext_applyParagraphStyle
    • First observedtext_findReplace
    • First observedtext_getContent
    • First observedtext_getFormatting
    • First observedtext_getStories
    • First observedtext_getTextFrames
    • First observedtext_linkFrames
    • First observedtext_search
    • First observedtext_searchFormatting
    • First observedtext_setAutoSize
    • First observedtext_setColumns
    • First observedtext_setContent
    • First observedtext_setDropCap
    • First observedtext_setFirstBaseline
    • First observedtext_setHyphenation
    • First observedtext_setIgnoreWrap
    • First observedtext_setInsetSpacing
    • First observedtext_setKeepOptions
    • First observedtext_setParagraphRuleAbove
    • First observedtext_setParagraphRuleBelow
    • First observedtext_setTabs
    • First observedtext_setTextWrap
    • First observedtext_setVerticalJustification
    • First observedtext_unlinkFrames
    • First observedtoc_createStyle
    • First observedtoc_generate
    • First observedtoc_listStyles
    • First observedtoc_update
    • First observedtransform_align
    • First observedtransform_distribute
    • First observedtransform_flip
    • First observedtransform_rotate
    • First observedtransform_scale
    • First observedundo
    • First observedundo_beginGroup
    • First observedundo_endGroup
    • First observedundo_history
    • First observedxml_addTag
    • First observedxml_deleteTag
    • First observedxml_export
    • First observedxml_import
    • First observedxml_listTags
    • First observedxml_tagPageItem
    • First observedxref_create
    • First observedxref_list
    • First observedxref_updateFormat

TDQS

C2.2/5.0

Scored across 197 tools

Disambiguation1/5

Many tools duplicate one another (export_executeScript/script_run, page_applyMaster/master_apply, table_list/export_getTables, font_list/export_getFonts), making selection ambiguous. Although some descriptions clarify intent, the sheer overlap forces agents to guess.

Naming Consistency2/5

Names mix noun_verb and verb_noun patterns (page_add vs export_document) and use inconsistent camelCase (document_getStoryPages) alongside snake_case. Prefixes vary by domain (table_ vs tableStyle_, font_missing_check), preventing a predictable convention.

Tool Count1/5

197 tools is far beyond the 50+ threshold for extreme mismatch, even for a feature-rich domain like InDesign automation. Many tools exist only to duplicate or wrap others, bloating the surface unnecessarily.

Completeness4/5

The surface covers most InDesign operations—documents, pages, text, tables, images, styles, export, data merge, scripts—with few obvious gaps. Missing a group_create and book_create/book_close prevents a perfect score, but core workflows are workable.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    B
    maintenance
    Enables AI assistants to automate Adobe InDesign publishing workflows, including document creation, text formatting, image placement, PDF export, and more via 35+ professional tools.
    36
    69 npm
    58
    MIT
  • A
    license
    C
    quality
    B
    maintenance
    A Model Context Protocol (MCP) server that gives AI assistants direct, native control over Adobe InDesign via a UXP plugin bridge, with ~130 tools covering documents, pages, text, graphics, styles, master spreads, books, and export.
    100
    69 npm
    108
    MIT