Skip to main content
Glama
Txpple

fvtt-mcp-molten5e

by Txpple

fvtt-mcp-molten5e

A D&D 5e–only, Molten Hosting–optimized Model Context Protocol server for Foundry VTT, driven by Claude Code. It lets an AI GM assistant read and edit a live Foundry world (actors, items, journals, scenes, compendia, roll tables, cards…) and manage a Molten-hosted server's static files.

Paired with its bundled skills, it goes well beyond CRUD: it can author a complete, table-ready adventure end to end — scene, monsters, NPCs, a pregen PC or party, treasure, linked journals, and roll tables — scaled to however much the DM provides. Hand it only a map image and Claude reads the map and builds the whole module; hand it your own finished module and it faithfully recreates every stat block, item, and handout in the VTT.

An importer worth calling out:

  • Adventure map packs → your world. Import a battlemap module (a distributed Foundry scene-pack with its own compendiums) faithfully: every scene with its walls, lights, day/night mood, and navigation thumbnails, plus the journal of map keys — with all assets re-pointed into your world, and cross-version (older and newer Foundry formats) handled. Tom Cartos packs are the first supported format; more to come.


📐 Design north star — design.md. The mission, scope, the skills decide, tools do contract, and the NPC authoring doctrine all live there; it's the document every skill, tool, and refactor traces back to. 🚧 Still under construction — actively evolving alongside the project, so expect it (and the tool surface) to change.

Why this shape

Managed Foundry hosts (like Molten) don't expose a general control API and you can't run a process next to the game server. The only supported way in is Foundry's own authenticated client.

So the MCP server drives a headless Chromium client (via Playwright): it wakes the (sleeping) Molten box with the Magic URL, joins the world as a dedicated Foundry user, waits for game.ready, and injects a page-side library that exposes the world's own client APIs. Claude Code talks to the MCP server over stdio; the server turns each tool call into a call inside that live page.

Claude Code  ──stdio──>  MCP server  (dist/index.js, on your PC)
                              │  Playwright → headless Chromium (src/foundry.ts)
                              ▼
                    Headless Foundry client
                    (wakes the box, joins the live world as a dedicated GM user)
                              │  the world's own client APIs (window.__fvtt)
                              ▼
                    Foundry VTT world (Molten-hosted)

The headless client connects lazily: tools/list answers without touching Foundry, and the first actual tool call is what wakes the box and joins the world. The whole tool tree depends on one seam — foundry.call(name, args) — and only src/foundry.ts ever imports Playwright.

Two-plane model

  • Plane A — the live bridge. World documents (actors, items, journals, scenes, compendia, roll tables, cards, ownership). Goes through the headless Foundry client while the server is awake — the only safe way to read/write live world data.

  • Plane B — Molten files. Talks to Molten's own file endpoints directly (no bridge): upload/serve static assets over WebDAV and map Data/-relative paths to public URLs.

Safety rule baked in: a running world's database (LevelDB stores under Data/worlds/<world>/data/) must never be written over the file channel — that corrupts it. Plane-B file ops are restricted to static assets and refuse world-DB paths; bulk DB edits are an offline-only flow (stop → Create Backup → fvtt unpack → edit → fvtt pack → start, via foundryvtt-cli). The Molten management panel is never scripted (their ToU forbids it); only the Magic-URL wake, WebDAV, and the Foundry server are automated.

Related MCP server: Foundry VTT MCP Bridge

Scope

In scope: actors — both NPCs and full leveled PCs — items, journals, scenes (the scene document and its placeables — walls, lights, tokens, regions/teleporters, ambient sounds, tiles, drawings, map notes), playlists, roll tables, cards, macros, combat-tracker config, compendium manipulation — especially pulling content out ("make an actor from the MM owlbear") — and asset upload. With the bundled skills these compose into end-to-end adventures — from reading a provided map image to drive a scene and everything in it, to importing a distributed battlemap module (e.g. Tom Cartos scene-packs) faithfully into your world. Authoring prefers the 2024 dnd5e data model, sourced from PHB / DMG / MM; if the requested content isn't in those packs the tool says so rather than inventing it.

Out of scope (for now): non-5e game systems; live session assistance — monitoring a running game and interjecting during play (live chat, running the monsters' combat turns) is the next phase (see design.md §8), not built yet; AI map-image generation (Claude reads a provided map, it does not draw one); scripting the Molten management panel. (Scene placeables — walls, lights, tokens, regions — are authored and edited as scene contents; what's out of scope is driving them live on the canvas during a running session.)

Removed deliberately: D&D Beyond import. DDB character exports strip the embedded effect automation the premium compendium items carry, so an imported PC looks right and silently fails at the table. Ask for the character instead and it's built natively from the premium books, using the DDB sheet only as a reading reference.


Repository layout

src/
  index.ts          MCP server entry (stdio) — serves the registry's tools over JSON-RPC
  registry.ts       single source of truth: tool name → handler (advertised list derived from it)
  foundry.ts        THE Playwright seam: launch headless Chromium → wake → join → inject → call()
  config.ts         env/config loader (reads .env from the repo root)
  tools/            MCP tool classes — Plane A world tools + molten/ (Plane B WebDAV file tools)
  page/             page-side domain library, bundled into dist/page.bundle.js and injected
scripts/            dev/maintenance scripts (verify-*.mjs live acceptance, spike-headless)
tests/              gated live integration suites (offline unit tests live beside the code in src/**)

Requirements

  • Node.js 22+ (developed/tested on Node 24; see .nvmrc; CI runs 22 + 24). On Windows, if Node isn't on PATH, use the full path to node.exe (see wiring below).

  • A Chromium for Playwrightnpx playwright install chromium (Playwright is a devDependency; the headless bridge drives this browser).

  • Foundry VTT 14.x with the D&D 5e system, hosted on Molten, plus a dedicated passwordless Foundry user for the MCP to join as.

Build

npm install
npx playwright install chromium   # one-time: the headless browser the bridge drives
npm run build                     # tsc → dist/, then esbuild bundles the in-page library

npm run build runs tsc && node esbuild.page.mjs: TypeScript compiles src/** to dist/, then esbuild bundles the page-side library (src/page/**) into dist/page.bundle.js for injection. Tests: npm test (offline unit suite on vitest). Live integration suites are gated — see vitest.integration.config.ts and npm run test:integration.

Dev watch: npm run dev rebuilds the page bundle once, then runs tsc --watch for src/**. Because the page library is a separate esbuild artifact, editing anything under src/page/** while developing needs npm run dev:page (esbuild --watch) alongside it — otherwise the running server keeps injecting the stale dist/page.bundle.js.

Wire into Claude Code

Register the built MCP server in your Claude Code config. Copy .mcp.json.example to a .mcp.json Claude Code reads (project-scoped, or your ~/.claude.json mcpServers) and set absolute paths:

{
  "mcpServers": {
    "foundry-molten5e": {
      "command": "C:/Program Files/nodejs/node.exe",
      "args": ["C:/path/to/fvtt-mcp-molten5e/dist/index.js"]
    }
  }
}
  • Use an absolute path to the root dist/index.js (Claude Code may launch the server from any directory).

  • On Windows, point command at the full node.exe path if Node isn't on PATH.

  • The server loads its .env from the repo root regardless of working directory.

  • The headless client connects lazily — the first tool call wakes the Molten box and joins the world, so the initial call after a cold box can take a while.

Configuration

Copy .env.example to .env (gitignored) and fill in your instance:

  • Non-secret, per-instance: MOLTEN_SERVER_URL, MOLTEN_WORLD_ID, MOLTEN_WEBDAV_URL, MOLTEN_FILEBROWSER_URL, FOUNDRY_USER (the dedicated passwordless user to join as; defaults to MCP-Claude). The committed defaults are neutral your-server/your-world placeholders.

  • Wake (optional but recommended): MOLTEN_MAGIC_URL — Molten's "Server Startup / Magic URL" (…?s=token), GET to wake a sleeping box before joining.

  • Secrets (never commit — env only): MOLTEN_WEBDAV_PASSWORD (upload-asset / asset file ops), MOLTEN_ADMIN_KEY. Read them from your Molten panel → Server Details. Each tool reports which variable to set if its secret is missing.

Tools

149 tools total: 139 over the headless bridge (Plane A) + 10 Molten WebDAV file tools (Plane B).

Plane A (bridge) covers world introspection and editing — actors, items, compendium search, journals & quests, scenes and their placeables (walls, lights, tokens, regions/teleporters, ambient sounds, tiles, drawings, notes), who-sees-what routing (the one active scene, pulling connected users to a side scene, and per-user landing scenes for where players come up at login — core Foundry has no such thing, so set-landing-scene writes a flag the companion fvtt-mod-openserver module acts on, and warns when that module is absent rather than claiming success), roll tables, cards, playlists, per-scene atmospheric sound sets (configure-soundscape, for the companion fvtt-mod-soundscape module — randomized one-shots with silence between them, or crossfaded ambient beds, which neither AmbientSound placeables nor Playlists can express), ownership, folders/organization, macros, combat-tracker config, and 5e-specific helpers (NPC creation, PC building & leveling, feature/spell granting, structured inventory/loot authoring), full-fidelity actor JSON export (export-actor), and per-combat session analytics (get-combat-stats, folded from the companion fvtt-mod-battleflow module's stat stamps), plus the asset-composition + reference-integrity tools. Plane B (Molten WebDAV) is the asset file library.

Plane B — Molten file tools (WebDAV):

Tool

What it does

list-assets

List a directory under Data/ (folders + files, with size/type/public URL)

asset-info

Existence + size/type/mtime/public URL for one path under Data/

download-asset

Download a file from under Data/ to a local path

upload-asset

Upload a local file under Data/ (auto-creates parents; refuses world-DB paths)

upload-asset-tree

Recursively upload a local directory tree under Data/ (preserves layout)

create-asset-folder

Create a folder (and missing parents) under Data/ (idempotent)

delete-asset

Delete a file (reference-aware; refuses if still used unless force)

move-asset

Move/rename a file (refuses or relinks references; relink/force)

copy-asset

Copy a file under Data/

asset-url

Map a Data/-relative path to its public HTTPS URL (pure, no network)

Plane A — asset composition + reference integrity (bridge):

Tool

What it does

find-asset-references

Find every scene/actor/journal/playlist/… that references an asset path

relink-asset

Rewrite all references from one asset path to another (dryRun supported)

create-playlist

Create a Playlist from sound paths (the flagship "upload → playlist" wiring)

create-scene

Create a Scene from a background image path

update-scene

Update a scene's fields, including swapping its background image

set-actor-art

Set an actor's portrait (+ prototype token) from an image path

add-journal-image

Append an image page to a journal entry

The remaining Plane A tools cover world CRUD (create-actor-from-compendium/author-npc, add-feature (features / compendium features / spells), import-item (copy a real PHB/DMG item — art + stats — onto an actor or the sidebar), add-item (author structured weapons/armor/consumables/loot/containers), create-item, create-journal/create-quest-journal, create-rolltable, create-cards, …), listing/search (list-actors, search-compendium, list-journals, …), and organization (create-folder, move-documents, bulk-delete). See the handlers map in src/registry.ts for the full dispatch table.

Plane B file ops run over WebDAV (need MOLTEN_WEBDAV_PASSWORD, work whenever the VM is awake). Plane A tools run over the headless bridge (need the world joined). Write tools refuse live world-DB paths; destructive file ops consult find-asset-references first.

Security

  • Outbound-only, nothing public. The server and the headless browser run on your machine and make only outbound connections (to Foundry on Molten, and to Anthropic); nothing listens for inbound traffic, and the headless client authenticates to Foundry exactly as a normal user would.

  • Secrets stay in .env (gitignored), with tight file perms — never commit MOLTEN_WEBDAV_PASSWORD, MOLTEN_ADMIN_KEY, or your Claude token. Errors name the missing variable, never its value.

  • Treat all agent inputs as untrusted (chat, transcripts, web) — prompt-injection can ride in. Plane-A writes are inherently safe because they go through Foundry's own client APIs; Plane-B destructive file ops are reference-aware, refuse live world-DB paths (canonicalized, ..-rejecting), and deletes resolve strictly (exact id/name, no fuzzy match).

  • Anything under Data/ is served publicly over HTTPS with no auth — don't upload anything sensitive.

Contributing

The project is one package: a Node-side MCP server (src/) that drives a headless Foundry page through the foundry.call(name, args) seam, plus a page-side library (src/page/**, bundled into dist/page.bundle.js and injected as window.__fvtt). Adding a tool touches both halves:

  1. MCP tool class (src/tools/<category>.ts) — declare the input contract once as a hoisted zod schema; getToolDefinitions() returns { name, description, inputSchema: toInputSchema(schema) } (the advertised JSON Schema is generated from that zod via src/utils/schema.ts — never hand-written), plus a handleX(args) that schema.parsees and calls foundry.call('<op>', data).

  2. Register it (src/registry.ts) — instantiate the class, add its getToolDefinitions() to the collected definitions, and add a '<tool-name>': args => tool.handleX(args) entry to the handlers map. The advertised tool list is derived from handlers, so a handler with no matching definition fails loudly at startup (src/tools/registry.test.ts guards the surface).

  3. Page-side op (src/page/<domain>.ts) — implement <op>(args) and register it in src/page/index.ts. This runs inside the live Foundry page (the actual Document.create / update / delete): import only browser + Foundry globals here, never Node/Playwright.

  4. Build + verifynpm run build, then npm test, npm run typecheck, npm run knip, and biome (npm run check). For live changes, npm run test:integration against a real world.


Support

Issues: GitHub Issues

Acknowledgments

Used as a reference: adambdooley/foundry-vtt-mcp by Adam Dooley.

License

MIT License — see LICENSE for details.

Available Tools

130 tools
add-featureA

Add a feature/spell/ability to an existing actor (NPC or PC). Set mode: • 'compendium-features' — import named class/monster features from an official compendium (PREFERRED for official content, e.g. Pack Tactics, Multiattack, Spellcasting). Params under compendiumFeatures. • 'feature' — author a feature/attack/spellcasting setup/spells from scratch (use only when not available in a compendium). Params under feature (select feature.featureType). • 'items' — attach world items by raw data. For real GEAR prefer import-item (copy from a compendium, keeps art+stats) or add-item (author); use this mode only for free-form item data. Params under items[]. actorIdentifier (exact name or ID) is always required — find it with list-actors / get-actor.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYesWhich granting path to use. 'compendium-features' (preferred) imports named features from a pack; 'feature' authors one from scratch; 'items' attaches world items.
itemsNoWorld items to attach when mode='items'. Each needs a name and a valid dnd5e item type (e.g. 'weapon', 'equipment', 'consumable', 'feat'); pass system-specific data via system.
featureNoParameters when mode='feature' — author a feature/attack/spellcasting/spells. Select feature.featureType; actorIdentifier is taken from the top level.
actorIdentifierYesTarget actor (exact name or ID).
compendiumFeaturesNoParameters when mode='compendium-features' — import named features from a compendium pack. actorIdentifier is taken from the top level.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description details additive behavior for each mode, includes caveats about unresolvedScale tokens in compendium imports and sourcing restrictions, though it could mention permanent data modification more explicitly.

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?

Well-structured with bullet points for modes, front-loads core purpose, but is somewhat lengthy due to complexity; could be slightly more concise without losing essential guidance.

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

Completeness5/5

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

Given the complexity (three modes, many parameters, no output schema), the description covers all necessary aspects including mode selection, parameter usage, sourcing rules, and caveats like unresolvedScale, making it comprehensive.

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

Parameters3/5

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

Schema coverage is 100% with detailed property descriptions; the description adds high-level organization and usage context but does not significantly enhance parameter meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the tool adds features/spells/abilities to actors, outlines three distinct modes with clear explanations, and differentiates from sibling tools like add-item and import-item by explicitly recommending their use for gear.

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

Usage Guidelines5/5

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

Provides explicit guidance on when to use each mode (compendium-features preferred for official content, feature for custom authoring, items only for free-form data) and references sibling tools for gear, along with instructions to find actorIdentifier using list-actors/get-actor.

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

add-itemA

[D&D 5e only] Create a structured physical item (loot/gear) on an actor or in the world Items sidebar. Pick itemType, then supply only the fields you need — sensible defaults fill the rest:

• weapon — to-hit weapon. damage (base die), weaponClass, attackType, reach/range, magicalBonus, properties. Builds a rollable attack activity by default (withAttack). • armor / shield — armorValue, dex, strength; magicalBonus = +N AC. Pass wireAc (BODY ARMOR only) to make the actor derive AC from the worn armor; a shield needs no wireAc (its +2 applies under any AC calc). • wondrous — rings/cloaks/etc. (equipmentType); use magical:true + attunement (a wondrous item has no numeric +N field — model a bonus with manage-effect). • consumable — potion/scroll/ammo/wand. consumableType, uses {max, recovery, autoDestroy}. Ammo can carry damage + ammoReplace + magicalBonus. • tool — toolType, ability, proficient, toolBonus. • loot — gems/art/trade goods (lootType, price). NOT equippable/attunable. • container — bag/chest with capacity and an inner currency pile. Place items inside any container with the container param (id or name).

Cross-cutting: price, weight, quantity, rarity, identified, equipped, attunement (""/required/optional) + attuned, magicalBonus (the +N), properties (incl. "mgc"). Setting magicalBonus/magical adds the mgc flag; the numeric +N is stored for weapons, body armor, and magic ammo (wondrous/potion have no +N field). Unlike add-feature, add-item does NOT reject a duplicate name — intentional, so you can author stacks/copies; de-dupe yourself if you need uniqueness.

Target: actorIdentifier embeds on that actor; omit it to create a reusable world Item (optionally in folder). This authors documents — it does NOT roll, equip-in-combat, or spend charges. For features/attacks-as-abilities use add-feature; for free-form system data use create-item / add-feature. To COPY a real item from a compendium (keeps art + stats), prefer import-item.

ParametersJSON Schema
NameRequiredDescriptionDefault
dexNo[armor] Max Dex bonus to AC (omit = unlimited/light; 2 = medium; 0 = heavy).
imgNoIcon path (e.g. "icons/weapons/swords/sword-runed.webp"). A path that does NOT resolve on the server is auto-replaced with a real icon (rule 8) and reported as a warning — omit img to auto-fill, or copy a verified path from a compendium item rather than guessing.
nameYesItem name.
usesNo[consumable] Limited uses / charges.
priceNoItem price.
damageNo[weapon] Base damage die. [consumable ammo] Added damage.
folderNoWhen creating a world Item (no actorIdentifier), place it in this folder (created if absent).
rarityNoMagic-item rarity ("" = mundane).
weightNoItem weight.
wireAcNo[body armor, actor target only] Also switch the actor to default (armor-derived) AC so worn armor changes AC. Ignored for shields (their +2 always applies) and for world items.
abilityNo[tool] Default ability for the tool check.
attunedNoWhether this item is currently attuned by its owner.
magicalNoFlag the item as magical (adds the "mgc" property). Implied when magicalBonus is set.
rangeFtNo[weapon, ranged] Normal range in feet.
reachFtNo[weapon, melee] Reach in feet. Default 5.
subtypeNo[consumable/loot] Finer subtype (e.g. ammo "arrow").
baseItemNo[weapon/armor/tool] Specific base-item key (e.g. "longsword", "plate", "smith").
capacityNo[container] Carrying capacity.
currencyNo[container] Coins stored inside the container.
equippedNoWhether worn/wielded (default true for an NPC). Set false for stowed loot.
itemTypeYesKind of physical item. weapon; armor/shield/wondrous (all dnd5e "equipment"); consumable (potion/scroll/ammo/…); tool; loot (gems/trade goods/junk); container (bag/chest).
lootCopyNo[actor target] Also mint a matching WORLD Item (same stats + icon) so the party can loot this gear after the fight. DEFAULT ON for magic items (rarity set, "mgc", or a +N); pass false to suppress, or true to force a loot copy of a mundane item too. Ignored for a world-item target.
lootTypeNo[loot] Loot category. Default "gear".
quantityNoStack count (e.g. 20 arrows). Default 1.
strengthNo[armor] Min Strength to wear without a speed penalty.
toolTypeNo[tool] Category key (art/game/music/…).
armorTypeNo[armor] Armor weight class. Default "medium".
containerNoId or name of an EXISTING container item on the same target to place this item inside.
toolBonusNo[tool] Flat bonus formula added to the check.
versatileNo[weapon] Two-handed (versatile) damage (needs the "ver" property).
armorValueNo[armor] Base AC (shield = AC bonus, default 2).
attackTypeNo[weapon] Attack kind. Default "melee".
attunementNoAttunement requirement: "" none, required, or optional.
identifiedNoWhether the item is identified (default true). Set false for mystery loot.
proficientNo[weapon/armor/tool] Proficiency (weapon/armor 0|1; tool 0|0.5|1|2). Omit to infer.
propertiesNoProperty codes Set (e.g. ["fin","lgt"]). Weapon codes: ada,amm,fin,fir,foc,hvy,lgt,lod,mgc,rch,rel,ret,sil,spc,thr,two,ver. "mgc" marks magical.
withAttackNo[weapon] Attach a rollable attack activity built from damage + attackType (default: true when damage is given). Set false for a weapon that is pure loot with no attack.
ammoReplaceNo[consumable ammo] If true, ammo damage replaces the weapon base instead of adding.
attackBonusNo[weapon] Flat bonus to the attack roll only (separate from magicalBonus).
descriptionNoHTML description.
longRangeFtNo[weapon, ranged] Long (disadvantage) range.
sourceRulesNo[weapon] Rules edition for the attack activity. Default "2024" (pass "2014" for legacy).2024
weaponClassNo[weapon] Category. "natural" for monster attacks. Default "natural".
magicalBonusNoNumeric +N magic bonus (to attack & damage for weapons, to AC for armor).
equipmentTypeNo[wondrous] Equipment subtype (clothing/trinket/ring/rod/wand/…). Default "trinket".
consumableTypeNo[consumable] Category. Default "potion".
lootCopyFolderNoFolder for the loot copy (created if absent). Default "Loot".
abilityModifierNo[weapon, 2024] Attack/damage ability override.
actorIdentifierNoTarget actor (name or id) to attach the item to (partial match). Also accepts a placed TOKEN id (from list-tokens) — the item is then added to that token INSTANCE's own delta, not the base actor. Omit to create a reusable world Item in the Items sidebar instead.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses that the tool authors documents, does not roll/equip/spend charges, and intentionally allows duplicate names for stacks. It also mentions auto-replacement of invalid icon paths. However, it does not explicitly state required permissions or side effects like triggering updates.

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

Conciseness4/5

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

The description is long but well-organized with bullet points for item types and front-loaded purpose. Every sentence adds value, and the structure aids readability. Minor length justified by complexity.

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

Completeness4/5

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

Given the complexity (49 params, nested objects, many item types), the description is thorough. It explains each item type's fields, cross-cutting details, and distinguishes from siblings. However, it does not describe the return value (e.g., created item id), which is a minor gap 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 coverage is 100% with descriptions for all parameters. The description adds high-level context about item types and cross-cutting fields but does not significantly augment individual parameter meanings beyond what the schema provides. 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?

The description clearly states the tool creates a structured physical item (loot/gear) on an actor or in the world Items sidebar, specifies it's for D&D 5e only, and distinguishes from siblings like add-feature and import-item by noting specific use cases.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool versus alternatives (add-feature for features/attacks-as-abilities, import-item for copying from compendium), and states what the tool does not do (no rolling, equipping, or spending charges). It also gives context for each itemType and cross-cutting behaviors.

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

add-journal-imageA

Composition. Append an image page to a journal entry from a Data-relative image path, with an optional caption. GM-only by default; set playerVisible to expose it as a handout.

ParametersJSON Schema
NameRequiredDescriptionDefault
captionNoOptional image caption.
pageNameNoPage title (defaults to the file name).
imagePathYesData-relative path to the image.
playerVisibleNoIf true, players can OBSERVE this image page (a handout). Default: GM-only.
journalIdentifierYesJournal id or exact name.

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 full burden. It discloses the default GM-only visibility and how to make it a handout, but does not explain error handling, return value, or side effects like image validation.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the action, and contains no fluff. Every sentence adds value.

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

Completeness3/5

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

Without an output schema, the description should ideally mention return value or success confirmation. It does not. Given moderate complexity and good schema descriptions, the description is minimally complete but lacks closure on what the agent can expect back.

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%, baseline 3. The description adds context like 'Data-relative path' and 'defaults to file name' but largely duplicates schema descriptions. It does not significantly enhance parameter understanding beyond the schema.

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

Purpose5/5

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

The description clearly states the tool appends an image page to a journal entry, specifies the input (Data-relative image path) and optional caption, and distinguishes from siblings like create-journal or update-journal.

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

Usage Guidelines3/5

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

The description implies usage (append image to existing journal) and mentions GM-only vs. player-visible as a key consideration. However, it does not explicitly state when to prefer this over alternatives or what prerequisites exist (e.g., journal must exist).

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

apply-conditionA

[D&D 5e only] Apply or remove one or more conditions on an actor (blinded, frightened, grappled, poisoned, prone, restrained, stunned, unconscious, exhaustion, ...). Set active=false to remove. Exhaustion is leveled — pass exhaustionLevel (1-6; 0 removes). This authors condition state on a creature; it is NOT a combat-automation loop (no duration countdown / save-ends handling). Use list-actors or get-actor to find the actorIdentifier.

ParametersJSON Schema
NameRequiredDescriptionDefault
activeNotrue applies the conditions (default); false removes them.
conditionsYesCondition ids to toggle: blinded, charmed, deafened, frightened, grappled, incapacitated, invisible, paralyzed, petrified, poisoned, prone, restrained, stunned, unconscious, exhaustion, and the other dnd5e conditionTypes/statusEffects.
actorIdentifierYesName or id of the actor (partial name match supported). Also accepts a placed TOKEN id (from list-tokens) — the condition then applies to that token INSTANCE only, not the base actor.
exhaustionLevelNoExhaustion level 1-6 (0 removes it). Only affects the "exhaustion" condition.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses that the tool authors condition state, is not an automation loop, and is D&D 5e only. It could mention permission requirements or reversibility, but overall transparency is good.

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

Conciseness5/5

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

The description is concise with two sentences plus a brief note. It is front-loaded with the core purpose and then adds specifics in a logical order. Every sentence earns its place without redundancy.

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

Completeness4/5

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

Given the tool's complexity (4 params, no annotations, no output schema), the description covers purpose, usage, parameters, and system specificity. It could mention return behavior or effects on existing conditions, but remains fairly complete.

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 100%, but the description adds value: lists example conditions, explains exhaustionLevel semantics, and notes that actorIdentifier can accept a token ID for instance-specific application. This goes beyond the schema definitions.

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

Purpose5/5

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

The description clearly states the tool applies or removes conditions on an actor, listing specific condition examples. It distinguishes itself from siblings by explicitly noting it is not a combat-automation loop, which sets it apart from potential automation tools.

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

Usage Guidelines4/5

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

The description provides clear guidance on how to use: system-specific (D&D 5e), toggling with active boolean, exhaustion level handling, and how to find the actor identifier. While it doesn't explicitly list alternatives for similar tasks, the context is sufficient for correct usage.

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

asset-infoA

Plane B (file channel, read-only). Report whether a single path under the Foundry Data/ root exists, and (for files) its size, content-type, last-modified, and public HTTPS URL. A cheap existence/metadata check before uploading or linking.

ParametersJSON Schema
NameRequiredDescriptionDefault
remotePathYesPath relative to the Foundry `Data/` root, e.g. "worlds/your-world/assets/maps/cavern.webp".

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description is the sole source of behavioral details. It states read-only nature (Plane B, file channel, read-only) and lists returned attributes. However, it does not address error states (e.g., path not found) or behavior for directories beyond 'for files' note, leaving some gaps.

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

Conciseness5/5

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

The description is extremely concise: two short sentences that front-load the core purpose and usage context. Every phrase earns its place with no redundancy.

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

Completeness4/5

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

Given the tool's simplicity (1 parameter, no output schema, basic annotations), the description is largely complete. It explains what the tool returns, when to use it, and the read-only nature. Minor gaps (error handling, directory behavior) prevent a perfect score.

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 input schema already fully describes the parameter including the relative path root. The tool description adds no new meaning beyond the schema, so baseline score of 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?

The description clearly states the tool's purpose: checking existence and retrieving metadata for a single path under Foundry's Data/ root. It distinguishes from siblings like list-assets by emphasizing it's a cheap, single-path check before uploads or linking.

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

Usage Guidelines4/5

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

The description includes explicit guidance: 'A cheap existence/metadata check before uploading or linking.' This tells the agent when to use it, but does not explicitly list when not to use it or mention alternative tools.

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

asset-urlA

Plane B (file channel). Return the public HTTPS URL for a file under the Foundry Data/ root. Pure mapping (no network): everything under Data/ is served at the server root (DESIGN §6), e.g. Data/worlds/w/maps/x.jpg → /worlds/w/maps/x.jpg. Useful for turning an uploaded/known asset path into a link Foundry or a player can load.

ParametersJSON Schema
NameRequiredDescriptionDefault
remotePathYesPath relative to the Foundry `Data/` root (a leading "Data/" or "/" is tolerated and stripped), e.g. "worlds/your-world/assets/maps/cavern.webp".

TDQS

A4.3/5.0
Behavior5/5

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

The description explicitly states 'Pure mapping (no network)', indicating no side effects or network calls. This transparency is crucial as no annotations are provided. The behavior is fully disclosed without contradictions.

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 concise sentences: introduction, mapping explanation, and use case. No redundant information; every sentence adds value.

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

Completeness5/5

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

For a simple tool with one parameter, no output schema, and no annotations, the description is fully complete. It covers functionality, behavior, input format, and usage context.

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

Parameters3/5

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

The schema has 100% coverage for the single parameter 'remotePath', describing its format. The description adds minimal extra value by mentioning the mapping rule, but it largely repeats schema content, 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?

The description clearly states the verb 'return' and the resource 'public HTTPS URL for a file under the Foundry Data/ root'. It distinguishes from siblings by specifying it is a pure mapping (no network call) for generating URLs, contrasting with tools like download-asset.

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

Usage Guidelines3/5

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

The description implies usage for converting asset paths to loadable links (e.g., 'Useful for turning an uploaded/known asset path into a link Foundry or a player can load'), but it does not explicitly compare with alternatives or state when not to use. No exclusions are provided.

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

author-npcA

Author a custom NPC (type:npc) from a hand-written stat block — the LAST-RESORT path in the §6 ladder, used ONLY when nothing in the premium MM/PHB/DMG books is a workable base. Prefer create-actor-from-compendium (copy a real Monster Manual creature, optionally with prefab-as-base modifications); if the books are missing what you need, tell the user and ask before authoring rather than inventing content. Prefer the 2024 ruleset (sourceRules:'2024'). Required: name, creatureType (humanoid/undead/beast/dragon/fiend/…), size (tiny…gargantuan), cr (number or fraction string like '1/4'), abilities {str,dex,con,int,wis,cha}, hpAverage, hpFormula (e.g. '5d8+10'), acMode ('default'|'flat'; acValue required if 'flat'). Optional: alignment, savingThrows[], skills[{skill,proficiency}], walk/fly/swim/climb/burrowSpeed, darkvision/blindsight/tremorsense/truesight, damage immunities/resistances/vulnerabilities[], conditionImmunities[], languages[], biography, sourceBook/sourcePage/sourceRules, disposition ('hostile' default | 'friendly' for allies/townsfolk | 'neutral' | 'secret'). Add features, attacks, and spells afterward with add-feature; copy gear from a compendium with import-item.

ParametersJSON Schema
NameRequiredDescriptionDefault
crYes
nameYes
sizeYes
hoverNo
acModeYes
skillsNo
acValueNo
flySpeedNo
abilitiesYes
alignmentNo
biographyNo
hpAverageYes
hpFormulaYes
languagesNo
swimSpeedNo
truesightNo
walkSpeedNo
blindsightNo
climbSpeedNo
darkvisionNo
sourceBookNo
sourcePageNo
burrowSpeedNo
dispositionNo
sourceRulesNo2024
tremorsenseNo
creatureTypeYes
savingThrowsNo
specialSensesNo
creatureSubtypeNo
languagesCustomNo
damageImmunitiesNo
damageResistancesNo
conditionImmunitiesNo
damageVulnerabilitiesNo

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It clearly implies creation of a new actor, lists required and optional parameters, and suggests follow-up actions (add-feature, import-item). It doesn't explicitly state side effects or authorization needs, but the creation context is clear and non-destructive.

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

Conciseness4/5

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

The description is front-loaded with purpose and usage guidelines, then lists required and optional params. It is somewhat lengthy due to comprehensive parameter coverage, but every sentence adds value. Could be slightly more concise without losing information.

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

Completeness4/5

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

Given 35 parameters, no output schema, and no annotations, the description addresses the core purpose, usage context, all required params, and many optional ones. It also provides post-creation guidance (add-feature, import-item). Missing return value description, but the creation context makes that less critical.

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

Parameters5/5

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

Schema description coverage is 0%, but the description extensively explains each parameter's meaning and usage. It provides examples (e.g., cr as number or fraction), clarifies default behaviors (e.g., disposition default 'hostile'), and links parameters to game concepts (e.g., 'friendly for allies/townsfolk'). This adds significant value beyond the schema.

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

Purpose5/5

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

The description clearly states the tool authors a custom NPC from a stat block, specifies it's a last-resort path, and distinguishes from compendium-based creation. The verb 'author' and resource 'custom NPC' are precise, and the 'LAST-RESORT' label immediately clarifies its role.

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

Usage Guidelines5/5

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

Explicitly states when to use ('used ONLY when nothing in the premium MM/PHB/DMG books is a workable base'), when not to use (prefer create-actor-from-compendium), and provides explicit guidance to ask the user before authoring. Also recommends 2024 ruleset and lists required fields.

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

bulk-deleteA

Permanently delete many world documents of a single type by exact id or exact name. STRICT resolution — no fuzzy/substring matching. IRREVERSIBLE — pass dryRun:true first to preview exactly what would be deleted. For folders use delete-folder. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoPreview only: report exactly which documents WOULD be deleted (and which were not found) without deleting anything. Run a dry-run first to confirm an irreversible bulk delete.
identifiersYesExact ids (preferred) or exact names to delete.
documentTypeYesType of the documents being deleted.

TDQS

A4.9/5.0
Behavior5/5

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

Highlights permanence, irreversibility, strict resolution, and GM-only requirement. Without annotations, the description fully compensates with critical behavioral 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?

Three succinct sentences, front-loaded with key information. Every sentence adds value with no waste.

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?

No output schema, but description explains what is deleted, irreversibility, and how to preview. Covers all necessary context for a bulk delete tool.

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 100%. The description adds context beyond schema: 'exact id or name' for identifiers, 'single type' for documentType, and dry-run recommendation. One point above baseline due to helpful extra detail.

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

Purpose5/5

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

The description clearly states the tool deletes many world documents by exact ID or name, specifying strict resolution and a single type. It distinguishes from sibling 'delete-folder'.

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

Usage Guidelines5/5

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

Explicitly suggests using dryRun first, directs to delete-folder for folders, and notes GM-only restriction, providing clear when-to-use guidance.

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

content-auditA

[D&D 5e only] Finishing check for authored content — scan documents for the four strict authoring-quality rules and report violations to fix (read-only; never mutates): • rule 8 — placeholder icons (icons/svg/...) on an actor, item, or authored feature. • rule 7 — GM-fudge / pretend-reskin language in a description or biography ("treat its X as Y", "reflavor", "deals necrotic in place of bludgeoning", "pretend", "is really "). • rule 9 — a magic item on an NPC with no matching world-Item loot twin. • rule 12 — a GM-note / spoiler leaked into a PLAYER-VISIBLE item description ("GM:" asides, "the DM", "fill in the …", "ready-made hook", "to suit your table"). Item descriptions only — an NPC biography is GM-facing, so it is not scanned for this.

RUN THIS before declaring a build done. Target what you built: actorIdentifiers (NPCs, with their gear/features), itemFolders (your loot folder), and/or worldItemIds. With NO target it runs a full sweep of every NPC + every world Item. Fix each finding (set a real icon via update-actor-item/update-item/set-actor-art; replace fudge with real mechanics; mint the missing loot copy; rewrite the item description to innocuous in-world flavor and move the GM note to a GM-only journal) then re-run until clean.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemFoldersNoWorld-Item folders to audit (name or id) — e.g. the loot/treasure folder you created.
worldItemIdsNoSpecific world Items to audit, by id.
actorIdentifiersNoActors to audit (name or id) — each is scanned along with its embedded items/features. Pass the NPCs you just built.

TDQS

A4.5/5.0
Behavior4/5

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

The description explicitly states 'read-only; never mutates', which is essential for behavioral transparency. However, it does not mention potential side effects like processing time or network usage, though the tool is relatively simple.

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

Conciseness4/5

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

The description is well-structured with numbered rules and clear sections. It is front-loaded with the core purpose and read-only assurance. While somewhat lengthy, the details are necessary for the tool's complexity.

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

Completeness3/5

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

The description explains what the tool does and what to do after, but it does not specify the format of the output report (e.g., list of violations). Given the complexity and absence of an output schema, more detail would be beneficial.

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

Parameters5/5

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

All three parameters are described with context beyond the schema, explaining how they are used in the audit (e.g., actorIdentifiers scan actors and their embedded items). The default behavior when no parameters are given is also clarified.

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

Purpose5/5

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

The description clearly identifies the tool as a finishing check for D&D 5e content, scanning for four specific authoring-quality rules. It distinguishes itself from sibling tools by being read-only and audit-focused.

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

Usage Guidelines5/5

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

It explicitly states when to run (before declaring a build done), how to target specific entities (actorIdentifiers, itemFolders, worldItemIds), and what to do after (fix and re-run). This provides clear usage context.

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

copy-assetA

Plane B (file channel, write). Copy a file under the Foundry Data/ root over WebDAV; missing destination parent folders are created automatically. (Copying does not affect existing references, so no reference check is needed.) Refuses live world-DB destination paths. Requires MOLTEN_WEBDAV_PASSWORD.

ParametersJSON Schema
NameRequiredDescriptionDefault
toPathYesDestination Data-relative path.
fromPathYesSource Data-relative path.
overwriteNoAllow overwriting an existing file at the destination.

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, so the description carries the burden. It discloses automatic parent folder creation, no effect on references, and path restrictions. It also signals it is a write operation ('Plane B (file channel, write)'). Could be improved by mentioning error handling for overwrite=false.

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

Conciseness5/5

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

The description is two sentences plus a parenthetical and requirement note. It is front-loaded with key context ('Plane B (file channel, write)') and every sentence adds essential information without redundancy.

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

Completeness4/5

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

Given no output schema and 3 parameters, the description covers core behavior well. It lacks details on whether folders can be copied (only files are implied). Also does not specify return value. However, it is fairly complete for a file copy operation.

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 100%, baseline 3. The description adds value by explaining that missing destination parent folders are created automatically (relevant to toPath). This goes beyond the schema's description. No additional info for fromPath or overwrite, but sufficient.

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

Purpose5/5

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

The description clearly states the tool copies a file under Foundry's Data/ root. It specifies the file channel (Plane B write), mentions automatic parent folder creation, and distinguishes from world-DB operations. The verb 'Copy' and resource 'file under Data/ root' are specific and unambiguous.

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

Usage Guidelines4/5

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

The description implicitly tells when to use (to copy files within Data/ root) and includes important constraints (refuses live world-DB paths, requires MOLTEN_WEBDAV_PASSWORD). It does not explicitly name alternatives like move-asset, but the context of copying vs moving is clear.

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

create-actor-from-compendiumA

Copy one or more actors from a premium-book compendium pack — the DEFAULT, preferred path for official content (e.g. pull the Owlbear from the Monster Manual). Find the entry with search-compendium / get-compendium-entry, then pass its packId + itemId plus names[] for the new actors. PREFAB-AS-BASE (the §6 step-2 bridge): to make a CUSTOM creature, copy the closest Monster Manual match and pass modifications (update-actor-shaped stat edits — cr/hp/ac/abilities/skills/defenses/biography/currency) to layer onto the world copy in the SAME call; the edits land on the copy only, never the source entry. For a fully hand-authored NPC with no compendium base, use author-npc (last resort).

ParametersJSON Schema
NameRequiredDescriptionDefault
namesYesCustom names for the created actors (e.g., ["Flameheart", "Sneak", "Peek"])
itemIdYesID of the specific creature entry within the pack (get this from search-compendium results)
packIdYesID of the premium-book pack containing the creature (e.g., "dnd-monster-manual.actors"). Premium MM/PHB/DMG only — never the dnd5e.* SRD (design.md §2.3).
quantityNoNumber of actors to create (default: based on names array length)
placementNoToken placement options (only used when addToScene is true)
addToSceneNoWhether to add created actors to the current scene as tokens
dispositionNoPrototype-token disposition for the created copies — YOUR judgment call (shared authoring-policy house token rules): 'neutral' for civilians/townsfolk/bystanders, 'friendly' for allies, 'hostile' for enemies. Omit to default by source type (copied PC pregen → friendly, copied monster → hostile).
modificationsNoPREFAB-AS-BASE bridge: stat edits to layer onto the instantiated WORLD COPY — copy a close-matching Monster Manual creature, then customize it in one call (the §6 step-2 path). Same shape as update-actor, e.g. {cr, hp:{value,max,formula}, ac:{calc,flat}, abilities:{str,…}, skills:[{skill,proficiency}], damageResistances:{values}, biography, currency:{mode,gp,…}}. Applied to the copy ONLY — the source compendium entry is never modified. Use names[] for the name, not this. Applies to every copy when quantity > 1.

TDQS

A4.7/5.0
Behavior4/5

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

In the absence of annotations, the description discloses key behaviors: edits apply only to the world copy, not the source; modifications affect all copies when quantity > 1; placement and disposition defaults are explained. However, it could mention potential rate limits or permission requirements, but covers essential mutation behavior thoroughly.

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, dense paragraph that front-loads the core purpose. It uses bold for key terms but could benefit from bullet points or section breaks for readability. Despite length, every sentence adds necessary detail; no redundancy.

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

Completeness5/5

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

Given 8 parameters with nested objects, no output schema, and multiple use cases (simple copy vs. prefab-as-base), the description fully covers both paths and references sibling tools (search-compendium, update-actor, author-npc). Provides enough context for an agent to correctly decide usage and invocation.

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

Parameters5/5

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

Schema coverage is 100%, providing baseline 3. The description adds substantial meaning: packId restricted to premium books, names shown with examples, modifications detailed with the update-actor shape, disposition with authoring policy, placement with coordinates requirement. This significantly aids parameter understanding beyond schema.

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

Purpose5/5

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

The description clearly identifies the tool as copying actors from premium-book compendium packs, distinguishing it as the default path for official content and contrasting with author-npc for hand-authored NPCs. It specifies the action (copy), source (compendium), and key variant (prefab-as-base with modifications).

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

Usage Guidelines5/5

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

Explicitly instructs to first find the entry via search-compendium/get-compendium-entry and then pass packId, itemId, and names. Provides clear alternatives: use author-npc for no compendium base, and explains the modifications parameter for the prefab-as-base bridge. Also gives disposition default rules.

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

create-asset-folderA

Plane B (file channel, write). Create a folder (and any missing parents) under the Foundry Data/ root over WebDAV. Idempotent — succeeds if the folder already exists. Refuses paths inside a live world DB. Requires MOLTEN_WEBDAV_PASSWORD.

ParametersJSON Schema
NameRequiredDescriptionDefault
remotePathYesFolder path relative to the Foundry `Data/` root, e.g. "worlds/your-world/assets/audio/tavern".

TDQS

A4.4/5.0
Behavior4/5

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

Discloses idempotency, requirement for MOLTEN_WEBDAV_PASSWORD, refusal of live world DB paths, and creation of missing parents. Lacks details on return values or error responses, but overall sufficient given no annotations.

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

Conciseness5/5

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

Two concise sentences plus a requirement note, all front-loaded with key identifiers ('Plane B'). No wasted words.

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

Completeness4/5

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

Covers idempotency, constraints, and requirement. The 'Plane B' term is unexplained, and no output description is given, but for a simple creation tool with no output schema, it is fairly complete.

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

Parameters4/5

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

The single parameter 'remotePath' is described in schema with an example, and the description adds that missing parents are created. This exceeds the schema alone. No further parameter details needed.

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

Purpose5/5

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

The description clearly states the tool creates a folder under Foundry's Data/ root over WebDAV, is idempotent, and has specific constraints (refuses live world DB paths). It distinguishes itself from sibling tools like 'create-folder' by specifying the 'Plane B (file channel, write)' context.

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

Usage Guidelines4/5

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

Provides clear context: use for creating folders via WebDAV, idempotent, and warns against live world DB paths. However, no explicit comparison to similar sibling tools (e.g., 'create-folder') is given.

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

create-cardsA

Create a Cards stack (deck, hand, or pile) with optional initial cards. Each card has a name and optional face text (HTML shown on the card — e.g. a Deck of Many Things outcome) and/or img (a Data-relative path), plus a card-level description (GM/meta note). Use for custom themed decks (Deck of Many Things, tarokka, encounter decks). GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCards stack name.
typeNoStack type (default "deck").
cardsNoOptional initial cards.
folderNameNoOptional folder to place the stack in (created if absent).
descriptionNoOptional description.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses GM-only permission requirement, the optional folder creation, and the structure of cards (face text/img vs plain). This is good behavioral coverage 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.

Conciseness5/5

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

Two sentences with key information front-loaded. First sentence covers primary action and scope; second adds card structure; third provides use cases and permission. No wasted words.

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

Completeness4/5

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

Given 5 parameters, high schema coverage, and no output schema, the description sufficiently covers creation behavior, card structure, and use cases. It lacks error/edge-case details but is adequate for typical use.

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 100%, baseline 3. The description adds value by explaining `text` as HTML shown on the card, `img` as Data-relative path, `description` as GM/meta note, and `folderName` behavior. This context is beyond the schema descriptions.

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

Purpose5/5

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

The description clearly states it creates a Cards stack (deck, hand, or pile) with optional initial cards, specifying the verb and resource. It distinguishes from siblings like list-cards, delete-cards, and import-cards by focusing on creation for custom themed decks.

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

Usage Guidelines4/5

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

The description advises use for custom themed decks and notes GM-only, providing clear context. It does not explicitly exclude other scenarios, but the sibling set is large and the purpose is well-defined.

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

create-drawingsA

Place one or more DRAWINGS (GM annotation shapes: secret-area boxes, trap outlines, zone labels) on a scene. x/y are the TOP-LEFT origin in absolute canvas pixels; pick a shapeType — rectangle/ellipse (width+height), circle (radius), or polygon (flat relative points list). Style with stroke (width/color/alpha), fill (fillType 1 solid / 2 pattern + fillTexture), and an optional centered text label (fontSize/textColor). hidden:true keeps it GM-only; interface:true floats it above fog. The default stroke makes a bare shape visible as an outline. Per-drawing error isolation. Returns created ids. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
drawingsYesOne or more drawings (annotation shapes / labels) to place.
sceneIdentifierYesScene id or exact name holding the placeables.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description fully discloses behavioral traits: it creates drawings, supports per-drawing error isolation, returns created IDs, and is GM-only. It explains default stroke behavior and flags like hidden/interface. No contradictions.

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

Conciseness4/5

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

The description is moderately concise given the complexity; it front-loads the purpose and covers key parameters efficiently. A minor reduction in verbosity could improve clarity, but it is well-structured.

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

Completeness5/5

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

The description covers usage, parameter details, behavior (error isolation, GM-only), and return value (created ids). For a tool with many parameters and no output schema, it is remarkably complete.

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 100%, and the description adds value by explaining the coordinate origin (top-left absolute), shape type specifics, and default styles (e.g., 'default stroke makes a bare shape visible'). This enriches the schema definitions.

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

Purpose5/5

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

The description clearly states it places DRAWINGS (GM annotation shapes) on a scene, enumerating shape types, coordinate system, styling options, and special flags. It distinguishes itself from siblings like create-tiles or create-lights by specifying the exact use case (secret-area boxes, trap outlines, zone labels).

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

Usage Guidelines4/5

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

The description implies usage for GM-only annotations and mentions per-drawing error isolation, but does not explicitly state when to use this tool over alternatives like create-tiles or create-lights. The context of sibling tools is not directly addressed.

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

create-folderA

Create a sidebar Folder for any world document type, optionally nested under a parent folder of the same type. Use to organize generated content. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFolder name.
typeYesDocument type this folder holds (Actor, Item, JournalEntry, …).
colorNoOptional hex color, e.g. "#4a90e2".
parentFolderNoOptional parent folder id or exact name (must be the same type).

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses GM-only permission, creation of sidebar folders, and nesting constraint. Does not detail error handling or side effects, but for a simple create operation this is sufficient.

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

Conciseness5/5

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

Two concise sentences with no filler. Purpose is front-loaded, critical details (nesting, GM-only) are included. Every word earns its place.

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

Completeness5/5

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

Simple tool with no output schema. Description covers what it creates, how it can be used (nested, for organizing), and who can use it. Sufficient for an agent to select and invoke 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 coverage is 100% with descriptions for all 4 parameters. Description reinforces nesting constraint for parentFolder but adds no new meaning for other parameters like color. 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?

Description explicitly states it creates sidebar folders for any world document type, with optional nesting. It distinguishes from create-* siblings (which create documents) and includes usage context ('organize generated content') and visibility ('GM-only').

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?

States 'organize generated content' and 'GM-only', providing clear context. However, it does not explicitly say when not to use or mention alternatives (e.g., deleting folders via delete-folder). Still, the sibling list implies the tool is for folders only.

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

create-itemA

Create world-level Item document(s) in the Items sidebar — reusable library items (weapons, equipment, consumables, feats, spells). For dnd5e prefer the 2024 data model; pass system-specific data via the "system" field. GM-only. To put items on an actor instead, copy from a compendium with import-item, author one with add-item, or attach raw item data with add-feature (mode "items").

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesOne or more items to create. Each requires a name and a valid dnd5e item type (e.g. "weapon", "equipment", "consumable", "feat", "spell"). Pass system-specific data via the "system" field.
folderNoFolder name/ID to place the items in (created if absent).

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description discloses key behaviors: world-level creation, GM-only access, preference for 2024 data model, and the role of the 'system' field. Lacks details on failure modes or duplicate handling, but covers essential aspects.

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?

Multi-sentence but efficient; front-loads the core action then provides alternative guidance. Every sentence serves a purpose, though could be slightly more concise.

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

Completeness4/5

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

For a tool with 2 parameters and no output schema, the description covers creation scope, target audience, data model preference, and alternatives. No significant gaps.

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

Parameters4/5

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

Schema coverage is 100% and the description adds meaningful context: explaining the purpose of the 'system' field, noting valid types, and setting usage scope. Adds value beyond the schema.

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

Purpose5/5

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

Clearly states the verb 'Create', the resource 'world-level Item document(s) in the Items sidebar', and enumerates the types of reusable library items. Distinguishes from sibling tools by listing alternatives for actor-level operations.

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

Usage Guidelines5/5

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

Explicitly states it is GM-only and provides clear guidance on when not to use it ('To put items on an actor instead...') with named alternatives (import-item, add-item, add-feature).

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

create-journalA

Create a generic multi-page JournalEntry from caller-supplied pages. Each page is either a TEXT page ({name, content} — HTML, Foundry v13 ProseMirror) or an IMAGE page ({name, kind:"image", src, caption?} — a picture page, e.g. a map legend key), so an image-only journal builds in one call. Unlike create-quest-journal (styled blocks, auto-folders), this takes explicit pages and only folders when folderName is given. Per-page playerVisible exposes a handout; otherwise GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesJournal entry name.
pagesYesOrdered pages — each a TEXT page (HTML content) or an IMAGE page (kind:"image" + src). Each needs a name; text content is HTML (may be empty).
folderNameNoOptional folder to place the journal in (created if absent).

TDQS

A4.6/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It explains behavioral traits like GM-only default, page visibility (playerVisible), folder creation, and page types. However, it does not mention idempotency or error conditions, but overall provides good context beyond schema.

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

Conciseness5/5

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

Four sentences, front-loaded with purpose, then details page types, differentiates from sibling, and covers folder and visibility. Every sentence adds value; no redundant information.

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

Completeness4/5

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

Given no output schema and high schema coverage, description covers key aspects: creation of journal, page types, folder option, and visibility. It misses explicit mention of default page kind (text) and return value, but is complete enough for a creation tool with good parameter documentation.

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 100%, so baseline is 3. Description adds value by explaining the distinction between text and image pages, the requirement of src for images, the optional caption, and the meaning of playerVisible. This goes beyond schema descriptions.

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

Purpose5/5

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

Description clearly states it creates a multi-page JournalEntry from supplied pages. It distinguishes from sibling 'create-quest-journal' by noting it takes explicit pages and only folders when folderName is given. The verb and resource are specific.

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

Usage Guidelines5/5

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

Explicitly contrasts with sibling tool 'create-quest-journal', stating that this tool is for generic journals with explicit pages, while the sibling has styled blocks and auto-folders. This gives clear when-to-use guidance.

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

create-lightsA

Place one or more AMBIENT LIGHTS (torches, braziers, magical glows) on a scene. x/y are the light CENTER in absolute canvas pixels; dim/bright are radii in grid-distance units (feet), NOT pixels. Set color, alpha (tint intensity), angle (cone), luminosity, attenuation (edge softness), an animation (animationType "torch"/"flame"/"pulse" + speed/intensity for flicker), and a darkness activation range (darknessMin ~0.1 so a torch only lights once the scene dims). walls confines it, vision lets it grant sight. Per-light error isolation. Returns created ids. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
lightsYesOne or more ambient lights (torches, glows, magical light) to place.
sceneIdentifierYesScene id or exact name holding the placeables.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses behavioral traits: units for x/y and radii, darkness activation range, walls/vision effects, per-light error isolation, return of created ids, and GM-only restriction. It adds context beyond the schema, such as 'NOT pixels' and 'torch only lights once the scene dims'.

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 paragraph of moderate length (approx. 100 words) that front-loads purpose and then details parameters. It is packed with information but remains readable; however, it could be slightly more structured (e.g., bullet points) for even easier scanning.

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

Completeness4/5

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

Given the complexity (nested array, many optional parameters, no output schema), the description covers main behaviors, parameters, and outcomes (returns created ids). It mentions per-light error isolation but could elaborate on what that entails. Overall, it is fairly complete.

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 100%, so baseline is 3. The description adds extra meaning beyond the schema: clarifies units for dim/bright (grid-distance units, NOT pixels), gives examples for animationType (torch, flame, pulse), and mentions default values (alpha ~0.3, luminosity 0.5, darknessMin ~0.1). This adds significant value.

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

Purpose5/5

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

The description clearly states the verb 'Place' and the resource 'AMBIENT LIGHTS', with specific examples (torches, braziers, magical glows). It distinguishes from sibling tools like create-drawings or create-tiles by focusing exclusively on light sources, and notes it is GM-only.

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

Usage Guidelines4/5

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

The description implicitly indicates usage for placing ambient lights on a scene. However, it does not explicitly state when not to use or provide alternatives, relying on the sibling list for distinction. This is clear but lacks explicit exclusions.

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

create-pcA

Build a player character (type:character) headlessly from premium class + species + background by NAME, running real dnd5e advancement so @scale.* (rage damage, sneak attack, breath weapon, …) resolves natively — unlike an NPC. Compendium-first, premium books only, never the SRD (design.md §2.3); a missing class/species/background is an error, not invented. The SKILL owns the math: pass FINAL ability scores (point-buy/array/ASI already applied) and the player CHOICES (skills, fighting style, ancestry…) in choices (level → advancement-id → {chosen|selected|uuid}). Call with no/partial choices first to get a needsChoices[] dry-run (legal options per choice — incl. the available subclasses at level 3 — NOTHING is created); fill the map and re-call. Levels 1-20: HP/features/subclass/spell-slots scale with level (subclass at L3 via a choices uuid; HP per level hpMode avg|max). Multiclass in ONE call via multiclass:[{className,levels}] (className/level is the primary; each multiclass class gets the 2024 proficiency subset; total ≤ 20). Caster spell slots auto-derive from the class; pass spells.cantrips/spells.prepared (names) to add chosen spells. ASI ability-increases ride in the FINAL scores (not applied separately); a feat taken at an ASI tier is added by the skill via add-feature/import-item, like equipment — this tool adds no gear or ASI-feats. If a required advancement (a forced grant / supplied pick / subclass embed) FAILS to apply, the PC is NOT persisted (no junk actor) and success:false is returned with errors[]. Returns {success, actor, applied[], needsChoices[], unresolvedScale[], errors[], warnings[]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
levelNo
folderNo
hpModeNoavg
spellsNo
choicesNo
speciesNo
abilitiesNo
classNameYes
backgroundNo
multiclassNo
sourceRulesNo2024
acceptDefaultsNo

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: it runs real advancement, does not persist on failure (success:false with errors), returns detailed output fields, and explains the dry-run behavior. It also clarifies that ASI ability-increases are expected final and feats are not added by this tool, ensuring no surprises.

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

Conciseness4/5

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

The description is long but well-structured, with front-loaded main purpose and progressive details. Every sentence adds value, covering all key aspects. Minor verbosity is justified by the tool's complexity, but it could be slightly more terse without losing clarity.

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

Completeness5/5

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

Given the complexity (13 parameters, nested objects, multiclass, dry-run, error handling) and no output schema, the description is fully complete. It explains the return value structure, the multi-step workflow, edge cases like missing class or failed advancements, and provides enough detail for an AI agent to use the tool correctly.

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

Parameters5/5

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

Despite 0% schema description coverage, the description explains the purpose and usage of most parameters: name, className, level, abilities (final scores), choices (with structure), multiclass, spells, hpMode, sourceRules, acceptDefaults. It adds critical context like 'abilities must be final' and 'choices map format', compensating fully for the missing schema descriptions.

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

Purpose5/5

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

The description clearly states it builds a player character headlessly using premium compendium content, with real dnd5e advancement and native scale feature resolution. It distinguishes itself from NPCs and sibling tools like 'create-pc-from-prefab' and 'level-up-pc' by detailing its specific functionality, such as dry-run mode and multiclass support.

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

Usage Guidelines4/5

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

The description provides extensive usage guidance: it explains the two-step process (dry-run then fill choices), what inputs to provide (final abilities, choices map, multiclass array), and what not to include (gear, ASI-feats). It also specifies constraints like premium books only and error handling. However, it doesn't explicitly compare with sibling tools or say when to choose this over alternatives.

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

create-pc-from-prefabA

Create a player character by COPYING a premium-book PREGEN (a complete type:character template — e.g. the PHB class pregens Barbarian…Wizard in dnd-players-handbook.actors, each a ready level-1 build with gear/feats/art) and layering your changes, INSTEAD of building via advancement. The PC family's prefab-as-base path — the §6/§7 analog of create-actor-from-compendium for NPCs, but PC-correct (files under the PC folder, never the NPC one). Resolve the source by prefab NAME (e.g. "Fighter") OR explicit packId+actorId; premium books only, never the SRD (design.md §2.3). Override the pregen's ability array via abilities (final scores) and/or any update-actor-shaped modifications — applied to the COPY only, the source is never touched. @scale resolves natively (it is a real character, no advancement run). Assign the player as owner afterward with set-actor-ownership. Returns {success, from, actor, modificationsApplied, unresolvedScale, warnings}.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
folderNo
packIdNo
prefabNo
actorIdNo
abilitiesNo
modificationsNo

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description fully bears the burden of behavioral disclosure. It reveals that the tool copies the source (never modifies the original), applies modifications to the copy, resolves @scale natively, and does not set ownership (requires a separate step). It also specifies the return shape. This is a complete and honest description of the tool's behavior.

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

Conciseness4/5

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

The description is moderately concise at around 150 words, packing essential information without significant fluff. It is well-structured: purpose first, then method, resolution, overrides, behavioral notes, and returns. However, some sentences are long and dense, which slightly reduces readability. Minor improvements could make it more streamlined.

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

Completeness4/5

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

Given the complexity (7 parameters, nested objects, no output schema, no annotations), the description is quite comprehensive. It covers the core workflow, constraints (premium only), resolution options, and return structure. The main gaps are the lack of explanation for the 'folder' parameter and the exact shape of 'modifications'. Still, it provides enough context for correct usage.

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

Parameters4/5

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

Despite 0% schema description coverage, the description adds substantial meaning to several parameters: it explains how 'prefab' resolves (by name or explicit packId+actorId), what 'abilities' expects (array of final scores), and what 'modifications' are (update-actor-shaped updates applied to copy). 'folder' and other basic parameters are not elaborated, but the critical ones are covered. It compensates well for the lack of schema documentation.

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

Purpose5/5

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

The description clearly states the tool's purpose: creating a player character by copying a premium-book pregen template. It uses specific verbs ('Create', 'COPYING', 'layering'), identifies the resource (premium-book PREGEN), and distinguishes this approach from building via advancement. It also contrasts with create-actor-from-compendium for NPCs, making the purpose unambiguous.

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

Usage Guidelines5/5

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

The description explicitly tells when to use this tool: for creating a PC from a pregen template instead of advancement. It provides guidance on source resolution (by prefab name or packId+actorId), specifies that premium books only are allowed (never SRD), and mentions a follow-up step (set-actor-ownership). It also implies when not to use it (if not using a pregen or using SRD). This is comprehensive.

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

create-playlistA

Create a Foundry Playlist from a list of Data-relative sound paths (e.g. ones just returned by upload-asset). Modes: sequential, shuffle, simultaneous, soundboard. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
fadeNoCrossfade duration in milliseconds (optional).
modeNoPlayback mode (default sequential).sequential
nameYesPlaylist name.
repeatNoWhether each track loops (default false).
soundPathsYesData-relative paths to the sound files, in order.
defaultVolumeNoVolume 0–1 applied to each track (default 0.5).

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Mentions creation and modes, but lacks details on side effects, error handling, or dependencies (e.g., valid paths). Adequate but not comprehensive.

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

Conciseness5/5

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

Two concise sentences; first states purpose, second adds modes and restrictions. No redundant information, front-loaded.

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

Completeness3/5

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

No output schema, so expected return value (created playlist) is not described. Lacks error conditions or prerequisites. Adequate for a creation tool but could be more complete.

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 100%, baseline 3. Description adds context for soundPaths (data-relative paths) and lists modes, enhancing understanding beyond schema descriptions.

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

Purpose5/5

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

Clearly states 'Create a Foundry Playlist from a list of Data-relative sound paths' with specific verb and resource. Distinguishes from sibling tools like update-playlist and delete-playlist.

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?

Explicitly states 'GM-only' for authorization and references typical use case with upload-asset. Could be more explicit about when not to use vs update-playlist, but implied by the create verb.

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

create-quest-journalA

Create a multi-page journal (quest log, handout, lore, GM notes) from STRUCTURED typed blocks — a STRUCTURING tool, it never writes the words. You pass pages of blocks (heading / lead / paragraph / readaloud / gmnote / list / grid / html); the tool renders them in the house style and sets per-page visibility (playerVisible -> players can observe a handout; omit -> GM-only). Compose the prose yourself (that's the journal-builder skill's job). For plain raw-HTML pages use create-journal instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
pagesYesOrdered pages (e.g. a player Handout page + a GM Notes page), each a list of blocks.
titleYesJournal entry name.
folderNameNoOptional folder to organize the journal into (created if it does not exist).

TDQS

A4.6/5.0
Behavior4/5

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

The description discloses key behaviors: it never writes the prose, renders in house style, sets per-page visibility. Without annotations, it provides good transparency, though could include details on error handling or 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?

The description is well-structured and front-loaded with key information, but slightly verbose in listing block types; still clear and efficient.

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

Completeness5/5

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

Given the tool's complexity (multi-page journal with multiple block types), the description covers purpose, usage, block types, visibility, and alternative tool, making it fully complete.

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 100%, and the description adds value by summarizing the block types, explaining the structuring role, and clarifying visibility vs schema descriptions.

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

Purpose5/5

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

The description clearly states the tool creates a multi-page journal from structured typed blocks, and distinguishes it from the sibling tool 'create-journal' which handles plain raw-HTML pages.

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

Usage Guidelines5/5

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

The description explicitly says when to use this tool (for structured blocks) and when not to, providing the alternative 'create-journal' for plain raw-HTML pages.

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

create-regionA

Create one or more Regions on an EXISTING scene (the general primitive behind create-teleporter). Each region carries its v14 shapes whole (rectangle/ellipse/polygon in canvas px) plus optional color/visibility/behaviors. Behaviors pass through verbatim: a teleportToken here must already have system.destinations = ["Scene..Region."] (use create-teleporter for the two-new-region convenience). Returns the created region ids. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
regionsYesOne or more regions to create.
sceneIdentifierYesScene id or exact name to add the region(s) to.

TDQS

A4.7/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses that behaviors pass through verbatim, teleportToken requirements, and returns created region ids. Lacks mention of error behavior or idempotency, but overall strong.

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?

Compact single paragraph, front-loaded with key info (verb, constraint, sibling relationship). Every sentence adds value; no redundancy.

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

Completeness5/5

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

For a 2-param tool with no output schema, description covers input requirements (scene must exist), shapes format, behaviors caution, and return value. No obvious gaps.

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

Parameters4/5

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

Schema coverage is 100%, but description adds value: clarifies shapes are in canvas px with type examples, explains visibility values, and adds behavior constraints beyond schema. Not perfect, but adds meaningful context.

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

Purpose5/5

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

Clearly states verb 'Create', resource 'Regions', and context 'on an EXISTING scene'. Distinguishes from sibling 'create-teleporter' by noting it is the general primitive behind it.

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

Usage Guidelines5/5

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

Explicitly says 'GM-only' and recommends using 'create-teleporter' for the two-new-region convenience, providing clear when-to-use and when-not-to-use guidance.

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

create-rolltableA

Create a RollTable from a list of results. Each result is literal text and/or a uuid referencing a REAL premium-book item (rendered as a clickable @UUID link — the way the published loot tables are built; SRD refs are refused). Ranges are auto-assigned from weights (and the formula defaults to 1d) unless you provide explicit ranges/formula. Use for random encounter/loot/rumour/treasure tables. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesTable name.
formulaNoRoll formula (default 1d<total weight>), e.g. "1d20".
resultsYesTable entries.
folderNameNoOptional folder to place the table in (created if absent).
descriptionNoOptional table description.
displayRollNoShow the roll when drawing (default true).
replacementNoDraw with replacement (default true).

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 details behavioral traits: SRD refs are refused, premium items render as @UUID links, ranges auto-assign, formula defaults to 1d<total weight>. It also notes GM-only. However, it misses potential side effects like permission requirements or overwrite behavior.

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 paragraph that packs essential information concisely. It is front-loaded but could benefit from more structured formatting like bullet points. It is effective without being overly verbose.

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

Completeness3/5

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

The description covers purpose, parameters, and key behavior, but lacks information about the return value (e.g., what is returned after creation). Given no output schema, this is a gap. Otherwise, it is reasonably complete for the 7 parameters.

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 100%, but the description adds value by explaining how results combine text and uuid, the auto-assignment of ranges, and the default formula. This goes beyond the schema descriptions, earning a 4.

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

Purpose5/5

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

The description clearly states the tool creates a RollTable from a list of results, specifies the types of results (text/UUID), mentions auto-assignment of ranges and formula, and distinguishes it from siblings like import-rolltable and roll-on-table.

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

Usage Guidelines4/5

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

The description says 'Use for random encounter/loot/rumour/treasure tables. GM-only.' It provides clear use cases and access restrictions, but does not explicitly mention when not to use or alternatives beyond the implicit context.

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

create-sceneA

Create a Foundry Scene from a Data-relative background image path (e.g. an uploaded map). Width/height auto-detect from the image when omitted. Places it in a folder (created if absent) and sets navigation (false = a DM-only scene off the player nav bar) in the same call. AUTO-GENERATES the navigation thumbnail from the background (Foundry-native) when no explicit thumb is given — no more thumbnail-less scenes. Optionally set grid size/type/distance/units/color/alpha, token vision, fog mode, lighting (darkness, global light, or a whole environment{}/fog{} mood object + saved camera for pack imports), weather, a linked playlist/journal, a nav thumbnail, padding, provenance flags, and activate it. Can also IMPORT walls + ambient lights from a map sidecar JSON (the walls/lights arrays many battlemaps ship alongside the image): pass them and they are placed on the new scene (legacy or v14 shapes both accepted, normalized to v14). GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
fogNoA v12+ scene's full fog{} object (exploration, overlay, colors), carried whole (deep-merged).
nameYesScene name.
flagsNoDocument flags namespaced by scope — e.g. {"tom-cartos-import":{sourceModule,sourceId}} for import provenance/dedup. Deep-merged over any existing flags (re-stampable on update).
thumbNoData-relative path to a pre-rendered navigation thumbnail (e.g. an uploaded <id>-thumb.webp shipped by a map pack). Foundry may regenerate it on a later in-app edit, so treat it as a nice-to-have, not load-bearing.
wallsNoWalls to import from a map sidecar JSON (the `walls` array of a Foundry scene-export sidecar that ships next to a map). Created after the scene exists; coordinates are absolute canvas pixels, so pass the sidecar width/height/gridSize/padding too.
widthNoScene width in pixels (optional — auto-detected from the image when omitted).
folderNoScene folder id or exact name to place the scene in (created if absent).
heightNoScene height in pixels (optional — auto-detected from the image when omitted).
lightsNoAmbient lights to import from a map sidecar JSON (the `lights` array).
fogModeNoFog of war: disabled | individual (classic per-player) | shared (party-wide).
initialNoThe saved initial camera view {x,y,scale} to restore on scene load (deep-merged).
journalNoJournalEntry id or exact name to attach as scene notes. "" clears it.
paddingNoScene padding fraction (optional).
regionsNoRegions (v12+ RegionDocument incl. teleporters) to import from a scene-pack payload. Created after the scene exists; each is stamped with its source id, and cross-scene teleporter destinations are rewritten afterward by a single remap-teleporters call.
weatherNoWeather effect key (e.g. rain, snow, fog, leaves, rainStorm, blizzard). "" = none.
activateNoActivate the scene after creating it.
darknessNoDarkness/day-night level: 0 = full daylight, 1 = full night.
gridSizeNoGrid size in pixels (default 100).
gridTypeNoFoundry grid type (0 gridless, 1 square, 2+ hex). Default 1.
playlistNoPlaylist id or exact name to auto-play on scene activation. "" clears it.
gridAlphaNoGrid line opacity 0–1 (e.g. 0.2 for a faint grid).
gridColorNoGrid line color as a hex string, e.g. "#000000".
gridUnitsNoDistance unit label per cell, e.g. "ft" (dnd5e default).
navigationNoWhether the scene appears in the player navigation bar. Set false for a DM-only scene (keeps it off the nav bar). Omit for Foundry default.
environmentNoA v12+ scene's full environment{} mood object, carried whole (darknessLevel, globalLight{...}, cycle, base, dark{hue,luminosity}…). Deep-merged, so a partial mood patch layers onto the scene; prefer this over the flat darkness/globalLight knobs when importing or re-mooding a pack scene.
globalLightNoGlobally illuminate the whole scene (turn the lights on).
tokenVisionNoRequire token line-of-sight to see the scene. Turn OFF for overland/illustration maps.
gridDistanceNoReal-world distance per grid cell (dnd5e default 5).
backgroundPathYesData-relative path to the background/map image.
placeablesPathNoServer-local path to a JSON file of {walls,lights,regions} to place (as written by read-pack for a scene-pack import). Read SERVER-SIDE and merged with any inline placeables — this routes a pack's hundreds of walls/lights/regions tool→tool without passing them through the agent (the MCP response cap makes inline placeables infeasible at scene scale).

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description fully discloses behaviors: auto-detection of dimensions, auto-generation of thumbnail, folder creation, navigation setting, and import capabilities. It also notes limitations like Foundry regenerating thumbnails and MCP response cap for placeablesPath.

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

Conciseness4/5

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

The description is front-loaded with the main purpose and structured logically. However, it is somewhat verbose with multiple clauses and parentheticals, which could be tightened. Every sentence adds value, but conciseness could be improved.

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 complex tool with 30 parameters, the description covers most aspects: main use, options, edge cases (auto-detect, auto-thumb), best practices, and limitations. It lacks a clear statement about what the tool returns (e.g., the created scene object), but overall is highly complete.

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

Parameters5/5

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

The schema already has 100% description coverage, so baseline is 3, but the description adds significant extra meaning: context on auto-detection, auto-generation, preferring config objects for lights, deep-merging of flags/environment, and server-side reading of placeablesPath. This goes well beyond the schema.

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

Purpose5/5

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

The description begins with a clear verb and resource: 'Create a Foundry Scene from a Data-relative background image path'. It specifies the unique input method and distinguishes itself from sibling creation tools by covering all scene creation aspects in one call.

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

Usage Guidelines4/5

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

The description provides clear context on when to use this tool, including options like auto-detect, auto-generated thumbnails, importing walls/lights, and setting navigation. It implies comprehensive scene setup but does not explicitly state when not to use it or mention alternatives.

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

create-scene-notesA

Place map-note PINS on a scene, each linked to a JournalEntry (and optionally a specific page) — the deterministic half of the legend→GM-room-pins feature. Pass absolute canvas pixel x/y (see get-scene-dimensions for the padding-aware math), an optional label/icon/size, and the journal id|name. Per-note error isolation: a pin whose journal does not resolve is reported and skipped, not fatal. GM-only secrecy is the linked journal's ownership, not the pin; global only controls fog occlusion. Returns each created note id (for update-note/delete-note). GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesYesThe map-note pins to create.
sceneIdentifierYesScene id or exact name to place the notes on.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description fully carries the burden of behavioral disclosure. It explains deterministic behavior, error isolation per note, that GM-only secrecy is from journal ownership not the pin, and that 'global' only controls fog occlusion. It also states the return value (each created note id). No contradictions.

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 paragraph that front-loads the main purpose and then provides essential details. Every sentence adds value. It is concise but could be slightly better organized (e.g., separate sections for usage, behavior, return). Still, it is efficient.

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

Completeness4/5

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

Given no annotations, no output schema, and nested input (notes array), the description covers purpose, parameters, error handling, and return. It is mostly complete, though it lacks details on error behavior for unresolved scene identifiers. Overall, it provides sufficient context for an AI agent.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3. The description adds meaningful context beyond the schema, such as referencing 'get-scene-dimensions' for padding-aware math and clarifying the 'global' parameter's role. This enhances understanding.

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

Purpose5/5

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

The description clearly states the action ('Place map-note PINS on a scene') and the resource (linked to a JournalEntry), and distinguishes it from siblings by calling it 'the deterministic half of the legend→GM-room-pins feature'. It is specific and informative.

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

Usage Guidelines4/5

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

The description provides clear context on how to use the tool, including guidance on x/y coordinates referencing 'get-scene-dimensions', per-note error isolation, and the meaning of the 'global' parameter. However, it does not explicitly mention when not to use this tool or suggest alternatives.

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

create-soundsA

Place one or more positional AMBIENT SOUNDS on a scene (a crackling hearth, a waterfall, dripping cave water) from Data-relative audio paths. x/y are the emitter CENTER in absolute canvas pixels; radius is in grid-DISTANCE units (feet), NOT pixels. Optionally set volume, repeat (loop), walls (muffle through walls), easing (fade by distance), a darkness activation range (night-only sounds), and listener effects (baseEffect/muffledEffect, e.g. "lowpass"). A 404 audio path keeps the path but warns. Distinct from a scene playlist: this is a point emitter players walk into. Returns created ids. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
soundsYesOne or more positional ambient sounds to place.
sceneIdentifierYesScene id or exact name holding the placeables.

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses behavioral traits: x/y are absolute canvas pixels, radius is in grid-distance units, optional parameters like walls (muffle through walls), easing (fade by distance), darkness activation range (night-only sounds), listener effects (baseEffect/muffledEffect), and that a 404 path warns but keeps. It also states the return behavior ('Returns created ids').

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 paragraph that is both comprehensive and concise. It front-loads the main purpose and example, then covers essential details without unnecessary fluff. Every sentence adds value.

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

Completeness5/5

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

Given the tool's complexity (many optional parameters, nested array input, no output schema), the description covers all critical aspects: input structure, key unit distinctions, behavior of each option, and return value. It is complete without needing an output schema.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds significant meaning beyond the schema: clarifies units for radius (grid-distance vs. pixels), explains the purpose of walls, easing, darknessMin/darknessMax, baseEffect/muffledEffect, and default values (volume 0.5, repeat false). This enriches the agent's understanding.

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

Purpose5/5

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

The description clearly states 'Place one or more positional AMBIENT SOUNDS on a scene' and provides concrete examples (crackling hearth, waterfall). It distinguishes from a sibling tool by noting 'Distinct from a scene playlist: this is a point emitter players walk into.' This leaves no ambiguity about the tool's purpose.

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

Usage Guidelines4/5

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

The description explicitly marks the tool as 'GM-only' and mentions that a 404 audio path 'keeps the path but warns'. It contrasts with scene playlist implicitly, but does not provide extensive when-to-use/when-not-to-use guidance. Still, the context is clear enough for an agent to decide.

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

create-teleporterA

Create a two-way (or one-way) region TELEPORTER between two points on existing scenes — the thing create-scene can only do at import time. Give a CENTER point (canvas px) on each scene (from/to, may be the same scene); a rectangle trigger is placed at each (sized in whole grid cells, grid-snapped by default) and a teleportToken behavior on each points at the OTHER — so a token that walks onto one is sent to the other. Both regions are created before either link is wired (the destination-UUID chicken-and-egg). twoWay:false makes it one-directional. Regions default to GM/Regions-layer visibility (no player-visible overlay). GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesThe second endpoint (may be the same scene).
fromYesThe first endpoint.
colorNoRegion tint hex (default "#3fb0ff").
toNameNoName for the to-side region.
twoWayNoWire the return teleporter too (default true). false = one-way from→to.
fromNameNoName for the from-side region.
snapToGridNoSnap each trigger rectangle to the grid cell(s) under its center (default true).
widthCellsNoTrigger width in whole grid cells, applied to both ends. Default 1.
heightCellsNoTrigger height in whole grid cells. Default 1.

TDQS

A4.2/5.0
Behavior4/5

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

Without annotations, the description provides important behavioral details: trigger rectangles are placed, grid-snapped by default, regions default to GM-only visibility, and the order of operations. It does not mention permissions or potential side effects, but covers most key behaviors.

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 somewhat lengthy but each sentence adds useful information. It is structured logically: purpose, then mechanics, then details. No wasted words, though it could be slightly more compact without losing clarity.

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

Completeness3/5

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

Given the complexity (9 parameters, nested objects, no output schema), the description covers purpose and behavior well but does not mention what the tool returns (e.g., region IDs or status). For a tool with no output schema, this is a notable gap, leaving the agent unsure of the response format.

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

Parameters4/5

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

The input schema has 100% coverage, so baseline is 3. The description adds value by explaining the overall concept of two-way vs one-way and the triggering mechanism, which goes beyond the parameter descriptions. It also mentions grid-snapping and GM visibility, which are behavioral but supplement parameter understanding.

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

Purpose5/5

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

The description clearly states the tool creates a region teleporter between two points on existing scenes, distinguishing it from create-scene which only does this at import time. It specifies the verb 'create' and resource 'teleporter' with clear scope.

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

Usage Guidelines4/5

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

The description explains when to use: for creating teleporters on existing scenes, and mentions that it handles the chicken-and-egg problem by creating both regions before linking. It doesn't explicitly state when not to use or compare to sibling tools like remap-teleporters, but the context is clear enough.

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

create-tilesA

Place one or more TILES (props, roof/overhead pieces, decals, video overlays) on a scene from Data-relative image paths. A tile's on-map SIZE is width/height in canvas pixels; x/y are the absolute-canvas-pixel top-left (see get-scene-dimensions for padding-aware cell→px math). Optionally set rotation, alpha, elevation, sort, texture tint/fit/scale, roof occlusion (occlusionMode: 1 fade / 4 radial so it fades when a token walks under), light/weather restrictions, video loop/autoplay/volume, hidden, locked. Per-tile error isolation; a 404 texture keeps the path but warns. Returns created ids. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
tilesYesOne or more tiles (props/roofs/overlays) to place on the scene.
sceneIdentifierYesScene id or exact name holding the placeables.

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description is the sole source of behavioral info. It discloses per-tile error isolation, 404 warnings, return of created IDs, and GM-only restriction. It also explains occlusion mode semantics, adding useful transparency.

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

Conciseness4/5

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

The description is a dense single paragraph that front-loads the main purpose and then details parameters. It is efficient, though it could be slightly more structured for easier scanning.

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

Completeness4/5

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

Given the complexity (many optional parameters, nested objects, no output schema), the description covers essential behavior, return value, and error handling. It is sufficient for an agent to understand usage without additional info.

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 100%, but the description adds context beyond parameter descriptions, e.g., clarifying that width/height are canvas pixels and referencing get-scene-dimensions for coordinate math. It explains occlusionMode values and video behavior, enhancing schema.

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

Purpose5/5

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

The description specifies the tool places TILES (props, roof pieces, decals, video overlays) on a scene from Data-relative image paths, clearly distinguishing it from siblings like create-drawings or create-lights.

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?

It correctly indicates GM-only usage and lists tile types, but does not explicitly state when to avoid this tool or mention alternatives. The context of sibling tools implies its specific role, but guidance is implicit.

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

create-wallsA

Create one or more WALL segments on a scene — surgical additions (block a corridor, add a door/secret door) to walls normally drawn in the app or shipped by a map pack. Each wall is a segment x0,y0→x1,y1 (or c:[4]) in absolute canvas pixels. Channels: move (0/20), light/sight/sound (0 none / 10 limited / 20 normal / 30 proximity / 40 distance — omitted channels default to 20 blocking), dir (one-way), door (1 door / 2 secret) + ds (state) + doorSound, and proximity thresholds. Per-wall error isolation. Returns created ids. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
wallsYesOne or more wall segments to create (omitted channels default to blocking).
sceneIdentifierYesScene id or exact name holding the placeables.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description discloses key behaviors: per-wall error isolation, returns created ids, GM-only access. Also details default channel blocking behavior ('omitted channels default to 20 blocking'). No mention of rate limits or auth beyond GM-only, but adequate.

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

Conciseness4/5

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

The description is a single dense paragraph but well-structured: starts with purpose, then coordinate/segment spec, then channels with defaults, then per-wall isolation and return. No wasted words, but could benefit from bullet points for readability.

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

Completeness4/5

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

Given the tool's complexity (2 parameters, one being an array of objects with many properties, no output schema), the description covers coordinate alternatives, channel defaults, door types, per-wall error isolation, and return value. It lacks output schema details but none is provided. Adequate for a complex mutation tool.

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 100%, and the description adds meaning beyond the schema: explains coordinate system ('absolute canvas pixels'), summarizes channel type options and defaults, clarifies door state values, and notes that 'omitted channels default to blocking'. This aids understanding beyond raw schema.

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

Purpose5/5

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

The description clearly states it creates WALL segments on a scene, specifying 'surgical additions' to existing walls. It distinguishes from walls 'normally drawn in the app or shipped by a map pack', and contrasts with sibling tools like 'update-walls' and 'delete-walls'.

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

Usage Guidelines4/5

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

Provides clear context: 'surgical additions (block a corridor, add a door/secret door)' to existing walls. Sibling tools don't create walls, so usage is implied. No explicit when-not-to-use or alternatives, but the context is sufficient.

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

delete-actorA

Permanently delete one or more world actors (NPCs/characters) by exact name or ID. IRREVERSIBLE — Foundry has no undo for document deletion; the actor is removed from the world directory. GM-only. Resolution is STRICT (exact id or exact name — no fuzzy matching), so look up the precise name/ID with list-actors first. If the deletion empties a folder the bridge itself created (e.g. "Foundry MCP Creatures"), that folder is auto-removed unless removeEmptyFolder is false.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifiersYesExact actor names or IDs to delete (e.g., ["ZZ MCP Smoke Test NPC"] or ["5GRD8GE7GJUWEbB2"])
removeEmptyFolderNoWhen true (default), also delete a bridge-created folder left completely empty by this deletion. Only ever removes mcp-generated, empty folders — never a user folder or one with remaining contents.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, description fully discloses key behaviors: irreversibility, GM-only requirement, strict matching (no fuzzy), and auto-removal of bridge-created empty folders. No contradictions.

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?

Single paragraph with three sentences, front-loaded with main action. Every sentence adds value; no fluff. Efficiently covers critical details.

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

Completeness5/5

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

For a destructive delete tool with no output schema, description covers all essential aspects: action, resolution, prerequisites, permissions, and side effects (folder removal). Complete given complexity.

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 100%, baseline 3. Description adds meaning: explains 'identifiers' as exact names/IDs and strict resolution, and clarifies 'removeEmptyFolder' only affects bridge-created empty folders. Adds value beyond schema.

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

Purpose5/5

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

Description clearly states 'Permanently delete one or more world actors (NPCs/characters) by exact name or ID.' It uses specific verb (delete) and resource (actors), and distinguishes from sibling tools that delete other types (e.g., delete-asset).

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?

Description advises looking up precise name/ID with list-actors first and notes GM-only access. It implies caution due to irreversibility, but does not explicitly state when not to use or alternatives like bulk-delete for multiple actors.

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

delete-assetA

Plane B (file channel, write). Delete a file under the Foundry Data/ root over WebDAV. REFERENCE-AWARE: consults find-asset-references first and REFUSES if any scene/actor/journal/playlist still points at it (pass force:true to override). Deleting a directory requires recursive:true. Refuses live world-DB paths. Requires MOLTEN_WEBDAV_PASSWORD.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoDelete even if references exist or the bridge is unavailable to check them.
recursiveNoRequired to delete a directory (and everything under it).
remotePathYesPath relative to the Foundry `Data/` root to delete.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description fully discloses behavior: consults find-asset-references, refuses if references exist, requires recursive for directories, and refuses live world-DB paths. It lacks explicit error handling or success output details.

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?

Five focused sentences with no fluff, each conveying key information. Slightly dense but efficient; could be reordered for better flow.

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

Completeness4/5

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

Covers purpose, prerequisites, key behaviors, and parameter usage. Missing details on return value or confirmation of success, but given the tool's simplicity and lack of output schema, it is adequately complete.

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 descriptions are 100% covered, but the tool description adds extra context for `force` (overrides reference check failure) and `recursive` (required for directories), enhancing understanding beyond the schema.

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

Purpose5/5

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

The description clearly states 'Delete a file under the Foundry `Data/` root over WebDAV,' providing a specific verb and resource. It distinguishes from sibling delete tools (e.g., delete-actor, delete-scene) by targeting file assets.

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

Usage Guidelines5/5

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

Explicitly describes when to use (with reference-awareness and directory deletion requirements), when not to use (refuses live world-DB paths), and alternatives (pass force:true to override). Also notes required password.

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

delete-cardsA

Permanently delete one or more Cards stacks by exact id or exact name. STRICT resolution — no fuzzy/substring matching. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifiersYesExact ids (preferred) or exact names of Cards stacks to delete.

TDQS

A4.2/5.0
Behavior4/5

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

Without annotations, the description adequately discloses behavioral traits: permanent deletion, strict exact matching, and GM-only permission requirement. It covers the key aspects of how the tool behaves, though it could mention if deletion is reversible or affects related data.

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

Conciseness5/5

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

The description is a single sentence conveying all essential information: action, resource, matching constraint, and permission requirement. No redundant or unnecessary words.

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

Completeness4/5

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

Given the tool's simplicity (one parameter, no output schema, no nested objects), the description covers the necessary context: what it does, how to use it (exact match), and who can use it (GM). It could mention if it only deletes stacks, not individual cards, but 'Cards stacks' implies that.

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

Parameters3/5

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

The schema covers 100% of the parameter with a description. The description adds 'STRICT resolution' which reinforces the schema's 'exact' qualifier, but provides little additional meaning beyond what the schema already states. 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?

The description clearly states the tool permanently deletes Cards stacks by exact id or exact name. It specifies the resource ('Cards stacks') and the action ('permanently delete'), distinguishing it from other delete tools like delete-folder or delete-actor. The mention of 'GM-only' adds an important constraint.

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

Usage Guidelines4/5

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

The description provides clear guidelines: use exact ids or names, no fuzzy/substring matching, and the tool is GM-only. However, it does not explicitly mention when to use this tool over other deletion tools or alternatives like list-cards to find exact names.

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

delete-chat-messagesA

Delete chat messages: by exact id(s) (a single id is an array of one), or all messages older than a timestamp (beforeTimestamp + confirm:true — handy for the known Molten big-log perf drag), or the entire log (clearAll + confirm:true). Both bulk modes need confirm:true. IRREVERSIBLE. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoExact message ids to delete (a single id is just an array of one).
confirmNoMust be true to run a bulk delete (clearAll or beforeTimestamp) — an explicit guard, both are irreversible. Not needed for a targeted ids delete.
clearAllNoDelete EVERY chat message. Requires confirm:true.
beforeTimestampNoDelete all messages with timestamp (ms epoch) older than this — purge an old log. Bulk + irreversible, so requires confirm:true.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden. It explicitly states the operation is IRREVERSIBLE and GM-only, and explains the confirm guard for bulk modes. This covers the key behavioral traits beyond what the schema provides.

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

Conciseness5/5

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

The description is concise—three short sentences covering all modes, constraints, and key warnings. Every sentence adds value, with no fluff or redundancy. The most critical information (IRREVERSIBLE, GM-only) is highlighted.

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

Completeness5/5

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

For a tool with no output schema and 4 parameters, the description provides complete context: all deletion modes, parameter relationships, confirm guard, and usage restrictions. It also includes a real-world performance hint. No gaps remain for an agent to safely invoke the tool.

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 100%, but the description adds significant meaning by explaining how parameters combine into three usage patterns (ids, beforeTimestamp+confirm, clearAll+confirm) and provides a performance-related use case for beforeTimestamp. This enhances understanding beyond the schema descriptions.

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

Purpose5/5

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

The description clearly states the verb 'Delete' and resource 'chat messages', and distinguishes three distinct deletion modes (by ids, before timestamp, clear all). This differentiates it from sibling tools like list-chat-messages and export-chat-log.

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

Usage Guidelines4/5

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

The description explains when to use each mode, including the requirement for confirm:true in bulk operations. It provides a specific use case ('handy for the known Molten big-log perf drag'). However, it does not explicitly compare with sibling delete tools for other resources, though the name makes it clear.

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

delete-drawingsA

Delete one or more Drawings from a scene by id (from list-drawings). Missing ids are reported, never fatal. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
drawingIdsYesDrawing ids to delete (from list-drawings).
sceneIdentifierYesScene id or exact name holding the placeables.

TDQS

A4.5/5.0
Behavior5/5

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

No annotations provided, so description carries full burden. It discloses id source, non-fatal error handling for missing ids, and GM-only restriction. This is comprehensive for a delete tool.

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

Conciseness5/5

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

Two short sentences, no redundancy. All information is relevant and front-loaded. Every word earns its place.

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

Completeness5/5

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

Covers all essential aspects for a simple delete tool: what, how (by id), where (scene), error handling, access restriction. No output schema needed; description is sufficient for an agent to invoke 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 coverage is 100%, baseline 3. Description adds little beyond schema: drawingIds already mentions 'from list-drawings' and sceneIdentifier already says 'id or exact name'. The overall behavior note on missing ids is not parameter-specific, so minimal added value.

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

Purpose5/5

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

Clearly states the verb 'Delete', the resource 'Drawings', and the scope 'from a scene by id'. References list-drawings for ids. Distinguishes from sibling delete tools by explicit resource type and additional notes (missing ids non-fatal, GM-only).

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

Usage Guidelines4/5

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

Provides context on when to use (for deleting drawings, ids from list-drawings) and behavior (missing ids reported, non-fatal) and access (GM-only). Lacks explicit when-not or alternatives, but context is clear enough for an agent to decide.

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

delete-folderA

Permanently delete a folder by exact name or ID. GM-only, IRREVERSIBLE. By default refuses to delete a folder that still contains documents or subfolders (safe for cleaning up empty leftover folders). Pass deleteContents:true to delete the folder AND everything inside it. Defaults to Actor folders; set type for other document folders.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFolder document type (default "Actor"). E.g. "Actor", "Item", "JournalEntry", "Scene".Actor
identifierYesExact folder name or ID to delete (e.g., "Foundry MCP Creatures")
deleteContentsNoWhen true, delete the folder and all documents/subfolders inside it. When false (default), only delete the folder if it is already empty.

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: irreversible deletion, default refusal for non-empty folders, and the option to delete contents. This covers safety and destructive nature comprehensively.

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?

Five sentences, each essential: action, restrictions, default behavior, optional override, param note. No redundancy. Front-loaded with critical warnings.

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

Completeness5/5

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

Despite no output schema, the description covers purpose, usage, parameters, and behavioral nuances completely. No gaps remain for a deletion tool of this complexity.

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

Parameters5/5

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

All three parameters have schema descriptions, and the tool description adds context: defaults to Actor folders, explains 'identifier' can be name or ID, and clarifies the avoidContents flag. The description matches the schema and adds value.

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

Purpose5/5

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

Clearly states 'Permanently delete a folder by exact name or ID', distinguishing from sibling tools like delete-actor or delete-item. The verb 'delete' and resource 'folder' are precise, and the scope 'GM-only, IRREVERSIBLE' adds specificity.

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

Usage Guidelines4/5

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

Provides clear when-to-use: GM-only, safe for cleaning empty folders, and when to pass deleteContents:true for forced deletion. Implies when not to use (when contents should be preserved). Could explicitly mention alternatives like moving items first, but the guidance is strong.

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

delete-itemA

Permanently delete one or more world-level Item documents (Items sidebar) by exact id or exact name. STRICT resolution — no fuzzy/substring matching, so it never deletes the wrong item. GM-only. To remove an item embedded on an actor instead, use remove-from-actor.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifiersYesExact ids (preferred) or exact names of world Items to delete.

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It discloses destructive nature ('permanently delete'), permission requirements ('GM-only'), and matching strictness ('STRICT resolution'). However, it does not mention error handling or side effects if identifiers are not found.

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

Conciseness5/5

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

Three sentences, each purposeful. No redundancy. Front-loads action and resource, then adds constraints and alternatives.

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

Completeness4/5

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

Covers core action, input format, and when to use alternative. Missing explicit mention of return value or success/failure behavior, but for a deletion tool this is acceptable.

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

Parameters5/5

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

Schema describes parameter generically; description adds crucial context: 'exact ids (preferred) or exact names', and reinforces strict matching. This goes beyond the schema's own parameter description.

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

Purpose5/5

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

The description clearly states the action ('permanently delete'), the resource ('world-level Item documents from Items sidebar'), and the method ('by exact id or exact name'). It distinguishes itself from the sibling tool 'remove-from-actor' by specifying scope.

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

Usage Guidelines5/5

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

Explicitly states 'GM-only' for permission context, specifies when not to use it (for embedded actor items, use 'remove-from-actor'), and emphasizes strict matching to avoid accidental deletion. Provides clear when-to-use and when-not-to-use guidance.

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

delete-journalA

Permanently delete one or more JournalEntry documents by exact id or exact name. STRICT resolution — no fuzzy/substring matching. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifiersYesExact ids (preferred) or exact names of journals to delete.

TDQS

A3.9/5.0
Behavior3/5

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

The description discloses destructive and irreversible operation ('permanently delete') and access restriction ('GM-only'), but with no annotations, it lacks details on effects (e.g., cascading deletes) or error handling. Adequate but not exhaustive.

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

Conciseness5/5

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

Two short sentences with no fluff. Front-loaded with action and resource, followed by constraints. Every sentence adds value.

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

Completeness3/5

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

Given no output schema, the description does not mention return values (e.g., success/failure count). It covers the operation adequately but lacks completeness on expected output. With simple deletion and no annotations, a score of 3 reflects this 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% with description of identifiers as exact ids or names. The description adds 'STRICT resolution' but does not provide additional meaning beyond schema. 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?

The description clearly states the tool deletes JournalEntry documents by exact id or name, distinguishing it from create, update, list, and search siblings. The 'GM-only' and 'permanently' further specify scope and nature.

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

Usage Guidelines4/5

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

It specifies when to use (exact identifiers) and constraints (no fuzzy matching, GM-only), but does not explicitly mention when not to use or compare with alternatives. However, sibling tools cover other operations, making the context clear.

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

delete-journal-pageA

Delete ONE page from a JournalEntry by page id (from list-journals), leaving the rest of the entry intact. Use to remove a stray/mistaken page instead of deleting and rebuilding the whole journal. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesPage id to delete (from list-journals).
journalIdYesJournal entry id or exact name.

TDQS

A4.5/5.0
Behavior4/5

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

Discloses that it deletes one page and leaves the rest intact, and that it is GM-only. Without annotations, this sufficiently describes behavior. Could mention permanence but it is implied.

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

Conciseness5/5

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

Extremely concise: two sentences plus 'GM-only' tag. No redundant information, front-loaded with key action and purpose.

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?

Complete for a simple delete tool with clear schema and no output schema. Addresses what, how, and who.

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 already describes both parameters with clear descriptions (pageId from list-journals, journalId as id or name). The description adds little beyond schema, but reinforces the source of pageId. Baseline 3 due to high schema coverage.

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

Purpose5/5

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

The description clearly states it deletes one page from a journal entry, specifying the use case of removing a stray/mistaken page. It distinguishes itself from sibling tools like delete-journal (deletes entire journal) and set-journal-page-visibility (hides page).

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

Usage Guidelines5/5

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

Explicitly states when to use this tool ('use to remove a stray/mistaken page instead of deleting and rebuilding the whole journal') and notes it is 'GM-only,' indicating the intended user.

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

delete-lightsA

Delete one or more AmbientLights from a scene by id (from list-lights). Missing ids are reported, never fatal. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
lightIdsYesAmbientLight ids to delete (from list-lights).
sceneIdentifierYesScene id or exact name holding the placeables.

TDQS

A4/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. It discloses that missing ids are not fatal and that the tool is GM-only, but does not detail side effects, irreversibility, or cascading impacts on the scene.

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, no wasted words. Front-loads the core action and follows with important behavioral notes.

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

Completeness4/5

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

For a simple delete tool with two parameters and no output schema, the description covers the essential behavior, error handling, and access control. It is sufficiently complete for the tool's complexity.

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 schema already describes both parameters. The description adds minimal value by referencing 'list-lights' for id sourcing, but does not elaborate on format or constraints beyond the schema.

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

Purpose5/5

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

Description clearly states it deletes AmbientLights from a scene by id, specifying the resource and action. It differentiates from sibling delete tools by explicitly mentioning AmbientLights and scene context.

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

Usage Guidelines4/5

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

Provides useful guidance: missing ids are reported but not fatal, and only GMs can use it. Implicitly suggests using 'list-lights' to get ids. However, it lacks explicit when-not-to-use or alternative tools.

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

delete-noteA

Remove one or more map-note pins from a scene by note id (from create-scene-notes). Missing ids are reported, never fatal. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteIdsYesNote ids to delete (from create-scene-notes/list-notes).
sceneIdentifierYesScene id or exact name holding the pins.

TDQS

A4.2/5.0
Behavior3/5

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

Without annotations, the disclosure of missing ids being non-fatal is valuable, but it omits details like whether deletion cascades, is reversible, or affects other data. 'GM-only' covers authorization, but more behavioral context would help.

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

Conciseness5/5

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

Extremely concise with three sentences, each adding unique value. The action is front-loaded, and no redundant information is present.

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

Completeness4/5

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

For a simple delete tool, the description covers input, behavior on missing ids, and permission. It is slightly incomplete by not discussing idempotency or side effects on the scene, but this is forgivable given the tool's nature.

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 covers both parameters with descriptions. The description adds contextual meaning by specifying that note ids come from 'create-scene-notes', which clarifies the expected format beyond the schema.

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

Purpose5/5

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

The description uses a specific verb 'Remove' and clearly identifies the resource as 'map-note pins' from a scene, distinguishing it from siblings that delete other entity types.

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

Usage Guidelines4/5

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

It states 'GM-only' for permission and notes that missing ids are not fatal, providing context for when to use. However, it lacks explicit guidance on when not to use or alternatives, though the sibling list implies this tool is for notes.

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

delete-playlistA

Permanently delete one or more Playlist documents by exact id or exact name. STRICT resolution — no fuzzy/substring matching. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifiersYesExact ids (preferred) or exact names of playlists to delete.

TDQS

A4.5/5.0
Behavior4/5

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

Describes permanent deletion, strict resolution, and GM-only requirement. Does not mention potential side effects like cascading deletes, but for a simple delete operation this is sufficient without annotations.

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

Conciseness5/5

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

Two sentences, no wasted words, front-loaded with action and target. Every sentence adds value.

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

Completeness5/5

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

For a simple delete tool, the description covers what it does, how it identifies targets, and its constraints. No output schema needed; behavior is predictable.

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% with a clear description of the 'identifiers' parameter. The description adds the 'STRICT resolution' context, but the parameter is already well-documented in the schema. Meets baseline with minor added value.

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

Purpose5/5

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

The description clearly states the action (permanently delete), target (Playlist documents), and method (by exact id or exact name). It distinguishes itself from siblings like update-playlist and other delete tools for different document types.

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

Usage Guidelines5/5

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

Explicitly states 'GM-only' for authorization and 'STRICT resolution — no fuzzy/substring matching' to clarify when not to use. Provides clear constraints for correct invocation.

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

delete-regionA

Delete one or more Regions from a scene by id. Missing ids are reported, never fatal — and if a surviving teleporter elsewhere still points at a deleted region, that orphan is warned. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
regionIdsYesRegion ids to delete.
sceneIdentifierYesScene id or exact name holding the region(s).

TDQS

A4.2/5.0
Behavior5/5

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

Without annotations, the description carries the full burden. It discloses non-fatal missing id handling, orphan teleporter warnings, and GM-only restriction—valuable behavioral details beyond the basic delete action.

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

Conciseness5/5

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

The description is two sentences, each providing essential information: the core action in the first, edge cases and access restriction in the second. No redundant text, well-structured.

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

Completeness4/5

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

The description covers the main behavior and important edge cases (missing ids, orphan warnings) and access control. It does not mention return values, but for a deletion tool, the provided information is largely sufficient.

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% with clear descriptions for both parameters. The tool description adds minimal extra meaning beyond the schema, matching the baseline for high coverage.

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

Purpose5/5

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

The description clearly states the tool deletes one or more regions by id, specifying the action, target, and method. It distinguishes from sibling delete tools by targeting regions and adds unique details like reporting missing ids and orphan teleporter warnings.

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

Usage Guidelines3/5

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

The description implies usage for deleting regions and indicates GM-only access, but it does not explicitly explain when to use this over alternatives like updating a region or when not to use it. No direct comparison to siblings is provided.

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

delete-rolltableA

Permanently delete one or more RollTable documents by exact id or exact name. STRICT resolution — no fuzzy/substring matching. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifiersYesExact ids (preferred) or exact names of tables to delete.

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, but the description itself discloses permanent deletion, exact matching requirement, and GM-only restriction. This adequately informs the agent of behavioral traits beyond 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.

Conciseness5/5

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

Two concise sentences with no waste. The key information is front-loaded: action, target, method, constraints. Every word earns its place.

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

Completeness5/5

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

For a tool with one simple parameter and no output schema, the description covers all necessary context: what it does, how to specify documents, who can use it, and important caveats (permanent, strict matching). It is fully complete.

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

Parameters3/5

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

The input schema already describes the 'identifiers' parameter as 'Exact ids (preferred) or exact names'. The tool description reinforces 'STRICT resolution', but adds minimal new meaning. Baseline 3 due to 100% schema coverage.

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

Purpose5/5

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

The description clearly states the action (permanently delete), the target (RollTable documents), and the method (exact id or name). It also specifies strict resolution and GM-only access, distinguishing it from sibling tools like create-rolltable or update-rolltable.

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

Usage Guidelines4/5

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

The description provides clear guidance on when to use the tool (delete RollTables by exact id/name) and constraints (strict resolution, GM-only). It does not explicitly mention alternatives or when not to use, but the context is sufficient.

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

delete-sceneA

Permanently delete one or more Scene documents by exact id or exact name. STRICT resolution — no fuzzy/substring matching. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifiersYesExact ids (preferred) or exact names of scenes to delete.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, description fully discloses permanent deletion, GM-only requirement, and strict matching. No behavioral 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?

Two sentences, no fluff. Purpose, method, restrictions all covered efficiently.

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

Completeness5/5

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

For a one-parameter deletion tool with no output schema, description covers all necessary aspects: action, identifiers, strictness, access.

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?

Parameter 'identifiers' is well-described in the schema. Description repeats but adds 'preferred' for ids. With 100% schema coverage, baseline is 3, no significant extra meaning.

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

Purpose5/5

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

Clearly states it deletes Scene documents by exact id or name, with strict resolution. Distinguishes from siblings like bulk-delete by specifying exact matching.

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?

States GM-only and strict resolution, implying use when exact identifiers are known. Does not explicitly mention alternatives but context is clear.

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

delete-soundsA

Delete one or more AmbientSounds from a scene by id (from list-sounds). Missing ids are reported, never fatal. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
soundIdsYesAmbientSound ids to delete (from list-sounds).
sceneIdentifierYesScene id or exact name holding the placeables.

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses that missing IDs are reported but never fatal, and that the tool is GM-only. It does not mention permanence or side effects, but for a delete tool this is adequate.

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

Conciseness5/5

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

Single sentence, front-loaded with verb and resource. No unnecessary words; every phrase adds value.

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

Completeness4/5

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

For a simple delete tool with 2 parameters and no output schema, the description covers auth (GM-only) and error handling (missing IDs non-fatal). Could mention return value, but not critical.

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 baseline is 3. The description adds minimal value by referencing 'from list-sounds', which the schema parameters already include. No additional syntax or format details beyond schema.

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

Purpose5/5

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

The description clearly states the tool deletes one or more AmbientSounds by id, sourced from list-sounds, which distinguishes it from sibling tools like create-sounds, update-sounds, etc.

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

Usage Guidelines4/5

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

It mentions GM-only, indicating restricted usage. It does not explicitly state when not to use or alternatives, but given it's a delete tool, the context is clear.

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

delete-tilesA

Delete one or more Tiles from a scene by id (from list-tiles). Missing ids are reported, never fatal. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
tileIdsYesTile ids to delete (from list-tiles).
sceneIdentifierYesScene id or exact name holding the placeables.

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, but the description discloses that missing IDs are reported but not fatal, and that the tool is GM-only. It does not detail all side effects, but the destructive nature is clear.

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

Conciseness5/5

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

The description is extremely concise—one sentence plus 'GM-only'—with no wasted words. It front-loads the action and key constraints.

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

Completeness4/5

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

The description covers the action, input source, behavior on missing IDs, and authorization. Without an output schema, it would benefit from mentioning return behavior, but it is sufficient for the tool's simplicity.

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

Parameters3/5

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

Schema coverage is 100%, so the description adds minimal value beyond the schema. It references 'from list-tiles' for tileIds, but that is also in the schema description. 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?

The description clearly states it deletes tiles from a scene by ID, specifies the source of IDs ('from list-tiles'), and explains behavior for missing IDs. It distinguishes the resource (tiles) from siblings like delete-drawings.

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

Usage Guidelines4/5

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

The description implies when to use (when needing to delete tiles) and provides context via 'from list-tiles' and 'GM-only'. It lacks explicit when-not-to-use or alternatives, but the tool is straightforward.

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

delete-tokensA

Remove one or more PLACED tokens from a scene by token id (from list-tokens) — clears the map instance only; the sidebar actor survives (delete-actor removes that). Missing ids are reported, never fatal. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenIdsYesPlaced-token ids to remove (from list-tokens). The sidebar actor is untouched.
sceneIdentifierYesScene id or exact name holding the placeables.

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavioral traits: it only affects the map instance (not actor), missing IDs are reported but never fatal, and it requires GM permissions. This is comprehensive and honest.

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

Conciseness5/5

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

The description is two efficient sentences that front-load the core action and add necessary nuance (survival of actor, missing IDs, GM-only). Every sentence earns its place with no redundancy.

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

Completeness4/5

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

For a simple 2-param tool with full schema coverage and no output schema, the description covers key aspects. It could explicitly mention return behavior (e.g., list of missing IDs), but the note that missing IDs are reported implies this. Overall very solid.

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 100% (both parameters have descriptions). The description adds value by clarifying that tokenIds come from list-tokens and are 'placed tokens', and that the sceneIdentifier refers to a scene holding placeables. This enhances understanding beyond schema.

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

Purpose5/5

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

The description clearly states the tool removes placed tokens from a scene by token ID. It distinguishes from delete-actor by specifying that only the map instance is cleared while the sidebar actor survives. This is a specific verb-resource combination.

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

Usage Guidelines5/5

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

The description provides explicit guidance: use this tool to remove placed tokens without deleting the actor; use delete-actor for full removal. It also mentions prerequisites (token IDs from list-tokens), that missing IDs are safe (non-fatal), and that the tool is GM-only.

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

delete-wallsA

Delete one or more Walls from a scene by id (from list-walls) — e.g. open up a sealed passage. Missing ids are reported, never fatal. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
wallIdsYesWall ids to delete (from list-walls).
sceneIdentifierYesScene id or exact name holding the placeables.

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 discloses key behaviors: GM-only authorization, non-fatal missing IDs, and the destructive nature (deleting walls). It could add details about irreversibility or response, but for a simple tool this is adequate.

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

Conciseness5/5

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

The description is a single efficient sentence with three clear clauses covering purpose, example, error handling, and authorization. No wasted words.

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

Completeness4/5

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

For a 2-parameter tool with no output schema, the description covers operation, error handling, and authorization. It lacks mention of prerequisites (scene/wall existence) or permanence, but the example and GM-only note provide reasonable completeness.

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 schema already describes both parameters. The description adds the example context but no new semantic details beyond reinforcing the IDs source and scene identifier purpose.

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

Purpose5/5

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

The description clearly states it deletes walls by ID from a scene, provides a concrete example ('open up a sealed passage'), and references the source tool ('list-walls'). This distinguishes it from other deletion tools among siblings.

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

Usage Guidelines4/5

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

It indicates when to use (delete walls), who can use it ('GM-only'), and error handling ('missing ids reported, never fatal'). Though it does not explicitly list alternatives, the context of 'by id from list-walls' implies a prerequisite, and the sibling list shows other delete tools.

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

download-assetA

Plane B (file channel, read-only). Download a file from under the Foundry Data/ root (over WebDAV) to a local path on this machine. For grabbing an existing asset to inspect or re-process.

ParametersJSON Schema
NameRequiredDescriptionDefault
localPathYesAbsolute local destination path. Parent directories are created if missing.
remotePathYesSource path relative to the Foundry `Data/` root.

TDQS

A3.7/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 full burden. It mentions 'read-only' and downloads via WebDAV, which adds transparency. However, it does not disclose whether files are overwritten, error handling for missing files, or authentication 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 description is short and front-loaded with key information. The 'Plane B (file channel, read-only)' prefix is somewhat obscure but still concise. Every sentence serves a purpose.

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

Completeness4/5

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

For a simple download tool with two parameters and no output schema, the description provides adequate context: source, destination, and use case. Missing error handling or auth details, but acceptable for this complexity 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 baseline is 3. The description adds context that remotePath is relative to 'Data/ root', which clarifies the schema. No additional parameter semantics beyond what schema already provides.

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

Purpose5/5

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

The description clearly states the tool downloads a file from the Foundry Data/ root to a local path, specifying direction and resource. It distinguishes from upload, copy, delete, and list siblings by focusing on remote-to-local transfer for inspection or reprocessing.

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 hints at usage ('for grabbing an existing asset to inspect or re-process') but does not explicitly state when not to use it or compare to alternatives like copy-asset or asset-url. Guidance is implied but not explicit.

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

export-chat-logA

Export the chat transcript to a LOCAL absolute file AND/OR a WebDAV Data/ path (returns its public URL). Formats: markdown | html | json | plaintext. Refuses to overwrite an existing file at either destination unless overwrite:true. WebDAV needs MOLTEN_WEBDAV_PASSWORD.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoExport only the most recent N messages (omit for the whole log).
formatNoTranscript format. markdown/plaintext strip HTML (roll totals kept); html keeps raw message markup (unstyled, not the rendered card); json is the structured records.markdown
localPathNoAbsolute local destination path (parent dirs created). At least one destination required.
overwriteNoAllow overwriting an existing file at either destination.
remotePathNoDestination relative to the Foundry Data/ root for the WebDAV copy, e.g. "worlds/your-world/exports/session-3.md". Returns a public HTTPS URL. Requires MOLTEN_WEBDAV_PASSWORD.
sinceTimestampNoOnly messages at/after this ms-epoch timestamp.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full transparency burden. It discloses the safe read-only nature (no mention of deletion), overwrite refusal, remote password requirement, and formats. It could mention that it only exports the current chat log but the parameters allow filtering. Good overall transparency.

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

Conciseness5/5

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

The description is concise—three sentences that front-load the main purpose and key behaviors. No unnecessary words or repetition. Every sentence adds information.

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

Completeness4/5

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

The description covers the tool's primary functions and constraints well. However, it does not specify the return value for local exports (only mentions public URL for WebDAV) and omits that parent directories are created for localPath (though schema mentions it). Given the complexity (6 params, no output schema), the description is nearly complete but has a minor gap in return value documentation.

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 100%, so the baseline is 3. The description adds value by summarizing the overall workflow (local and/or remote, overwrite policy, format kinds) and implying that at least one destination is needed (despite none being required in schema). This clarifies parameter relationships beyond the schema.

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

Purpose5/5

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

The description clearly states the tool exports a chat transcript to a local file and/or WebDAV path, specifying formats and overwrite behavior. It distinguishes itself from sibling tools like list-chat-messages or delete-chat-messages by focusing on export to persistent storage.

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

Usage Guidelines4/5

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

The description provides clear context on when to use the tool (exporting chat logs), including prerequisites like MOLTEN_WEBDAV_PASSWORD for remote destinations and overwrite behavior. However, it does not explicitly compare to alternatives or state when NOT to use it (e.g., for simply reading messages instead).

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

find-asset-referencesA

Reference integrity. Find every world document (scenes, actors, items, journals, playlists, macros, roll tables) that references a given asset path under Data/. Use this BEFORE deleting or moving a file to see what would break. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsYesOne or more Data-relative asset paths to look up, e.g. ["worlds/your-world/assets/maps/cavern.webp"].

TDQS

A4/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 full burden. It states 'Read-only,' which is a clear safety signal. However, it does not elaborate on side effects, rate limits, or return format beyond the implicit finding of documents.

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

Conciseness5/5

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

The description is extremely concise with three short sentences that front-load the purpose and usage. No unnecessary words, every sentence adds value.

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

Completeness4/5

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

For a simple one-parameter tool with no output schema, the description covers purpose, usage guidance, document types, and safety. It is adequately complete for an agent to understand and invoke the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, with the parameter 'paths' fully described in the schema. The description does not add extra semantics beyond what is already in the schema, 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?

The description clearly states the tool finds references to an asset path across multiple document types, using a specific verb ('Find') and resource ('world documents'). It distinguishes itself from siblings like delete-asset or move-asset by specifying it should be used before destructive actions.

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

Usage Guidelines4/5

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

The description explicitly says 'Use this BEFORE deleting or moving a file to see what would break,' providing clear when-to-use guidance. It does not explicitly mention alternatives, but the context implies this tool is for pre-deletion/move checks.

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

get-actorA

Retrieve D&D 5e character information optimized for minimal token usage. Returns: full stats (abilities, skills, saves, AC, HP), action names, active effects/conditions (name only), and ALL items with minimal metadata (name, type, equipped status, attunement) without descriptions. Perfect for checking equipment or identifying what to investigate further. Use get-actor-entity to fetch full details for specific items, spells, or effects.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesCharacter name or ID to look up. Also accepts a placed TOKEN id (from list-tokens) to read that token INSTANCE's live state — an unlinked NPC token can differ from its base actor.

TDQS

A4.7/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 that the tool returns minimal metadata without descriptions and is optimized for token usage. It also notes that identifier can accept a token ID for live state. However, it does not explicitly state that the operation is read-only or safe, which would improve transparency.

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

Conciseness4/5

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

The description is concise with four sentences and a clear structure: purpose, what is returned, when to use, and alternative. It front-loads the core purpose. While efficient, it could be slightly more compact by merging the last two sentences.

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

Completeness5/5

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

Given no output schema, the description covers the return data comprehensively: stats, actions, effects, items with minimal metadata. It also addresses the token ID use case. The description is complete enough for an agent to understand what to expect.

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

Parameters5/5

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

The input schema covers the identifier parameter with a brief description. The tool description adds significant value by explaining that the identifier can be a character name/ID or a token ID, and elaborates on how token IDs work (live state, unlinked NPC can differ), which is not present in the schema.

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

Purpose5/5

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

The description clearly states the tool retrieves D&D 5e character info optimized for minimal token usage, listing specific returned data (full stats, action names, active effects/conditions, items with minimal metadata). It distinguishes itself from the sibling tool get-actor-entity by directing users to that tool for full details.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('Perfect for checking equipment or identifying what to investigate further') and when not to use it ('Use get-actor-entity to fetch full details for specific items, spells, or effects'), providing clear guidance on alternatives.

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

get-actor-entityA

Retrieve full details for a specific entity from a character. Works for items (feats, equipment, spells), actions (strikes, special abilities), or effects/conditions. Returns complete description and all system data. Use this after get-actor when you need detailed information about a specific entity.

ParametersJSON Schema
NameRequiredDescriptionDefault
entityIdentifierYesEntity name or ID (can be item ID, action name, spell name, or effect name)
characterIdentifierYesCharacter name or ID

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It states retrieval of 'full details and all system data' implying read-only behavior, but does not disclose permissions, rate limits, or any other behavioral traits.

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

Conciseness5/5

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

Two sentences with no fluff. First sentence states purpose, second provides usage guidance. Well-structured and front-loaded.

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

Completeness4/5

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

Given 2 required parameters, no output schema, and high schema coverage, description provides adequate guidance. It could be more specific about return format or potential ambiguity in entityIdentifier, but overall complete for its complexity.

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 both parameters. Description adds no additional meaning beyond what schema already provides. Baseline score of 3 is appropriate.

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

Purpose5/5

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

Description clearly states verb (Retrieve) and specific resource ('entity from a character'), enumerates entity types (items, actions, effects), and mentions returning full details. It distinguishes itself from siblings like get-actor by specifying this tool is for detailed entity retrieval.

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?

Explicit guidance to use after get-actor when needing details about a specific entity. Provides context but does not list alternatives or when not to use the tool.

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

get-compendium-entryA

Retrieve a specific compendium entry (monster, item, spell, etc.) by pack id + entry id. Returns the full stat block — items, spells, abilities, effects, system data — needed for actor/item creation. Set compact=true for a condensed stat block when full detail is not needed. An SRD (dnd5e.*) pack id is refused — author only from the premium books (design.md §2.3).

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesID of the specific item to retrieve
packIdYesID of the compendium pack containing the item
compactNoReturn condensed stat block (recommended for UI performance). Includes key stats, abilities, and actions but omits lengthy descriptions and technical data.

TDQS

A4.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 burden. It implies a read operation via the verb 'retrieve' and mentions that SRD packs are refused. However, it does not explicitly state that the operation is read-only, nor does it disclose any potential side effects or authentication requirements. This is adequate but not comprehensive.

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

Conciseness5/5

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

The description is two sentences long, front-loading the core purpose and output, then adding two key usage guidelines. No redundant information, every sentence earns its place.

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

Completeness4/5

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

Given the tool has three parameters, no output schema, and no nested objects, the description adequately covers the purpose, parameter constraints, and return type (full stat block). It references external documentation for further detail. Slightly more detail on the return format could improve completeness, but it is sufficient for an agent to decide when to use the tool.

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

Parameters4/5

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

Schema description coverage is 100%, providing a baseline of 3. The description adds value by explaining the compact parameter's purpose (condensed stat block) and the restriction on pack IDs (only premium books, not SRD). This goes beyond the schema's basic parameter descriptions.

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

Purpose5/5

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

The description clearly states the tool retrieves a specific compendium entry by pack and entry ID, listing examples (monster, item, spell) and explicitly mentions the full stat block returned. This differentiates it from sibling tools like search-compendium or list-compendium-packs.

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

Usage Guidelines4/5

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

The description provides guidance on when to use the compact parameter and explicitly states that SRD pack IDs are refused, referencing design documentation. However, it does not explicitly state when not to use this tool versus other retrieval or search tools, though context implies it for specific entry retrieval.

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

get-current-sceneA

Get information about the currently active scene, including tokens and layout

ParametersJSON Schema
NameRequiredDescriptionDefault
includeHiddenNoWhether to include hidden tokens and elements (default: false)
includeTokensNoWhether to include detailed token information (default: true)

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description implicitly suggests a read-only operation but does not explicitly state it is non-destructive or require permissions. The behavioral traits are somewhat transparent for a getter, but could be more explicit about side effects or prerequisites.

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

Conciseness4/5

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

The description is a single short sentence with no redundant words. It is concise and front-loaded with the core purpose. However, it could be slightly more structured by separating the main purpose from the included elements.

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

Completeness4/5

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

Given the tool is simple with two optional boolean parameters and no output schema, the description is fairly complete. It covers what the tool does and what is included, though it omits specifics about the returned format or potential limitations.

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% with both parameters described. The description does not add extra meaning beyond the schema; it mentions 'tokens' and 'layout' which align with includeTokens but does not elaborate on includeHidden. 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?

The description clearly states the tool retrieves information about the currently active scene, specifying it includes tokens and layout. It distinguishes from sibling tools like 'list-scenes' (lists all) and 'update-scene' (modifies), providing a specific verb and resource.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention that to get a specific scene by ID, one might use another tool, or that this tool is only for the active scene. The description lacks usage context.

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

get-itemA

Retrieve a single world-level Item document with its full system data, embedded effects, flags, and flattened description. Resolves by id (most reliable), exact name, or case-insensitive name. Use list-items first to find ids. For an UNIDENTIFIED dnd5e item (system.identified=false) name is the mystery mask; the real source name is returned as trueName.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesWorld Item id (preferred) or name to look up.

TDQS

A4.5/5.0
Behavior4/5

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

Discloses resolution by id, exact name, or case-insensitive name, and the special behavior for unidentified items (trueName). No annotations exist, so description carries burden well.

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

Conciseness5/5

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

Three sentences, no filler. Front-loaded with core purpose, then resolution methods, then edge case. Every sentence adds value.

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

Completeness5/5

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

Describes returned data comprehensively (system data, effects, flags, description) and covers the unidentified item case. No output schema, so description fills the gap.

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?

Adds case-insensitivity and reliability details to the schema's identifier description. With 100% schema coverage, this provides meaningful extra context.

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

Purpose5/5

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

The description clearly states it retrieves a single world-level Item document with full data, distinguishing it from sibling list-items. The verb 'Retrieve' and resource 'Item' are specific.

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?

Explicitly advises using list-items first to find ids, providing clear context. Does not cover when not to use or all alternatives, but sufficient for a retrieval tool.

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

get-rolltableA

Read a RollTable's FULL contents — every entry with its roll range, weight, drawn flag, the result text (HTML/@UUID enrichers intact), and any linked items surfaced as uuid + label — sorted low-to-high so a d table reads 1..N. The deterministic way to inspect or audit a table's entries without brute-force rolling (list-rolltables gives only a per-table summary; roll-on-table draws one random entry). Resolves by id or exact name.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesTable id or exact name.

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It details return content (every entry, roll range, weight, drawn flag, result text with enrichers, linked items) and sorting order (low-to-high). It implies read-only behavior ('Read', 'inspect or audit') without side effects. Sufficient for transparency.

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

Conciseness5/5

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

Two sentences front-loaded with the primary action and data details. Every clause serves a purpose: describes content, sorting, determinism, sibling contrast, and resolution method. No wasted words.

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

Completeness5/5

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

Given a single parameter, no output schema, and no annotations, the description thoroughly covers what the tool returns, its sorting, and its deterministic nature. An agent can fully understand the tool's behavior and output without additional information.

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 parameter 'identifier', which already states 'Table id or exact name.' The description adds the phrase 'Resolves by id or exact name', slightly reinforcing but not adding substantial new meaning. 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?

The description uses a specific verb ('Read') and resource ('RollTable's FULL contents'), lists the exact data returned, and distinguishes from siblings 'list-rolltables' (summary only) and 'roll-on-table' (random draw). It clearly states what the tool does.

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

Usage Guidelines4/5

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

The description explicitly positions the tool as 'the deterministic way to inspect or audit' and contrasts with alternative tools ('list-rolltables' gives summary, 'roll-on-table' draws random). It also specifies resolution by 'id or exact name'. Lacks explicit 'when not to use', but the contrast is sufficient.

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

get-scene-dimensionsA

Read a scene's live PADDED-CANVAS geometry (by id or exact name): total width/height, the background rect within the padding (sceneX/sceneY/sceneWidth/sceneHeight), grid size/distance, and rows/columns. A scene insets its background by a padding border, so a placeable's canvas pixel is NOT just gridCell×size — use sceneX/sceneY to offset. Feeds the legend→pins cell→px math. Works on any scene (no need to activate it).

ParametersJSON Schema
NameRequiredDescriptionDefault
sceneIdentifierYesScene id or exact name.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description fully carries the behavioral disclosure. It explains the padding inset and its implication for placeable pixel calculations ('NOT just gridCell×size'), provides the exact returned fields, and notes that no scene activation is needed. No contradictions present.

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

Conciseness5/5

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

The description is three sentences, each serving a clear purpose: stating the main function and return values, explaining the padding nuance, and noting the usage context. It is front-loaded with the key action and is free of extraneous words.

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

Completeness5/5

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

Given the single parameter and no output schema, the description comprehensively explains what the tool returns and the behavioral nuance about padding. It fully informs an agent about the tool's purpose and output without needing additional schema details.

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% with the parameter 'sceneIdentifier' described as 'Scene id or exact name.' The description adds minimal extra meaning by reiterating 'by id or exact name' and adding 'works on any scene,' but does not significantly deepen understanding beyond the schema.

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

Purpose5/5

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

The description clearly states it reads a scene's live padded-canvas geometry, specifying exact properties like total width/height, background rect, grid size/rows/columns. This distinguishes it from siblings like 'get-current-scene' which returns general scene data, and 'list-scenes' which lists scenes.

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

Usage Guidelines4/5

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

The description indicates the tool is for coordinate math ('feeds the legend→pins cell→px math') and notes that it works on any scene without activation. While it doesn't explicitly contrast with alternatives, the context implies use for geometry calculations, and sibling tools like 'get-current-scene' serve different purposes.

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

get-world-infoB

Get basic information about the Foundry world and system

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

The description lacks detail on what 'basic information' includes, such as system rules, world settings, or module data. No annotations exist, so the description must convey safety and behavior—it does not. It only says 'get', implying read-only, but no confirmation.

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

Conciseness4/5

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

The description is a single sentence that front-loads the purpose. It is concise but could be slightly more informative without being wordy. It earns its place but is on the lean side.

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

Completeness3/5

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

Given no output schema, the description should explain what 'basic information' includes. It is vague. For a tool with zero parameters and a generic purpose, this is minimally adequate but not complete—leaves agent guessing about return content.

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

Parameters4/5

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

There are no parameters, and the schema coverage is 100%, so the description need not add parameter details. The baseline for 0 parameters is 4; the description adds no further info, which is acceptable.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'basic information about the Foundry world and system'. It distinguishes from sibling tools like get-actor or get-scene-dimensions by targeting world/system info.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There is no explicit mention of scenarios, prerequisites, or when not to use it. With many sibling getter tools, this omission hinders agent decision-making.

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

import-cardsA

Instantiate a core Foundry PRESET deck into the world (e.g. "pokerDark"/"pokerLight" — a standard 52-card deck). Cards have no premium-book compendium, so this is the ready-made deck path; build themed D&D decks with create-cards. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional name for the imported stack.
presetYesCore preset deck key — e.g. "pokerDark" / "pokerLight" (a standard 52-card deck).
folderNameNoOptional folder to place the stack in (created if absent).

TDQS

A4/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 notes that cards have no premium-book compendium and that the tool is GM-only, which adds behavioral context. However, it does not disclose side effects, permissions beyond GM, or whether the operation is destructive or read-only.

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

Conciseness5/5

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

The description is two concise sentences that front-load the action and key details. Every sentence adds value: purpose, example, alternative, and GM restriction. No filler or redundancy.

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

Completeness4/5

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

For a simple 3-parameter tool with no output schema, the description adequately covers purpose, usage, and constraints. It could briefly mention that the deck is imported as a stack, but overall it is sufficiently complete given the tool's simplicity.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds examples for 'preset' ('pokerDark'/'pokerLight') but does not significantly enhance understanding beyond the schema. The optional parameters 'name' and 'folderName' are not elaborated upon.

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

Purpose5/5

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

The description clearly states the tool imports a Foundry PRESET deck with examples ('pokerDark'/'pokerLight'). It distinguishes itself from 'create-cards' for themed D&D decks, providing a clear verb+resource scope.

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

Usage Guidelines4/5

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

The description explicitly says to use this tool for ready-made decks and directs to 'create-cards' for themed D&D decks. It implies GM-only usage, which serves as a usage constraint, though it does not explicitly state when not to use it beyond the alternative.

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

import-itemA

[D&D 5e only] COPY an existing item from a compendium pack onto an actor (or into the world Items sidebar), keeping its artwork, full system data, and activities. PREFER THIS over add-item for any real piece of gear — a plain greatsword, a Potion of Healing, a +1 shield, a magic weapon: copying brings the correct PHB/DMG 2024 stats AND the graphic, where authoring from scratch does not.

WORKFLOW: 1) find the item with search-compendium (prefer the 2024 packs: "dnd-players-handbook.equipment", "dnd-dungeon-masters-guide.equipment" — premium books ONLY, never the dnd5e.* SRD); 2) import-item with its packId + itemId; 3) for a CUSTOM item, copy the closest base then refine it with update-actor-item / manage-activity / manage-effect and rename via name.

Optional on-copy tweaks: name (rename), quantity, equipped, identified, container (nest in a bag/chest), folder (world target only). Target an actor with actorIdentifier, or omit it to build a reusable world Item. Use add-item only for genuine homebrew with no compendium base.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoRename the copy (e.g. when adapting a base item into a custom magic item).
folderNoWhen copying to the world (no actorIdentifier), place the item in this folder.
itemIdYesEntry id within the pack (from search-compendium / get-compendium-entry results).
packIdYesCompendium pack id holding the item (e.g. "dnd-players-handbook.equipment", "dnd-dungeon-masters-guide.equipment"). Premium MM/PHB/DMG books ONLY — never the dnd5e.* SRD (design.md §2.3). Find it with list-compendium-packs / search-compendium.
equippedNoSet equipped state on the copy (equippable items only; ignored otherwise).
lootCopyNo[actor target] Also mint a matching WORLD Item (same art + stats) so the party can loot this gear afterward (rule 9). DEFAULT ON for magic items (rarity set or "mgc"); pass false to suppress, or true to force a loot copy of a mundane item too. Ignored for a world-item target.
quantityNoOverride the stack count on the copy.
containerNoId or name of an EXISTING container on the same target to nest the copy inside.
identifiedNoSet identified state (false = mystery/unidentified loot).
lootCopyFolderNoFolder for the loot copy (created if absent). Default "Loot".
actorIdentifierNoTarget actor (name or id, partial match) to copy the item onto. Also accepts a placed TOKEN id (from list-tokens) — the copy then lands on that token INSTANCE's own delta, not the base actor. Omit to copy into the world Items sidebar instead.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description must fully disclose behavioral traits. It explains that the tool copies artwork, full system data, and activities, and it details optional on-copy tweaks. It also describes the different behaviors when targeting an actor versus the world, including the lootCopy mechanism and token instance treatment. However, it omits potential side effects like duplicate handling or error behavior on invalid inputs, preventing a perfect score.

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 structured well: it starts with the main purpose and preference, then provides a workflow, and finally details optional parameters. It is somewhat lengthy but each sentence adds value—no fluff. While it could be more concise, the structure is logical and front-loaded, earning a 4.

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

Completeness4/5

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

Given the complexity (11 parameters, no output schema), the description covers the essential context: the tool's core behavior, when to use it, the target distinction (actor vs world), loot handling, and SRD restrictions. It does not explain return values, but that is acceptable without an output schema. Some minor edge cases (e.g., error handling) are missing, but overall it is sufficiently complete for effective use.

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

Parameters4/5

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

The input schema already has 100% description coverage for all 11 parameters, so the baseline is 3. The description adds meaningful context beyond the schema, such as explaining the lootCopy default for magic items, the SRD restriction for packId, and the token instance nuance for actorIdentifier. It also provides a workflow that ties parameters together, which enhances understanding. Thus, a score of 4 is warranted.

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

Purpose5/5

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

The description clearly states the tool's purpose: COPY an existing item from a compendium pack onto an actor or world Items sidebar. It uses a specific verb ('COPY') and resource ('existing item'), and explicitly distinguishes itself from the sibling add-item by stating a preference for real gear. This leaves no ambiguity about what the tool does and how it differs from alternatives.

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

Usage Guidelines5/5

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

The description provides explicit usage guidelines: it advises to prefer import-item over add-item for any real piece of gear, provides a three-step workflow (search-compendium, import-item, refine), and specifies when to use add-item (genuine homebrew). It also warns against using SRD packs. This level of detail gives the agent clear when-to-use and when-not-to-use instructions.

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

import-rolltableA

Copy a whole RollTable from a compendium pack into the world (e.g. a DMG treasure / magic-item table). Roll tables are world-only at roll time, so a published table must be imported before roll-on-table can use it; the embedded results — including their @UUID item links — come along intact. Premium-book packs only (SRD refused). GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesThe RollTable document id within the pack.
packIdYesCompendium pack id holding the table (e.g. dnd-dungeon-masters-guide.tables).
folderNameNoOptional folder to place the imported table in (created if absent).

TDQS

A4.2/5.0
Behavior4/5

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

Given no annotations, the description carries full burden. It discloses that embedded results with @UUID links come intact, that the tool is GM-only, and that it only works with premium-book packs. It doesn't mention if the import is additive or overwrites, but 'Copy' implies duplication. The description provides reasonable transparency.

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

Conciseness5/5

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

The description is extremely concise with three sentences that front-load the core action, then add context and constraints. Every sentence adds value, and there is no redundant information.

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

Completeness4/5

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

The description explains why the tool is needed (world-only roll tables), what is copied (embedded results with UUIDs), and user restrictions (GM, premium packs). It lacks details on error handling or exact outcome, but for a simple import tool without output schema, it is sufficiently 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 the schema already documents each parameter. The tool description does not add meaningful detail beyond what is in the schema. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Copy a whole RollTable from a compendium pack into the world') and provides a concrete example (DMG treasure/magic-item table). It distinguishes from siblings like create-rolltable and roll-on-table by explaining the import necessity.

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

Usage Guidelines4/5

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

The description explains when to use this tool (before roll-on-table) and why (roll tables are world-only at roll time). It also specifies constraints: premium-book packs only (SRD refused) and GM-only. However, it does not explicitly compare to alternative tools like import-item or list-rolltables.

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

inspect-pc-advancementA

Read-only: report the player CHOICE points a premium class exposes up to a level — each advancement's id, type (Trait/ItemChoice/Subclass), how many to pick, and the legal options — so the skill can ask the DM and fill create-pc's choices map without inventing anything. Resolve by className OR classUuid (exactly one); premium books only, never the SRD. Touches no actor.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNo
classNameNo
classUuidNo

TDQS

A3.8/5.0
Behavior4/5

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

Since no annotations are provided, the description carries the full burden. It explicitly states the tool is read-only and touches no actor, disclosing key behavioral traits. Constraints like premium-only are also included.

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 two sentences, concise and front-loaded with 'Read-only'. It is efficient with no wasted words, though the second sentence could be slightly more structured.

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

Completeness3/5

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

Given no output schema or annotations, the description covers what it does, key constraints, and how to use parameters. However, it lacks details on output structure, error handling, and default behavior when no identifier is provided.

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

Parameters3/5

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

Schema coverage is 0%, so the description must add meaning. It explains that className and classUuid are resolution keys and that exactly one should be used. The level parameter is mentioned but its default and behavior if omitted are not clarified.

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 it's a read-only tool that reports player choice points for a premium class up to a level, specifying the information returned. It does not explicitly differentiate from sibling tools but the unique function is evident.

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?

Explicitly states that resolution is by className OR classUuid (exactly one) and that it works only for premium books, not SRD. This provides clear usage context, though alternatives are not mentioned.

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

level-up-pcA

Add ONE level to an existing PC (type:character) and apply that level's advancement IN PLACE. Same className as a class the PC already has → a single-class level-up; a class it does NOT have → a MULTICLASS add (the PC gets the 2024 multiclass proficiency SUBSET, not the full first-level kit). HP/features/subclass(@ the class's level 3)/spell-slots scale; @scale stays native. Like create-pc: call with no/partial choices to get a needsChoices[] dry-run (e.g. the subclass options at level 3 — the actor is NOT touched); fill choices (level → advancement-id → {chosen|selected|uuid}) and re-call. ASI ability bumps are NOT applied here — raise the final scores with update-actor; a feat taken at an ASI tier is added with add-feature. If a required advancement FAILS to apply, the PC is rolled back to its prior level and success:false is returned with errors[]. Required: actorIdentifier, className. Returns {success, actor (incl. classLevel + classes[]), applied[], needsChoices[], unresolvedScale[], errors[], warnings[]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
hpModeNoavg
choicesNo
classNameYes
acceptDefaultsNo
actorIdentifierYes

TDQS

A4.9/5.0
Behavior5/5

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

Despite no annotations, the description thoroughly discloses behavioral traits: in-place application, rollback on failure, dry-run mode that doesn't modify the actor, multiclass proficiency subset, HP/feature/spell-slot scaling, and the return structure. No contradictions.

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

Conciseness5/5

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

The description is efficient: every sentence adds value, starting with the core action, then nuances, then alternatives and error handling. It is well-structured and not verbose.

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

Completeness5/5

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

Given the tool's complexity, no output schema, and no annotations, the description is remarkably complete. It covers all key aspects: input parameters, behavior, dry-run, rollback, return values, and cross-references to sibling tools.

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

Parameters4/5

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

With 0% schema coverage, the description adds significant meaning for most parameters: className behavior, actorIdentifier requirement, choices structure detailed as level->advancement-id->{chosen,selected,uuid}. However, acceptDefaults and hpMode are not explicitly mentioned, relying on inference. Still, it compensates well overall.

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

Purpose5/5

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

The description clearly states it adds one level to an existing PC, distinguishing between single-class and multiclass levels. It also explicitly distinguishes from sibling tools like create-pc, update-actor, and add-feature by specifying their roles.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool versus alternatives: ASI bumps must be done via update-actor, feats via add-feature. It also explains the dry-run pattern and rollback behavior, giving clear context for use.

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

list-actor-ownershipB

List current ownership permissions for actors, showing which players have what access levels.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorIdentifierNoOptional: specific actor name/ID to check, or "all" for all actors
playerIdentifierNoOptional: specific player name to check ownership for

TDQS

B3.1/5.0
Behavior2/5

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

No annotations exist, and the description does not disclose behavioral traits such as required permissions, whether the operation is read-only, or any side effects. It merely restates the listing purpose.

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

Conciseness4/5

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

The description is a single concise sentence (13 words) with no wasted words. It is front-loaded with the core action. Slightly more structure (e.g., separate param notes) could improve, but overall 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 no output schema and two optional parameters, the description fails to specify the output format, how 'all' works for actorIdentifier, or how permissions are returned. This leaves significant gaps for the agent.

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 for both parameters is 100%, so the schema already documents their meaning. The description adds no additional context beyond the schema, achieving the baseline for high coverage.

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

Purpose5/5

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

The description clearly states a specific verb ('list') and resource ('ownership permissions for actors'), and explicitly mentions the output ('showing which players have what access levels'). It distinguishes from sibling tools like 'list-actors' and 'set-actor-ownership'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives (e.g., get-actor or set-actor-ownership). It lacks explicit 'when to use' or 'when not to use' instructions.

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

list-actorsC

List all available characters with basic information

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOptional filter by character type (e.g., "character", "npc")

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 full responsibility for behavioral disclosure. It only states 'list all available characters' without indicating read-only nature, pagination, response size, or what 'basic information' entails. This is minimal transparency.

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

Conciseness4/5

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

The description is a single concise sentence with no redundancy. It is front-loaded with the verb and resource, but could be more efficient by including key details.

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

Completeness2/5

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

Given the lack of output schema, the description does not specify return fields (e.g., name, id, type) or any limits. It is incomplete for a listing operation, leaving the agent uncertain about the response structure.

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 parameter 'type', and its description is present in the schema. The tool description adds no extra meaning beyond the schema, so baseline score 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?

The description states 'List all available characters with basic information', clearly indicating the action (list) and resource (characters/actors). It implicitly differentiates from sibling tools like 'get-actor' (singular) and other list-* tools by naming the entity, but lacks explicit 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 is provided on when to use this tool over alternatives such as 'get-actor' for specific actors or 'search-actor-contents' for filtered searches. The agent must infer 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.

list-assetsA

Plane B (file channel, read-only). List the immediate contents of a directory under the Foundry Data/ root over WebDAV (folders + files, with size / type / public URL). Use to browse uploaded assets, e.g. worlds/your-world/assets/audio. Empty/omitted path lists the Data/ root.

ParametersJSON Schema
NameRequiredDescriptionDefault
remotePathNoDirectory path relative to the Foundry `Data/` root (a leading "Data/" or "/" is tolerated). Omit or "" for the Data/ root, e.g. "assets" or "worlds/your-world".

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavioral traits: it labels itself 'read-only', states it lists only immediate (non-recursive) contents, and specifies return details (size/type/public URL). No contradictions.

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 defines the tool's function, the second provides usage guidance. No unnecessary words; information is front-loaded and efficiently presented.

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

Completeness4/5

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

For a simple list tool with one parameter and no output schema, the description covers what the tool returns (folders + files with size/type/public URL) and the default behavior. Could mention limits or authentication but is adequate for agent 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 coverage is 100% and the schema already provides a detailed description for the remotePath parameter. The description adds the default behavior (empty/omitted lists root) but does not add significant meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the verb 'List' and the resource 'contents of a directory under Foundry Data/ root'. It specifies return items (folders + files with size/type/public URL) and gives an example path. This differentiates it from sibling tools like asset-info (single asset) and upload-asset.

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

Usage Guidelines4/5

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

The description says 'Use to browse uploaded assets' with an example, clearly indicating when to use this tool. It does not explicitly mention when not to use or compare to alternatives, but the context of sibling tools makes this clear.

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

list-cardsB

List Cards stacks with id, name, type (deck/hand/pile), and card count.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose any behavioral traits such as read-only nature, side effects, or permissions required. With no annotations, the description carries full burden for safety info but fails to deliver.

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, concise sentence that is front-loaded with the essential action and resource. No unnecessary words.

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

Completeness4/5

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

Given the tool has no parameters and no output schema, the description provides the key return fields. However, the term 'cards stacks' is not explained, and there is no mention of ordering or filtering. Still, it is reasonably complete for a simple list tool.

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

Parameters4/5

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

There are no parameters, so schema coverage is 100%. The description adds value by specifying the returned fields (id, name, type, card count), which is useful for understanding the output.

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

Purpose4/5

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

The description clearly states the tool lists cards stacks with specific fields (id, name, type, card count). The verb 'list' and resource 'cards stacks' are specific. However, it does not define what a 'cards stack' is, which could be ambiguous.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool over alternatives (e.g., list-actors, list-items). There is no context about when not to use it or prerequisites.

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

list-chat-messagesA

List recent chat messages (id, author, time, whisper/blind, content preview). Use to find ids for delete, verify a post, or preview before export. contentMode:"none" keeps it cheap on a huge log.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoReturn the most recent N messages (chronological, newest last).
contentModeNoReturn raw content HTML, HTML stripped to text, or omit content (cheap on big logs).text
sinceTimestampNoOnly messages with timestamp (ms epoch) at/after this value.

TDQS

A4/5.0
Behavior3/5

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

Without annotations, the description provides some behavioral info: it lists returned fields and notes that contentMode:none is cheap. However, it does not disclose ordering (which is in schema but not in description) or scope (all messages or only current user's). No side effects or read-only indication.

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 only two sentences, immediately stating the tool's purpose and then providing use cases and a tip. No filler words.

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

Completeness4/5

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

Given the low complexity (3 parameters, no output schema), the description covers purpose, use cases, fields returned, and a performance tip. Missing details like ordering and scope, but overall adequate.

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% with each parameter already described. The description adds minimal value beyond the schema, only repeating the cheapness tip for contentMode:none. 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?

The description clearly states the tool lists recent chat messages with specific fields (id, author, time, whisper/blind, content preview), and it provides explicit use cases (find ids for delete, verify a post, preview before export) that help differentiate it from siblings like delete-chat-messages and export-chat-log.

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

Usage Guidelines4/5

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

The description explicitly states when to use the tool (to find ids for delete, verify, preview) and provides a usage tip (contentMode:none for cheap operation). However, it does not mention when not to use it or mention alternatives like export-chat-log for full export.

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

list-compendium-packsA

List the available compendium packs. SRD (dnd5e.*) packs are excluded — only the premium book packs (and any other non-SRD packs) are listed (design.md §2.3).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOptional filter by pack type

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description discloses the exclusion of SRD packs, but lacks details about whether the operation is read-only, permissions needed, or return format.

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, no fluff, directly conveys purpose and key constraint.

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 description references an external document (design.md §2.3) that the agent cannot access, and fails to describe the return value shape, which is critical given no output schema.

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 description adds no additional meaning to the optional 'type' parameter beyond the schema's description.

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

Purpose5/5

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

The description clearly states the verb 'list' and the resource 'compendium packs', and specifies the exclusion of SRD packs (dnd5e.*), distinguishing it from siblings like 'read-pack' and search-compendium tools.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool (listing premium/non-SRD packs) but does not explicitly state when not to use it or name alternative tools.

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

list-drawingsA

List every Drawing on a scene — id, origin (x/y), shape type + dimensions (width/height/radius/pointCount), rotation, label text, fill type, stroke color, hidden/locked/interface. Read-only; the inspect step before update-drawings / delete-drawings.

ParametersJSON Schema
NameRequiredDescriptionDefault
sceneIdentifierYesScene id or exact name holding the placeables.

TDQS

A4.7/5.0
Behavior5/5

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

No annotations are provided, so the description carries full burden. It explicitly states 'Read-only', which is a key behavioral trait for a listing tool. It also implies no filtering by saying 'List every Drawing on a scene', which informs the agent about data volume and scope.

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 that is front-loaded with the action and resource, then efficiently lists all returned fields. No unnecessary words or redundancy. Every part earns its place.

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

Completeness5/5

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

Given the tool's simplicity (one parameter, no output schema), the description is comprehensive. It explains what the tool lists, the fields returned, its read-only nature, and its role in a sequence with update/delete. No gaps remain.

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 baseline is 3. The description does not add any additional meaning beyond the schema's description of sceneIdentifier. The parameter's purpose is already clear from the tool name and schema.

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

Purpose5/5

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

The description clearly specifies the verb 'List' and the resource 'Drawings on a scene'. It enumerates the exact fields returned (id, origin, shape type, dimensions, etc.), distinguishing it from sibling tools like update-drawings and delete-drawings by noting its role as the 'inspect step' before those.

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

Usage Guidelines5/5

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

Explicitly states 'the inspect step before update-drawings / delete-drawings', giving clear guidance on when to use this tool and pointing to alternative tools for subsequent mutations. Also declares it is 'Read-only', which helps the agent decide safety.

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

list-foldersA

Read the sidebar folder TREE — every world folder (or one document type) in tree order with its id, nesting depth + "/"-joined path, hex color, parent, direct document count, and subfolder count. The inspect step the folder tools were missing: find the ids/names for update-folder (rename/recolor/reparent), delete-folder, move-documents, and the folder params on the create tools — without guessing what exists. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter to one document type (Actor, Scene, …). Omit for the whole sidebar.

TDQS

A4.6/5.0
Behavior5/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 explicitly declares the tool is 'Read-only' and lists all output fields (id, depth, path, color, parent, document counts, subfolder count). This gives full behavioral transparency with no contradictions.

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 densely packed with information but remains readable. It front-loads the core purpose ('Read the sidebar folder TREE') and uses clear punctuation. Slightly verbose with enumeration of use cases, but every sentence adds value.

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

Completeness5/5

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

No output schema exists, but the description fully compensates by detailing the return fields (id, depth, path, color, parent, document counts) and explicit use cases. For a read-only list tool with one optional parameter, this is complete and actionable.

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%: the only parameter 'type' has a comprehensive description in the schema itself. The description's mention of the parameter ('Filter to one document type... Omit for the whole sidebar') essentially repeats the schema description without adding new semantic meaning. 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?

The description clearly states it reads the sidebar folder tree, providing tree order, ids, nesting depth, path, color, parent, document counts. It distinguishes itself from sibling tools by positioning itself as the 'inspect step' missing from other folder tools, explicitly naming update-folder, delete-folder, move-documents, and create tools.

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

Usage Guidelines5/5

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

The description explicitly states when to use: to find ids/names for folder operations without guessing. It contrasts with other folder tools that need ids, and implies not to use when simply listing documents. The last sentence 'without guessing what exists' provides clear context.

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

list-itemsA

List world-level Item documents, optionally filtered by type, name substring, or folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by item type (e.g. "weapon", "spell"). Omit to return all types.
folderNoFilter to items inside this folder (name or ID).
nameFilterNoCase-insensitive substring match on item name.

TDQS

A3.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 states it lists items but does not disclose any behavioral traits such as pagination, ordering, read-only nature, or potential limits. The description is minimal and does not sufficiently inform the agent about the tool's behavior beyond its basic function.

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 concise sentence of 12 words, front-loading the core function ('List world-level Item documents') and immediately following with the optional filters. There is no redundant or unnecessary text.

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

Completeness3/5

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

Given no output schema, the description does not specify the return format (e.g., full item details, IDs) or any constraints like pagination or maximum results. For a listing tool among many siblings, it is adequate but lacks completeness in setting expectations for the agent.

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 input schema has 100% description coverage, so each parameter is already documented within the schema. The tool description adds no additional meaning or usage context beyond what is in the schema, resulting in a baseline score of 3.

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

Purpose5/5

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

The description clearly states the verb 'List', the resource 'world-level Item documents', and specifies optional filters (type, name substring, folder). It distinguishes from sibling tools like 'list-actors' or 'list-assets' by explicitly naming the resource.

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 does not provide explicit guidance on when to use this tool versus alternatives. While it is clear from context that this is for listing items, there is no mention of when not to use it or which sibling tool might be more appropriate for similar but different queries.

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

list-journalsA

List all journal entries, or read a specific journal/page. Without parameters: lists all journals with their pages (id, name, type). With journalId: reads the journal's first text page content and shows all available pages. With journalId + pageId: reads a specific page's full content.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdNoIf provided with journalId, read this specific page's content. Get page IDs from the pages array returned when listing journals or reading a journal.
journalIdNoIf provided, read this journal's content instead of listing all journals. Returns full page content and a list of all pages in the journal.
filterQuestsNoOnly show journals that appear to be quest-related (default: false)
includeContentNoInclude journal content preview (default: false)

TDQS

A4.3/5.0
Behavior4/5

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

Without annotations, the description carries the full burden of disclosing behavior. It explains that without parameters it lists journals with pages, with journalId it reads first page content and shows pages, and with both reads full content. This is sufficient for a read-only operation. It doesn't mention side effects (none) or other traits, but the description is transparent about what happens in each mode.

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 two sentences long and conveys the necessary information efficiently. The key behavior is front-loaded ('List all journal entries, or read a specific journal/page'). It could be slightly more structured (e.g., bullet points) but is concise and 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?

Given the tool has 4 optional parameters, no required fields, no output schema, and the sibling tools include many similar list/read operations, the description adequately covers the different usage modes. It explains what the agent can expect for each parameter combination, which is sufficient for effective use. Could mention pagination or limits, but not critical.

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

Parameters4/5

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

The schema already provides descriptions for all 4 parameters (100% coverage), setting a baseline of 3. The description adds value by explaining the combined effect of parameters (e.g., how journalId and pageId interact) and clarifying what each mode returns. This goes beyond the schema's individual parameter descriptions.

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

Purpose5/5

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

The description specifies exactly what the tool does: list all journal entries or read a specific journal or page. It distinguishes three modes based on parameter presence, using verbs like 'list' and 'read' with the resource 'journal entries/pages'. This clearly differentiates it from sibling tools like 'search-journals' and other document listing tools.

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

Usage Guidelines4/5

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

The description provides clear guidance on when to use each parameter combination (without params, with journalId, with both). It implicitly tells the agent what to expect in each case. However, it does not explicitly exclude use cases or compare with alternatives like 'search-journals', so it misses some guidance on when not to use this tool.

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

list-lightsA

List every AmbientLight on a scene — id, center (x/y), rotation, dim/bright radii, color, cone angle, animation type, hidden, walls/vision. Read-only; the inspect step before update-lights / delete-lights.

ParametersJSON Schema
NameRequiredDescriptionDefault
sceneIdentifierYesScene id or exact name holding the placeables.

TDQS

A4.2/5.0
Behavior4/5

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

States 'Read-only' which is critical behavioral information. Lists all returned fields in the description. No annotations provided, so the description carries the burden well.

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

Conciseness5/5

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

Two sentences, no filler. Front-loaded with key action and scope. Every sentence 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 simple list tool with one parameter and no output schema, the description is sufficiently complete: it lists return fields, states read-only, and provides usage context. Minor omissions like handling of null positions are acceptable.

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 parameter description is adequate. The tool description adds context by specifying the operation scope ('on a scene') but doesn't add meaning beyond the schema for the parameter.

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

Purpose5/5

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

Description clearly states it lists AmbientLight objects on a scene and enumerates all returned fields. Distinguishes itself from siblings by specifying 'AmbientLight' and the inspect step before update/delete.

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?

Explicitly frames the tool as a read-only inspect step before update-lights or delete-lights, providing clear context for when to use it. Could be slightly more explicit about when not to use, but sufficient.

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

list-notesA

List every MAP-NOTE PIN on a scene — id, position (x/y), label text, linked journal entryId/pageId, icon src + size, fog global, font. Read-only; the inspect step that feeds update-note / delete-note (create-scene-notes places them).

ParametersJSON Schema
NameRequiredDescriptionDefault
sceneIdentifierYesScene id or exact name holding the placeables.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description takes full responsibility for behavioral disclosure. It explicitly declares the tool as read-only, implying no side effects. It also lists the returned attributes, giving the agent a clear expectation of the output. No contradictions are present.

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

Conciseness5/5

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

The description is two sentences, front-loading the action and key information. Every word adds value: the action, what is returned, data types, and usage context. No unnecessary elaboration.

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

Completeness5/5

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

Given the low complexity (single parameter, no output schema, no nested objects), the description is complete. It explains what the tool does, what it returns, and how it fits into a workflow (inspect → update/delete). No critical information is missing.

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

Parameters4/5

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

The schema has 100% coverage (single 'sceneIdentifier' parameter with a description). The tool description adds value by specifying that the parameter refers to the scene holding 'placeables' and by explaining the return fields, which helps contextualize the parameter's role. This goes slightly beyond the baseline of 3.

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

Purpose5/5

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

The description uses a specific verb ('List') and resource ('MAP-NOTE PIN on a scene'), and enumerates the exact fields returned (id, position, label, etc.), making the tool's purpose unambiguous. It clearly differentiates from sibling tools like create-scene-notes, update-note, and delete-note.

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

Usage Guidelines4/5

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

The description explicitly states 'Read-only' and positions the tool as 'the inspect step that feeds update-note / delete-note', providing clear context on when to use it. While it does not list alternatives or when not to use it, the context is sufficient for an AI agent to decide.

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

list-playlistsA

List Playlist documents with id, name, mode, track count, and whether each is currently playing.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so the description must carry the full burden. It states the output fields but does not disclose any behavioral traits such as being read-only, performance implications, or any ordering. The lack of annotations is partially mitigated by the tool's simplicity.

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

Conciseness5/5

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

The description is a single sentence that directly states the action, resource, and returned fields. Every word adds value; no fluff or redundancy.

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

Completeness4/5

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

For a no-parameter, no-output-schema tool, the description adequately tells the agent what fields will be returned. It could mention that 'all' playlists are listed, but that is implied by the tool name and absence of filters.

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

Parameters4/5

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

The input schema has zero parameters. According to the rubric, 0 parameters warrants a baseline of 4. No further parameter explanation is needed.

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

Purpose5/5

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

The description uses the verb 'List' and specifies the resource 'Playlist documents'. It enumerates specific fields returned (id, name, mode, track count, playing status), clearly distinguishing this from other playlist-related tools like create, delete, or update.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives. The purpose is implied by the name and description (list all playlists), but there is no mention of when not to use it or even a hint about alternatives.

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

list-regionsA

List every Region on a scene — id, name, each shape's bounds, and any teleporter destinations. Read-only; use it to find region ids for update-region / delete-region.

ParametersJSON Schema
NameRequiredDescriptionDefault
sceneIdentifierYesScene id or exact name.

TDQS

A4.5/5.0
Behavior4/5

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

Without annotations, the description carries full burden and discloses it is read-only and returns specific data. No mention of authorization or limits, but for a list tool this is sufficient.

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

Conciseness5/5

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

Two sentences, front-loaded with action and output, then use-case. Every sentence is essential and concise.

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?

Completeness is high: describes input parameter fully, explains return fields, and provides context for usage. No output schema needed as description covers 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 coverage is 100% with a description for sceneIdentifier. The tool description does not add additional meaning beyond the schema, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool lists regions on a scene with specific fields (id, name, bounds, teleporter destinations). It distinguishes itself from siblings like update-region and delete-region by indicating its use for finding region IDs.

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

Usage Guidelines5/5

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

Explicitly states the tool is read-only and should be used to find region IDs before using update-region or delete-region, providing clear guidance on when to use.

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

list-rolltablesB

List RollTable documents with id, name, formula, result count, and description.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are present, so the description must carry full burden. It only states what fields are returned but does not disclose any behavioral traits like read-only nature, pagination, or side effects. For a list operation, basic transparency is missing.

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

Conciseness4/5

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

The description is a single sentence that quickly conveys the purpose and output fields. It is front-loaded and concise, though it could be slightly more structured (e.g., bullet points) but still 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?

Given 0 parameters and no output schema, the description gives the minimum viable information: it lists what fields are returned. However, it omits any details on scope (e.g., all rolltables? filtered?), ordering, or whether it's read-only. Adequate but with clear gaps.

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

Parameters4/5

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

Tool has zero parameters, so schema coverage is 100% by default. Description does not need to add parameter meaning beyond schema, which is empty. Baseline 4 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?

Description clearly states the action 'list' and the resource 'RollTable documents', and specifies the fields returned (id, name, formula, result count, description). It effectively distinguishes from sibling tools like create-rolltable, delete-rolltable, and roll-on-table.

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 usage guidance provided; description does not indicate when to use this tool versus alternatives like search-rolltables or roll-on-table. Lacks context on prerequisites or 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.

list-scenesA

List Scene documents with id, name, active flag, dimensions, grid size, and background path. Optionally filter by name substring or show only the active scene.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoCase-insensitive substring match on scene name.
includeActiveOnlyNoReturn only the currently active scene (default false).

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It states the tool lists scenes and specifies returned fields, implying a read operation. However, it does not explicitly declare it as read-only or disclose any other behavior (e.g., pagination, ordering, default scope).

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

Conciseness4/5

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

The description is a single sentence that efficiently conveys the tool's purpose and key features. It is front-loaded with the primary action and resources. Minor improvement could be breaking into two sentences for readability, but current structure is concise and 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 simple list operation with no output schema, the description adequately covers the returned fields and filtering options. It does not mention ordering, pagination, or default behavior (e.g., returns all scenes by default), but those are not critical given the tool's simplicity. Overall, it provides sufficient context for an agent to use the tool effectively.

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 baseline is 3. The description mentions both parameters ('filter by name substring', 'show only the active scene') but adds no new semantics beyond what the schema already provides (e.g., case-insensitivity, default values).

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

Purpose5/5

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

The description specifies the verb 'List' and resource 'Scene documents', and enumerates the returned fields (id, name, active flag, etc.). This clearly distinguishes it from sibling tools like create-scene or get-current-scene.

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 mentions optional filtering (by name substring or active scene only), implying when you might use these options, but provides no explicit guidance on when to use this tool versus other scene-related tools. It lacks 'when to use' and 'when not to use' context.

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

list-soundsA

List every AmbientSound on a scene — id, name, center (x/y), radius, audio path, volume, repeat/walls/easing flags, darkness range, base effect. Read-only; the inspect step before update-sounds / delete-sounds.

ParametersJSON Schema
NameRequiredDescriptionDefault
sceneIdentifierYesScene id or exact name holding the placeables.

TDQS

A4.2/5.0
Behavior4/5

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

The description declares the tool is 'Read-only', a key behavioral trait. It also lists the fields returned. With no annotations, the description carries full burden, and while it doesn't detail error conditions or performance, it sufficiently covers the read-only nature.

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

Conciseness5/5

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

The description is two sentences, front-loading the action and fields, followed by behavioral and usage context. No wasted words, every sentence serves a purpose.

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

Completeness4/5

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

Given the tool's simplicity (single parameter, no output schema), the description is fairly complete. It covers what is returned and the read-only nature. It could be slightly improved by specifying the output format (e.g., array of objects), but the listed fields provide sufficient detail.

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 parameter 'sceneIdentifier' is already documented. The description adds marginal value by implying it refers to the scene containing the sounds, but does not provide additional format or constraints beyond the schema.

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

Purpose5/5

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

The description clearly states the verb 'List' and resource 'AmbientSound on a scene', enumerating the fields returned. It also distinguishes itself from siblings by stating it's the 'inspect step before update-sounds / delete-sounds'.

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

Usage Guidelines4/5

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

The description implies when to use it (before modification) and references sibling tools update-sounds/delete-sounds. However, it does not explicitly state when not to use it or provide alternatives for other scenarios.

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

list-tilesA

List every Tile on a scene — id, position (x/y), size (width/height), rotation, elevation, sort, texture src, image scale, hidden/locked. Read-only; the inspect step before update-tiles / delete-tiles (you need the ids + current values to edit).

ParametersJSON Schema
NameRequiredDescriptionDefault
sceneIdentifierYesScene id or exact name holding the placeables.

TDQS

A4.5/5.0
Behavior4/5

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

The description declares the tool is read-only and explains its purpose as a precursor to editing. With no annotations, this covers essential behavioral traits, though it omits details like potential error handling or performance limits.

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 with high information density, front-loaded with purpose and return details. No extraneous text.

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

Completeness5/5

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

Given the tool's simplicity (single parameter, no nested objects, no output schema), the description fully covers purpose, usage, and behavior. No gaps for a list 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 100% with detailed description of sceneIdentifier. The tool description reiterates 'on a scene' but adds no new semantic value beyond the schema.

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

Purpose5/5

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

The description clearly specifies the verb 'List', the resource 'Tiles', and the scope 'every Tile on a scene'. It also enumerates the returned fields (id, position, size, etc.), distinguishing it from sibling tools like update-tiles and delete-tiles.

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

Usage Guidelines5/5

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

Explicitly states this is read-only and the inspect step before update-tiles/delete-tiles, providing clear when-to-use guidance and signaling it should not be used for modification.

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

list-tokensA

List every PLACED TOKEN on a scene (by id or exact name — any scene, not just the active one) — id, name, position (x/y), size, rotation, elevation, hidden, disposition, actorId, art src + scale, lockRotation. Read-only; the inspect step that feeds update-token / delete-tokens. The token ids also work as the actorIdentifier of the actor tools (get-actor, update-actor, update-actor-item, remove-from-actor, add-item/add-feature, import-item, manage-activity/-effect, apply-condition) — targeting a token id edits THAT instance's own delta, the way to re-gear/wound ONE placed copy of an unlinked NPC (base-actor edits never reach tokens already on a scene).

ParametersJSON Schema
NameRequiredDescriptionDefault
sceneIdentifierYesScene id or exact name holding the placeables.

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. Declares read-only behavior, specifies it works on any scene (not just active), lists all returned fields, and explains token-actor relationship. Does not mention pagination or rate limits, but for a list tool this is sufficient.

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?

First sentence clearly states purpose. Second sentence is dense but packs multiple pieces of useful information concisely. Slightly could be more structured, but no waste.

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

Completeness4/5

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

Given no output schema, description adequately explains all returned fields. It also explains integration with other tools. Missing mention of pagination or limits, but sufficient for typical use.

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 100% with one parameter described. Description adds context that sceneIdentifier can be id or exact name and applies to any scene. This adds meaning beyond the schema description.

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

Purpose5/5

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

Description clearly states the tool lists every placed token on a scene (by id or exact name) and enumerates returned fields. It distinguishes from siblings like place-tokens, update-token, delete-tokens by specifying it is the read-only inspect step.

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

Usage Guidelines4/5

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

Explicitly states it is the read-only inspect step that feeds update-token/delete-tokens, and explains token ids work as actorIdentifier for actor tools. Provides clear context for when to use but does not explicitly list when not to use or alternative tools.

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

list-wallsA

List walls on a scene — id, segment c:[x0,y0,x1,y1], move/sight/light/sound channels, one-way dir, door kind + state + sound. A populated scene carries HUNDREDS of walls: pass doorsOnly:true to get just the doors (the usual edit loop). Read-only; the inspect step before update-walls / delete-walls.

ParametersJSON Schema
NameRequiredDescriptionDefault
doorsOnlyNoReturn only DOOR walls (door > 0) — a populated scene carries hundreds of plain walls, and the usual edit loop is doors. Default false (all walls).
sceneIdentifierYesScene id or exact name holding the placeables.

TDQS

A4.7/5.0
Behavior5/5

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

Despite no annotations, the description fully discloses that the tool is read-only and serves as an inspection step before modification. It also warns about the large number of walls in populated scenes and recommends the doorsOnly filter. No behavioral traits are omitted.

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

Conciseness5/5

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

The description is three sentences, each serving a distinct purpose: what the tool returns, guidance on filtering, and behavioral context. It is front-loaded with the most critical information (purpose and field list) and contains no redundant phrases.

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

Completeness5/5

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

Given the tool's low complexity (2 parameters, no output schema, no annotations), the description provides sufficient context: return fields, filtering advice, read-only nature, and relation to sibling tools. An AI agent can confidently decide when and how to use this 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?

The input schema already provides full descriptions for both parameters (100% coverage). The description reinforces the doorsOnly parameter by contextualizing its use ('the usual edit loop'), but does not add new semantic information beyond what the schema provides. 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?

The description clearly states 'List walls on a scene' and enumerates the fields returned (id, segment, channels, etc.). It distinguishes this from sibling tools like create-walls, update-walls, and delete-walls by positioning it as the 'inspect step before update-walls / delete-walls.' This provides a specific verb+resource combination with clear scope.

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

Usage Guidelines5/5

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

The description explicitly guides usage: 'A populated scene carries HUNDREDS of walls: pass doorsOnly:true to get just the doors (the usual edit loop).' It also labels the tool as 'Read-only; the inspect step before update-walls / delete-walls,' clarifying when to use this tool versus its mutating siblings.

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

manage-activityA

[D&D 5e only] Add / edit / remove / list Activities on an item — the rollable things (attack, damage, save, heal, check, utility, cast). Target an item on an actor (set actorIdentifier) or a world item (omit it). This authors actions like a Multiattack (action="add", type="utility", name="Multiattack"), a heal, an ability-check, a saving-throw activity, OR a spell-casting item (action="add", type="cast", spellUuid=…, charges=…, saveDC/attackBonus=… to pin a fixed challenge) — the cast LINKS a real compendium spell so its measured template + save/attack fire for free. Use action="list" (or get-actor-entity) to find activityIds, then edit/remove by id; edit takes a patch of dot-paths relative to the activity. Authoring only — it does not run combat.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoActivity name (e.g. "Multiattack"). Used by add and edit (rename).
typeNoActivity type. Required for add. "utility" = descriptive action (e.g. Multiattack). "cast" = link & cast a real compendium spell (e.g. a wand/staff) — see spellUuid.
patchNoEdit: dot-paths RELATIVE to the activity root, e.g. {"attack.bonus":"3"}, {"save.dc.formula":"16"}, {"damage.onSave":"half"}.
actionYesadd a new activity, edit/remove an existing one (by activityId), or list activities.
onSaveNoSave activity: damage on a successful save.
saveDCNoSave activity: the DC. Cast activity: pins a FIXED save DC for the linked spell (else the cast defers the DC to the casting actor).
skillsNoCheck activity: associated skill keys (e.g. ["acr","ath"]).
abilityNoAttack ability override (attack activity).
chargesNoCast activity: item charges (uses) consumed per cast. Omit for an at-will cast.
checkDCNoCheck activity: the DC.
castLevelNoCast activity: level to cast at (0 = cantrip). Defaults to the spell's base level.
spellUuidNoCast activity (REQUIRED): the Compendium uuid of the spell to LINK, e.g. "Compendium.dnd-players-handbook.spells.Item.phbsplFireball00". The activity CASTS this spell — its measured template (fireball sphere, lightning line…), save/attack, and effects come for free. The spell must be a real premium-book spell (off-book/SRD is refused — if it is not in the books, STOP and ASK; do not hand-roll a fake save/damage activity).
activityIdNoActivity id — required for edit/remove. Get it from action "list" or get-actor-entity.
attackTypeNoAttack activity: melee or ranged.
healAmountNoHeal activity: healing dice (type "healing" or "temphp").
attackBonusNoAttack activity: flat to-hit bonus. Cast activity: pins a FIXED spell-attack bonus (else the cast defers the attack to the casting actor).
damagePartsNoDamage dice — for attack (extra parts), damage, and save activities.
includeBaseNoAttack: also roll the item base damage (default true).
saveAbilityNoSave activity: the saving-throw ability.
checkAbilityNoCheck activity: the ability rolled.
activationTypeNoAction economy. Default "action".
itemIdentifierYesItem to operate on (id or name). On an actor when actorIdentifier is set, else a world item.
actorIdentifierNoIf set, the item is embedded on this actor; omit to target a world (sidebar) item. Also accepts a placed TOKEN id (from list-tokens) — the activity edit then lands on that token INSTANCE's own delta, not the base actor.

TDQS

A4.4/5.0
Behavior4/5

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

Despite no annotations, the description reveals key behaviors: spell linking for cast activity, dot-path patching for edits, and the constraint that off-book spells are refused. It does not cover error handling or potential overwrites, but overall provides substantial behavioral context.

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

Conciseness4/5

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

The description is well-organized, starting with purpose and action overview, then diving into specifics like cast linking and patch editing. It is detailed but not overly verbose; however, some redundancy with schema descriptions could be trimmed.

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?

While the description covers main behaviors and constraints, it lacks a clear specification of the output format for the 'list' action. Since no output schema exists, describing the returned data structure would improve completeness.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds meaning beyond schema, e.g., explaining that actorIdentifier can accept token IDs for instance-specific edits, and that spellUuid is required and links to compendium spells with automatic templates. This enhances parameter understanding.

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

Purpose5/5

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

The description clearly states it adds, edits, removes, and lists activities on items, specifying it's for D&D 5e. It distinguishes from sibling tools by focusing on activities (attack, damage, etc.) and clarifying it does not run combat, making purpose unambiguous.

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance: target an actor item with actorIdentifier or a world item without. Details each action (add, edit, remove, list) and when to use them, including alternatives like get-actor-entity. Warns against using for combat and specifies required premium-book spells for cast type.

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

manage-effectA

[D&D 5e] Create / edit / delete / list ActiveEffects on an actor or an item. Effects carry changes ({key, value, type}) that modify the target — e.g. +1 AC ({key:"system.attributes.ac.bonus", value:"1", type:"add"}) or resist fire. Target the actor (actorIdentifier), an embedded item (actorIdentifier + itemIdentifier), or a world item (itemIdentifier alone). Use action="list" to find effectIds. Item effects transfer to the owning actor by default. Authoring only — it sets effect data, it does not run combat.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoEffect name. Required (create); optional rename (edit).
patchNoEdit: extra dot-paths relative to the effect, e.g. {"duration.rounds": 10}.
actionYescreate a new effect, edit/delete one by effectId, or list effects.
changesNoThe effect changes. On edit this REPLACES the whole changes list.
disabledNoWhether the effect is disabled (inactive).
effectIdNoEffect id — required for edit/delete. Get it from action "list".
statusesNoStatus/condition ids this effect confers (e.g. ["prone"]).
transferNoItem effects: whether the effect transfers to the owning actor. Default true for items.
descriptionNoEffect description (HTML).
itemIdentifierNoItem to target: embedded on the actor (with actorIdentifier) or a world item (alone). Omit to target the actor itself.
actorIdentifierNoActor that owns the effects (or owns the item when itemIdentifier is also set). Also accepts a placed TOKEN id (from list-tokens) — the effect then lands on that token INSTANCE's own delta, not the base actor.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses that the tool only sets effect data and does not affect combat, and explains transfer behavior for item effects. It could additionally mention permission requirements or side effects like overwriting changes on edit.

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 paragraph that efficiently covers all key points: purpose, CRUD actions, targeting, effect structure, and limitations. It is not excessively long, but could be slightly restructured (e.g., bullet points) for easier scanning.

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

Completeness4/5

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

Given the tool's complexity (11 parameters, nested objects) and lack of output schema, the description provides sufficient context for an agent to understand CRUD operations, targeting, and the effect model. It mentions a limitation ('authoring only') but could elaborate on what happens with the created effect (e.g., no automated application).

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3. The description adds value by explaining the effect structure (key, value, type), targeting rules (actor vs item), and that the changes list is replaced on edit. This goes beyond the schema's individual parameter descriptions.

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

Purpose5/5

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

The description clearly states the tool manages ActiveEffects on actors or items with CRUD operations, providing specific examples like '+1 AC' and targeting options. It distinguishes from sibling tools like 'add-item' or 'apply-condition' by focusing solely on effects.

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

Usage Guidelines4/5

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

The description explains when to use the tool for effect creation/editing/deletion/listing, and advises using action='list' to find effect IDs. It notes that the tool is for authoring only and does not run combat. However, it does not explicitly exclude alternatives like 'apply-condition' for condition management.

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

move-assetA

Plane B (file channel, write). Move/rename a file under the Foundry Data/ root over WebDAV; missing destination parent folders are created automatically. REFERENCE-AWARE: by default REFUSES with a report if anything references the source (moving would break those pointers). Pass relink:true to move AND rewrite all references (old→new), or force:true to move without relinking. Refuses live world-DB paths. Requires MOLTEN_WEBDAV_PASSWORD.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoMove even if references exist (without relinking) or the bridge is down.
relinkNoAfter moving, rewrite all references from the old path to the new one.
toPathYesNew Data-relative path.
fromPathYesCurrent Data-relative path.
overwriteNoAllow overwriting an existing file at the destination.

TDQS

A4.7/5.0
Behavior5/5

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

No annotations provided, but the description thoroughly discloses behaviors: auto-creates missing folders, default refusal with report, relink/force options, refusal of world-DB paths, and required password.

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?

Single focused paragraph with all key information front-loaded (purpose, constraints, authentication). No unnecessary words.

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

Completeness5/5

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

Covers all relevant aspects for a complex move tool: behavior with references, folder creation, overwrite, authentication, and constraints on paths.

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 100%, baseline 3. Description adds context to boolean flags (force, relink) and explains path behavior (auto-create folders). Does not repeat schema descriptions, adding value.

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

Purpose5/5

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

Clearly states the tool moves/renames a file under the Foundry Data/ root over WebDAV, with specific reference-aware behavior. Distinguishes from simple move by detailing relink/force options.

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

Usage Guidelines4/5

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

Provides explicit guidance on when to use relink:true vs force:true, and notes that it refuses live world-DB paths. However, does not explicitly contrast with sibling tools like copy-asset or relink-asset.

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

move-documentsA

Move one or more world documents of a single type into a target folder (resolved by id or name; created at root if absent). Pass an empty targetFolder to move them to the root. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifiersYesExact ids (preferred) or exact names of documents to move.
documentTypeYesType of the documents being moved.
targetFolderNoTarget folder id or name (created at root if missing). Empty = root.

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses GM-only access, folder creation if absent, and root movement. However, it omits details like error handling, what happens to duplicates, or confirmation of success.

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 with no wasted words. The purpose, conditions, and parameter behavior are front-loaded and efficiently conveyed.

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

Completeness4/5

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

For a tool with no output schema, the description adequately covers core functionality. It could mention what happens on failure or the return value, but it is sufficient for selection and basic invocation given the sibling context.

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

Parameters4/5

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

Schema coverage is 100%, but description adds value by explaining that identifiers are 'exact ids (preferred) or exact names', and that targetFolder empty equals root and missing creates a folder. This goes beyond schema descriptions.

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

Purpose5/5

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

The description clearly states the verb 'move' for 'world documents of a single type' into a folder, with specific details on folder resolution and creation. It distinguishes from sibling tools like 'move-asset' which handles asset files.

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

Usage Guidelines4/5

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

The description indicates when to use (moving documents to a folder, including root) and includes a restriction (GM-only). It does not explicitly mention when not to use or provide alternatives, but the context is clear.

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

parse-ddb-characterA

Parse a D&D Beyond character into a normalized, name-bearing plan for the ddb-import skill. Fetches a PUBLIC character by characterId/url (v5 endpoint) OR accepts pasted json (the common case — a PRIVATE character must be set Public or its JSON pasted; this tool NEVER handles a D&D Beyond account cookie). Pure + deterministic: it computes final ability scores (deduping DDB's per-class modifier duplication, resolving choose-an-ability-score, honoring overrides), the classes/multiclass + subclasses, species, background, derived proficiencies/expertise/saves/languages/tools, resolved option picks (fighting style, favored enemy…), spells (cantrips + prepared/known by name), inventory, feats, currency, HP, art, and an unresolved[] list of every homebrew / 2014-legacy / custom entry to STOP-and-ASK about. It emits RAW DDB names, does ZERO compendium lookup, and never invents content (design.md §2.3). The skill then canonicalizes names to premium-2024 entries and drives create-pc. Returns {success, plan, message}.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoA dndbeyond.com character URL — the id is extracted from it.
jsonNoThe raw D&D Beyond v5 character JSON — the full {success, data, …} envelope or the inner `data` object, as a parsed object OR a JSON string. Use this for a PRIVATE character: ask the player to make it Public or paste/save its JSON; the tool never handles a cobalt cookie.
characterIdNoD&D Beyond character id (the digits in the sheet URL, e.g. "167582904").

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries full burden. It discloses key behaviors: pure and deterministic, deduping ability scores, resolving choices, no compendium lookup, never invents content, and returns an unresolved list. This comprehensively informs the agent of the tool's behavior.

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

Conciseness4/5

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

The description is dense but well-structured, front-loading the purpose. Each sentence contributes meaningful information. It is slightly long but remains focused and informative, earning a 4 for conciseness.

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

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 3 optional parameters, no output schema, and no annotations, the description covers all necessary aspects: input modes, processing details, return shape ({success, plan, message}), and what the plan contains (abilities, classes, spells, etc.). It is complete for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by explaining that url/characterId fetch public characters via v5 endpoint, and json is for private characters (common case), including acceptable formats (full envelope or inner data, parsed object or string). This goes beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Parse a D&D Beyond character into a normalized, name-bearing plan for the ddb-import skill,' specifying the verb 'parse' and the resource 'D&D Beyond character'. It distinguishes from sibling tools by focusing on external data parsing and plan generation, not direct PC creation or advancement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains two usage modes: fetching a public character via url/characterId or accepting pasted json for private characters. It explicitly states what the tool NEVER does (handle a cookie) and gives context on subsequent steps (skill canonicalizes names). While it doesn't name specific alternatives, the context suffices.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

place-tokensA

Place one or more actors' tokens on a scene (batch encounter prep — e.g. drop the whole hobgoblin band on the bridge). Each entry names an actor (id or EXACT name) + an absolute canvas-pixel x/y; the token is built from the actor's PROTOTYPE (so the house token defaults — auto-rotate, ring, disposition — carry over), with optional per-copy hidden/elevation/rotation/name/disposition overrides. Repeat an actor for several copies. The GM can always drag tokens in the app instead — this is for scripted/batch placement. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokensYesThe tokens to place (one per entry — repeat an actor to place several copies).
sceneIdentifierYesScene id or exact name holding the placeables.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully explains how tokens are built from prototypes with overrides, and that actors can be repeated. It could mention immediate placement or scene activation, but overall transparent enough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four well-structured sentences front-loading the purpose, followed by details. No fluff, every sentence adds value.

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?

Lacks output schema, but the tool is a command with no return value expected. The description covers input behavior well. Could mention result or side effects, but adequate for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds significant meaning beyond the schema: it explains that tokens inherit prototype defaults, that 'actor' accepts ID or exact name, and coordinates are in absolute canvas pixels. This enriches the schema's descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool places actors' tokens on a scene, using batch encounter prep as an example. It distinguishes from sibling tools like create-tokens or update-token by focusing on placing from prototypes in bulk.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states that this is for scripted/batch placement, contrasting with manual dragging in the app. Also specifies GM-only access, giving clear usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post-item-cardA

Post a rich dnd5e card for an actor's item/feature/spell with WORKING buttons (Attack/Damage/Apply-Effects), or roll an attack/damage to chat. Drives the dnd5e Activity system — the only way to get interactive buttons without a module. Items with no activity return a clear reason (use send-chat-message for a plain card). GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemYesItem / feature / spell id or exact name on that actor.
actorYesActor id / exact name / name-substring (or scene token id) that owns the item.
actionNouse = post the usage card with its buttons (primary path); attack = roll the attack to chat; damage = roll damage to chat. attack/damage auto-targeting is degraded headless (no targets).use
consumeNoSpend the item/spell resources (uses/slots). Default false = just post the card.
activityNoOptional activity id/name when the item has several (default: the first activity).
criticalNoFor action=damage: roll a critical (best-effort).

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Details the Activity system, behavior for items without activities, auto-targeting degradation headless, and GM-only restriction. Lacks explicit mention of side effects or permissions beyond GM-only, but adds significant context beyond schema.

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?

Single paragraph, front-loaded with main purpose, no wasted words. Every sentence adds essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers main use cases, error condition (no activity), and headless behavior. No output schema exists, but description hints at return (clear reason or card). Minor gaps in error handling details, but sufficient for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Each parameter's description adds value beyond the schema: explains action enum values (use/attack/damage), consume resource spending, activity selection, and critical option for damage. Schema coverage is 100%, but description enriches understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it posts a rich dnd5e card with interactive buttons or rolls attack/damage, specifying the resource (actor's item/feature/spell) and distinguishing from plain cards via send-chat-message.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use this tool (for interactive buttons without a module) and when to use an alternative (send-chat-message for plain cards). Also notes GM-only restriction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read-packA

Read a Tom-Cartos-style Foundry SCENE-PACK MODULE off disk (a module.json + LevelDB/NeDB compendium packs) and return its era-normalized documents for import. OFF-LINE and Node-only: it reads files, never the live world. Detects the pack's Foundry era from field shape (older v10/NeDB vs newer v13/LevelDB), extracts each Scene (dimensions, grid, background, thumbnail, walls, lights, regions/teleporters) and JournalEntry (pages), strips cli pack artifacts, and — when given the destination root the skill chose — emits per-asset path REWRITE HINTS (the module-relative %-encoded src → a clean Data-relative path). Also discovers any standalone TILE images the pack ships (building/prop pieces with a Tile_<W>x<H> grid footprint in the name, not referenced by any scene) so the skill can make them available for the GM to drop onto scenes. The heavy per-scene walls/lights/regions are written to PAYLOAD FILES and referenced by placeablesPath (NOT inline — the response cap truncates them at scene scale); pass that path to create-scene, which reads it server-side. The skill then uploads the assets, recreates the scenes/journals, and (modern packs) remaps the cross-scene teleporters. Handles all eras: modern v13/LevelDB (via the @foundryvtt/foundryvtt-cli child process) AND legacy v10/NeDB .db (parsed directly — no cli needed). The full manifest is PAGED to fit the response cap: returns totalScenes + a page of scenes + nextOffset (call again with offset until null). Pass index:true first for a tiny names-only survey of the whole pack (variant planning + dedup) before paging the heavy import.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexNoSurvey mode: return ONLY the lightweight scene list ({sourceId, name, counts}) + descriptor + journal names — no paths, payloads, or assets. Call this ONCE to plan variant selection and dedup across the whole pack before paging the full import (the full manifest is capped/paged).
offsetNoIndex of the first Scene to return (for paging a big pack). Default 0.
destRootNoData-relative asset destination root the skill chose (e.g. "worlds/<world>/assets/tom-cartos/<module-id>"). When set, every referenced asset gets a `dataPath` rewrite hint (modules/<id>/<rel> → <destRoot>/<rel>, percent-decoded) so the create tools receive already-correct paths. Omit to get the decoded module-relative paths only.
packNameNoOnly read this pack (matched against module.json packs[].name). Default: all packs.
modulePathYesAbsolute path to the unzipped module folder OR directly to its module.json.
sceneLimitNoPage size: how many Scene records to return this call (default 10). The manifest must fit the MCP response cap, so a big pack is read in pages — import a page, then call again with `offset` advanced by the returned count until `nextOffset` is null.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility. It thoroughly discloses behaviors: offline-only, dual-era support (v10/NeDB vs v13/LevelDB), stripping pack artifacts, emitting path rewrite hints, discovering standalone tiles, and paging response truncation. No contradictions present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core action, but it is lengthy (multiple paragraphs). Every sentence adds value, but minor redundancy exists (e.g., repeating offline nature). Slight conciseness improvement possible without losing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 parameters, no output schema, offline-only, paging, path rewriting), the description is highly complete. It covers all behavioral aspects, parameter usage, return structure, and integration with sibling tools, leaving no significant gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds significant meaning: it explains the purpose of each parameter in the overall workflow (e.g., destRoot for path rewriting, index for survey, offset/sceneLimit for paging, packName for filtering) and their interplay, surpassing basic schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states it reads a Foundry SCENE-PACK MODULE off disk, detailing the content (module.json + compendium packs) and output (era-normalized documents for import). It distinguishes itself from sibling tools like create-scene (which handles online scene creation) and import-cards/import-item by being offline and module-specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear when-to-use guidance: offline reading of Tom-Cartos-style packs for import, with explicit instructions for survey mode (index:true), paging (offset, sceneLimit), and integration with create-scene for payload files. It also explains when to use each parameter, effectively guiding the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remap-teleportersA

Second pass of a scene-pack import: rewrite cross-scene teleporter destinations after the scenes + regions have been created. A pack teleporter points at Scene..Region., but the import mints FRESH ids, so every destination is stale until remapped. Pass the import sourceModule; this reconstructs the old→new scene/region id maps from the provenance flags the scenes + regions carry and rewrites every teleportToken destination. Idempotent (safe to re-run), and reports destinations that point outside the import (e.g. a variant you skipped) rather than dropping them silently. Call it ONCE after all chosen scenes are imported. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceModuleYesThe module id stamped in flags["tom-cartos-import"].sourceModule on the imported scenes (e.g. the read-pack module.id). All scenes carrying it are scanned together.

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It details the mechanism: reconstructs old→new id maps from provenance flags and rewrites teleportToken destinations. Discloses idempotency, GM-only restriction, and non-destructive handling of external pointers. Fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise six-sentence paragraph. Front-loaded with main purpose. Every sentence adds essential context: why needed, mechanism, idempotency, error behavior, and usage instruction. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (import process, teleporter remapping) and lack of output schema, the description covers all necessary aspects: purpose, why fresh IDs cause issues, required parameter, invocation timing, idempotency, and reporting of out-of-import destinations. Complete for intended use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (sourceModule) with 100% schema coverage. The description adds significant meaning: explains how it's used ('reconstructs the old→new scene/region id maps from the provenance flags') and provides an example ('the read-pack module.id'). Clearly explains role beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Second pass of a scene-pack import: rewrite cross-scene teleporter destinations after the scenes + regions have been created.' It identifies the specific verb (remap), resource (teleporter destinations), and context (post-import). This distinguishes it from sibling tools, none of which handle teleporter remapping.

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?

Explicit usage guidance: 'Call it ONCE after all chosen scenes are imported. GM-only.' It explains when to use (after scenes created, before teleporters functional), idempotency (safe to re-run), and error handling (reports external destinations rather than silent drop). This leaves no ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove-from-actorA

Delete items already on an actor, identified by itemIds and/or itemNames (optionally constrained by type). GM-only. Use get-actor to find item ids.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoConstrain itemNames to this item type.
itemIdsNoIds of items on the actor to delete (most reliable; get them from get-actor).
itemNamesNoNames of items on the actor to delete (case-insensitive). Combine with "type" to disambiguate.
actorIdentifierYesActor name or ID to remove the items from. Also accepts a placed TOKEN id (from list-tokens) — the removal then hits that token INSTANCE's own delta, not the base actor.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the destructive nature ('Delete'), authorization ('GM-only'), and a behavioral nuance about token IDs affecting the instance's delta. Minor gaps include lack of return value or error handling information.

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 cover purpose, identification methods, and an important additional context (token usage). No extraneous words, front-loaded with the main action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description adequately covers the tool's function, authorization, and identification methods. It does not explain return values (e.g., success/failure), which would be helpful, but overall it is sufficient for a simple deletion tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema coverage is 100%, the description adds significant extra meaning: actorIdentifier can be a token ID affecting only that instance, itemIds are 'most reliable' and suggested from get-actor, itemNames are case-insensitive and can be combined with type. This enriches the schema's basic descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete items'), the target ('already on an actor'), and the identification methods (itemIds and/or itemNames, optionally constrained by type). It also distinguishes from sibling tools that add items or delete other entities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly notes 'GM-only' for authorization and advises using 'get-actor' to find item IDs, providing clear context for when and how to use the tool. However, it does not explicitly compare with alternatives like 'delete-item' or mention when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

request-rollA

Post a click-to-roll request card (saving throw / ability check / skill) that players click to roll their OWN check — the table-facing "everyone make a DEX save (DC 15)" prompt. Uses the dnd5e inline roll enricher. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
dcNoTarget DC shown on the card.
kindYessave = ability saving throw; check = ability check; skill = skill check.
skillNoSkill key for kind=skill, e.g. "ste", "prc", "ath".
flavorNoOptional label, e.g. "Trap! Reflexes".
abilityNoAbility key for save/check, e.g. "dex", "wis", "con".
visibilityNopublic = the whole table; gm = GMs only.public

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Discloses it posts a card using dnd5e inline roll enricher, that players click to roll their own check. Does not detail what happens after clicking, error handling, or the resulting message format. Adequate but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, no extraneous information. Every sentence earns its place. Efficient and 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?

Given 6 parameters, no output schema, and no annotations, the description covers the core functionality (posting a request card). Lacks details on return value or error cases, but the tool's simplicity and clear use case compensate. Sufficient for an agent to select and invoke 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 coverage is 100% and each parameter is already well-described in the schema (e.g., ability, skill, kind, dc). Description adds context about dnd5e enricher and GM-only but does not provide additional meaning beyond schema for parameters. 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?

Description clearly states it posts a click-to-roll request card for saving throws, ability checks, or skills. Distinguishes from siblings like 'roll-on-table' (table rolling) and 'send-chat-message' (generic message) by specifying it's a table-facing prompt for players to roll their own checks.

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?

Explicitly says GM-only, indicating it's for GMs to prompt players. Implicitly for group challenges where each player rolls individually, but does not explicitly state when not to use or mention alternatives like 'send-chat-message' for custom messages.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

roll-on-tableA

Roll on a world RollTable and return the drawn result(s). Evaluates without marking results drawn or posting to chat. Any @UUID item links in a drawn result are surfaced as importable (uuid + label) so loot can be pulled into the world. (World tables only — copy a compendium/DMG table in first with import-rolltable.)

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesTable id or exact name.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses key behaviors: no marking results drawn, no posting to chat, surfaces UUID item links as importable. Notes world table limitation. With no annotations, description carries burden well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences front-loading purpose, no extraneous words. Every sentence provides value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with no output schema, description covers purpose, behavior, return value hints, and usage prerequisite. Complete for selection and invocation.

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 schema description already states 'Table id or exact name', so description adds no new meaning. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'Roll', the resource 'world RollTable', and the outcome 'drawn result(s)'. It distinguishes from siblings like 'list-rolltables' and 'update-rolltable' by specifying rolling action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides context that rolling evaluates without marking results drawn or posting to chat, and notes world tables only with a prerequisite to copy compendium tables. Lacks explicit alternatives but offers clear usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screenshot-sceneA

Render a scene in the headless bridge and capture a PNG to a local file — visual QA for imports/maps. Views the scene, waits for the WebGL canvas to draw, fits the whole map into the viewport (or keeps the saved camera with fit:false), and optionally draws numbered markers over each map-note pin (mark:true) to check legend-pin placement (a view-only overlay, no document changes). Returns the file path + scene metadata; open/read that file to view the image. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
fitNoFit the whole scene into the viewport (default). false keeps the saved camera view.
markNoDraw a transient numbered marker over each map-note pin (QA for legend-pin placement). No document changes — the overlay is view-only.
outputPathNoAbsolute local path to write the PNG to. Default: a temp file (path returned).
sceneIdentifierYesScene id or exact name to screenshot.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Describes headless operation, WebGL wait, viewport fitting, marker overlay (view-only), and output, but could mention error handling or prerequisites.

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?

Single paragraph, front-loaded with core purpose, every sentence adds value, no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description adequately covers all parameters, behavior, and output for a screenshot tool.

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?

Description adds context beyond schema (e.g., fit:true/false, mark:true for QA, outputPath default), enhancing understanding despite full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool renders a scene and captures a PNG for visual QA, distinguishing it from sibling scene tools that perform CRUD or get info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains usage for visual QA, imports/maps, and notes GM-only restriction, but doesn't explicitly exclude alternatives or state when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search-actor-contentsA

Search within a character's items, spells, actions, and effects. More token-efficient than get-actor when you need specific items. Supports text search (name/description) and type filtering. Returns matching items with full details including targeting info for spells. Use this to find specific spells, equipment, feats, or abilities without loading the entire character.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by item type: "spell", "weapon", "armor", "equipment", "consumable", "feat", "feature", "action", "effect", or system-specific types. Leave empty to search all types.
limitNoMaximum number of results to return (default: 20)
queryNoText to search for in item names and descriptions (case-insensitive). Leave empty to return all items of specified type.
categoryNoAdditional category filter. For spells: "cantrip", "prepared", "innate", "focus". For items: "equipped", "carried", "invested".
characterIdentifierYesCharacter name or ID to search within

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must cover behavioral traits. It describes the search features (text search, type filtering), return behavior (full details, targeting info for spells), and non-destructive nature. It lacks details on pagination or error handling, but for a search tool, this is sufficient.

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 concisely written in four sentences, each serving a purpose: purpose, efficiency comparison, features, and usage recommendation. No redundancy or filler. It is front-loaded with the main action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters, no output schema, and no annotations, the description adequately covers the essential aspects: input behavior, output details (full details with targeting info), and use case differentiation. It could mention the output format more thoroughly, but it is complete enough for effective use.

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 100% and descriptions are provided. The description adds value by explaining the 'query' parameter searches name/description (case-insensitive), and the 'category' parameter for spells and items. It also clarifies that leaving 'query' empty returns all items of the specified type. This goes beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the purpose: 'Search within a character's items, spells, actions, and effects.' It distinguishes itself from the sibling tool 'get-actor' by noting it is more token-efficient and avoids loading the entire character. The verb 'Search' and resource 'character contents' are specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use this tool: 'Use this to find specific spells, equipment, feats, or abilities without loading the entire character.' It also implies when not to use by contrasting with 'get-actor'. The phrase 'More token-efficient than get-actor' provides clear guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search-compendiumA

Broad NAME search across the premium book compendium packs (any document type). The SRD (dnd5e.*) packs are NOT searched and never appear in results — the authoring library is the premium books only (design.md §2.3). Matches entity NAMES only (all whitespace-separated terms must appear); descriptions and traits are NOT searchable. Premium-first ranked, exact-name first. For faceted discovery by real system data (CR/type/size, spell level/school, item rarity/type), use the type-specific tools instead: search-compendium-creatures, search-compendium-spells, search-compendium-items. Use this for a quick name lookup, then inspect with get-compendium-entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return (default: 50 for discovery searches, max: 50)
queryYesSearch query to find items in compendiums by name only. Use broad, simple terms (e.g., "dragon", "sword", "feat"). Descriptions and traits are NOT searchable.
packTypeNoOptional filter by pack type (e.g., "Item", "Actor", "JournalEntry")

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must fully disclose behavioral traits. It does so comprehensively: it searches names only (not descriptions/traits), matches all whitespace-separated terms, sorts premium-first and exact-name first, and limits results to 50. There are no contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise at three sentences, front-loaded with the main purpose, then detailing constraints and alternatives. Every sentence adds necessary information without redundancy. It is well-structured for quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and moderate complexity, the description explains the search scope, limitations, and suggested follow-up tool (get-compendium-entry). It could be slightly more explicit about the output format (e.g., returns a list of matching pack entries), but it is sufficient for an AI agent to understand usage and next steps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining the search behavior (e.g., 'Use broad, simple terms') beyond the schema. For example, it clarifies that the query is matched only against names, not descriptions, which the schema's description doesn't explicitly state.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: 'Broad NAME search across the premium book compendium packs'. It distinguishes from siblings by noting that SRD packs are not searched and that type-specific tools exist for faceted discovery. This is precise and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use this tool ('quick name lookup') and when not to ('for faceted discovery by real system data... use the type-specific tools instead'). It also specifies that SRD packs never appear, setting correct expectations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search-compendium-creaturesA

D&D 5e CREATURE DISCOVERY: find creatures matching faceted criteria (Challenge Rating, type, size, spellcasting, legendary actions) across the premium book Actor packs only — the SRD (dnd5e.*) packs are excluded and never appear in results (design.md §2.3). Backed by the system Compendium Browser, so CR/type/size check real system data (not name heuristics); hasSpells/hasLegendaryActions are approximate index flags. Returns minimal hits ({id,name,type,uuid,pack,packLabel,img,facets}) premium-first ranked — identify candidates by name, then pull full stat blocks with get-compendium-entry. High result limits for complete encounter-building surveys.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoFilter by creature size
limitNoMaximum results to return (default: 500 for comprehensive surveys, max: 1000)
hasSpellsNoFilter for spellcasting creatures
creatureTypeNoFilter by creature type
challengeRatingNoFilter by Challenge Rating - accepts number, string, or range object. Use ranges for broader discovery (e.g., {"min": 10, "max": 15}) or exact values (12 or "12")
hasLegendaryActionsNoFilter for creatures with legendary actions (D&D 5e)

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral disclosure. It transparently states that the tool is backed by the Compendium Browser using real system data for CR/type/size, notes that hasSpells and hasLegendaryActions are approximate index flags, and specifies the output fields (id, name, type, uuid, pack, packLabel, img, facets) and ordering (premium-first). No contradictions.

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, dense paragraph with no wasted words. It is front-loaded with the core purpose in capital letters, then sequentially covers constraints, data source, output format, and workflow hints. Every sentence serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 6 parameters (including an enum and nested object) and no output schema, the description covers the scope, data source, approximate flags, output fields, and recommended workflow. It could briefly note that all parameters are optional, but the schema already indicates no required parameters. The description sufficiently prepares the agent for correct usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage, so the baseline is 3. The description adds value by clarifying that hasSpells and hasLegendaryActions are approximate flags, and for challengeRating suggests using ranges for broader discovery. While it doesn't expand much per parameter beyond the schema, it provides useful context for effective use of the 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?

The description clearly states the tool's purpose: find D&D 5e creatures matching faceted criteria from premium Actor packs only, explicitly excluding SRD packs. It distinguishes itself from sibling search tools like search-compendium, search-compendium-items, and search-compendium-spells by specifying the scope and data source.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance on when to use this tool: for creature discovery across premium packs while the SRD is excluded. It also suggests a workflow: use this to identify candidates, then pull full stat blocks with get-compendium-entry. It mentions high result limits for encounter-building surveys, providing context for appropriate use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search-compendium-itemsA

D&D 5e ITEM/GEAR DISCOVERY: find equipment, weapons, armor, consumables, and treasure matching faceted criteria (rarity, subtype, properties, magical, name) across the premium book packs only — the SRD (dnd5e.*) packs are excluded and never appear in results (design.md §2.3). Backed by the system Compendium Browser, so filters check real item data (not name heuristics). Returns minimal hits ({id,name,type,uuid,pack,packLabel,img,facets}) premium-first ranked — identify candidates here, then pull full detail with get-compendium-entry. Use documentType to narrow the item family (gear=all, or weapon/armor/consumable).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoCase-insensitive substring to narrow by item name (e.g., "flame", "healing").
limitNoMaximum results to return (default: 50, max: 200)
rarityNoRarity/-ies: common · uncommon · rare · very rare · legendary · artifact (case- and space-insensitive; one value or an array).
magicalNoIf true, keep only items flagged magical (the "mgc" property).
itemTypeNodnd5e item SUBTYPE key (system.type.value), e.g. "wand" · "wondrous" · "rod" · "ring" · "potion" · "scroll" · "ammo"; for weapons the weapon-type key (e.g. "martialM"). One value or an array.
propertiesNoKeep items carrying ANY of these dnd5e property keys (e.g. "mgc" = magical, "fin" = finesse, "ver" = versatile).
documentTypeNoItem family to search: "gear" = everything (weapons, armor/equipment, consumables, tools, loot, containers); or narrow to "weapon", "armor", or "consumable".gear

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses key behaviors: excludes SRD packs, uses real item data (not heuristics), returns minimal fields (id,name,type,uuid,pack,packLabel,img,facets), and ranks premium-first. No destructive or auth details needed for a read tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: two sentences fit all essential information. It front-loads the action and scope, then adds backend and result details. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 optional params, no output schema, no annotations), the description covers scope, behavior, result format, and next-step tool. It even references design documentation. All necessary context is present.

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 has 100% coverage with descriptions for all 7 parameters. The description adds minor context (e.g., 'use documentType to narrow the item family') but mostly restates schema info. 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?

The description clearly states the tool's purpose: 'find equipment, weapons, armor, consumables, and treasure matching faceted criteria'. It specifies the resource (items/gear) and distinguishes it from sibling search-compendium-* tools (spells, creatures) by emphasizing items and premium packs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises to 'use documentType to narrow the item family' and to 'identify candidates here, then pull full detail with get-compendium-entry'. It also notes that SRD packs are excluded, providing clear context. It lacks explicit 'when not to use' but is otherwise helpful.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search-compendium-spellsA

D&D 5e SPELL DISCOVERY: find spells matching faceted criteria (level, school, damage type, name) across the premium book packs only — the SRD (dnd5e.*) packs are excluded and never appear in results (design.md §2.3). Backed by the system Compendium Browser, so filters check real spell data (not name heuristics). Returns minimal hits ({id,name,type,uuid,pack,packLabel,img,facets}) premium-first ranked — identify candidates here, then pull full detail with get-compendium-entry. damageType is a two-stage refine (loads candidate spells to inspect their activities).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoCase-insensitive substring to narrow by spell name (e.g., "fire", "cure wounds").
limitNoMaximum results to return (default: 50, max: 200)
damageTypeNoKeep only spells that deal this damage type (e.g., "fire", "cold", "radiant"). Two-stage: candidate spells are loaded to inspect their activities, so this narrows an already facet-filtered set.
spellLevelNoFilter by spell level — exact number (0 = cantrip … 9) or a {"min","max"} range for surveys.
spellSchoolNoSpell school(s): abjuration · conjuration · divination · enchantment · evocation · illusion · necromancy · transmutation (full name or dnd5e 3-letter key; one value or an array).

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description reveals key behaviors: premium-only scope, real data checks (not heuristics), premium-first ranking, and the two-stage damageType process. It stops short of mentioning authentication or rate limits but is thorough.

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 paragraph but logically ordered: purpose, scope, backend, return format, usage tip, special note. It's concise yet informative, with minimal redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters, no annotations, and no output schema, the description covers the essential context: return fields, ranking, scope, and follow-up tool. It could list more example values but is complete enough.

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 100% with descriptions. The free-text adds value by explaining the two-stage refinement for damageType and the scope restriction (premium packs only) not in schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it's for discovering D&D 5e spells with faceted criteria, limited to premium book packs, and explicitly excludes SRD. This distinguishes it from sibling search tools like search-compendium-creatures and search-compendium-items.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides usage guidance: use this to find candidates and then get-compendium-entry for full details. It explains the two-stage refine for damageType. While not explicitly excluding alternatives, the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search-journalsA

Search through all pages of all journal entries for specific content or keywords. Returns which specific page matched, so you can read it with list-journals using journalId + pageId.

ParametersJSON Schema
NameRequiredDescriptionDefault
searchTypeNoWhere to search (default: both)both
searchQueryYesText to search for in journal entries

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It states the search scope (all pages of all journals) and return value (page matched). It implies a read-only operation, but does not explicitly state safety or performance considerations. However, the behavior is adequately described for a search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two clear, front-loaded sentences with no superfluous information. It efficiently conveys the action and output usage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (search journals), and the description covers its main behavior and output. It links to list-journals for reading. No output schema exists, but the description explains the return format. It does not specify details like case sensitivity or result limits, but is reasonably complete for its purpose.

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 both parameters (searchQuery, searchType) with descriptions. The description does not add new parameter meanings beyond what is in the schema, so baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches journal entries for specific content/keywords and returns the matched page. It distinguishes itself from sibling search tools (e.g., search-actor-contents, search-compendium) by specifically targeting journals and linking to list-journals for reading results.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use the tool (to search journals) and how to use the result (via list-journals with journalId+pageId). It does not explicitly mention when not to use it or compare to other search tools, but the usage context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send-chat-messageA

Post a message to the Foundry chat log as the GM bridge user. Content is HTML. Choose a visibility mode (public / gm whisper / blind / self) and optionally speak AS a character (speakerActor). Embed images via the images param (local files upload over WebDAV; Data-relative paths and https URLs link directly — uploaded files are PUBLIC). GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
styleNoPresentation style (defaults to ic when speakerActor is set, else ooc).
enrichNoPre-enrich content (resolve @UUID links and inline rolls) before posting.
flavorNoOptional secondary header line, e.g. "Perception Check".
imagesNoImages to embed. Local files are uploaded to the world over WebDAV and linked; Data-relative paths and https URLs are linked directly. PRIVACY: uploaded files are served publicly with no auth.
contentYesMessage body as HTML (all formatting is just HTML). Inline rolls like [[/r 1d20+5]] and @UUID[Type.id]{label} links are enriched on render. Use the images param to attach images rather than hand-writing <img>.
visibilityNopublic = everyone; gm = whisper to all GMs; blind = whisper to GMs (mainly meaningful for rolls — for plain text it behaves like gm but also sets blind); self = only the bridge user. For "public as a character", use public + speakerActor.public
imageFolderNoData-relative folder for uploaded local images (default "worlds/<world>/assets/chat").
speakerActorNoActor id / exact name / name-substring (or scene token id) to speak AS — the message renders with that character as speaker (the "public as character" mode).
overwriteImagesNoOverwrite an existing uploaded image of the same name instead of refusing.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but description discloses key behaviors: messages posted as GM bridge user, HTML content, image uploads are public, visibility modes explained, and speakerActor capability. Good transparency for a messaging 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?

Concise single paragraph, front-loads primary action. Could be more structured but effective.

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?

Complete for a message posting tool with 9 parameters. Covers main use cases, privacy warning, and GM restriction. No output schema needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, baseline 3. Description adds value beyond schema: explains public nature of uploads, 'public as a character' usage, enrich default, etc.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool posts a message to Foundry chat as GM bridge user with HTML content, visibility modes, and optional speaker. Distinguishes from sibling tools like post-item-card or request-roll by focusing on general chat.

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?

Explicitly states GM-only usage and describes when to use visibility modes and speakerActor. Lacks explicit 'when not to use' but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set-actor-artA

Composition. Set an actor's portrait image, and by default its prototype token art too, from a Data-relative path. The portrait (actor.img) must be a STILL image; pass tokenImagePath to give the prototype TOKEN an animated video (.webm/.mp4) while keeping a still portrait (the JB2A-effect pattern). GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
imagePathYesData-relative path to the PORTRAIT image. Must be a STILL image — actor.img rejects video. Also used for the token texture unless tokenImagePath is given.
applyToTokenNoAlso set the prototype token texture (default true).
tokenImagePathNoOptional Data-relative path for the prototype TOKEN texture, which (unlike the portrait) accepts an animated VIDEO (.webm/.mp4/.m4v/.ogg) — e.g. a JB2A effect. Defaults to imagePath.
actorIdentifierYesActor id or exact name.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that setting token art is default (applyToToken true), the portrait must be still, and token can accept video. It also mentions GM-only permission. No contradictions or hidden side effects are omitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, each with a clear purpose: core action, nuance about animation, and permission. No redundant words; it is front-loaded with the primary action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 4 parameters (2 required), 100% schema coverage, and no output schema or annotations, the description covers the key behavioral aspects, use case, and permission. It could mention the effect on actor.img and token.texture explicitly, but the schema covers parameter details.

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 100%, baseline 3. The description adds value by explaining the still vs animated distinction and the pattern (JB2A-effect), which goes beyond the schema descriptions. It ties the parameters together meaningfully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool sets an actor's portrait and, by default, the prototype token art. It specifies the verb 'set', the resource 'actor's portrait image' and 'prototype token art', and the constraint of using a Data-relative path. It also distinguishes between still portrait and animated token, providing unique purpose clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states 'GM-only', indicating who can use it. It explains when to use tokenImagePath (for animated token while keeping still portrait), implying when not to use it. However, it does not directly compare to sibling tools like 'update-actor' which might also modify images, but the specialized nature is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set-actor-ownershipA

Set ownership permissions for actors. Use permissionLevel OWNER/OBSERVER/LIMITED to grant access, or NONE to remove it. Supports individual assignments like "Make John the owner of Aragorn" and bulk operations like "Give the party observer access to all friendly NPCs".

ParametersJSON Schema
NameRequiredDescriptionDefault
actorIdentifierYesActor name, ID, or "all friendly NPCs" for bulk operations. Use "party characters" for all player-owned actors.
permissionLevelYesPermission level to assign: NONE (no access), LIMITED (basic view), OBSERVER (full view, no control), OWNER (full control)
playerIdentifierYesPlayer name, character name, or "party" for all connected players. Supports partial matching.
confirmBulkOperationNoRequired confirmation for bulk operations affecting multiple actors/players

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully explains the permission levels (OWNER/OBSERVER/LIMITED/NONE) and bulk operation confirmation. It covers key behavioral details like partial matching and the 'party characters' keyword, though it omits side effects or prerequisites.

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 with no filler. The first sentence states the core action and permission levels; the second provides illustrative examples. Perfectly concise and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema or annotations, the description adequately covers usage: permission levels, bulk operations, and confirmation. It could mention error conditions or who can perform the action, but the core functionality is well described.

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 100%, but the description adds value beyond the schema by clarifying valid values for bulk operations ('all friendly NPCs', 'party characters') and noting partial matching for playerIdentifier. This extra context aids correct parameter use.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with 'Set ownership permissions for actors,' a specific verb+resource. It distinguishes from siblings like 'list-actor-ownership' by focusing on modification. Examples of individual and bulk operations further clarify the tool's 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides concrete usage scenarios ('Make John the owner of Aragorn', 'Give the party observer access'). It implies context but does not explicitly state when to avoid this tool or mention alternatives (e.g., reading ownership via list-actor-ownership).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set-journal-page-visibilityA

Flip one journal PAGE between player-visible (a handout players can OBSERVE) and GM-only, WITHOUT rewriting its content. Sets the page ownership default. Use this to reveal/hide an existing page — e.g. a page that came up GM-only from an append — instead of rebuilding the whole journal. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesPage id (from list-journals).
journalIdYesJournal entry id or exact name.
playerVisibleYestrue = players can OBSERVE this page (a handout); false = GM-only.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that it sets page ownership default and does not modify content, which is key behavioral trait. With no annotations, description carries full burden; it is adequate but does not cover permissions or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise two sentences that front-load the key action. Could be slightly tighter, but no unnecessary words.

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 toggle tool with no output schema. Explains the core behavior and usage scenario. Lacks details on error cases or return value, but that's acceptable given complexity.

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 already describes all parameters (100% coverage), but description adds context: 'flip' implies toggling, and explains playerVisible as 'a handout players can OBSERVE' and GM-only. Enhances understanding beyond raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it flips a journal page between player-visible and GM-only, specifying the verb 'flip' and resource 'journal PAGE'. Distinguishes from updating the whole journal by explicitly noting it does not rewrite content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to use: to reveal/hide an existing page instead of rebuilding the whole journal. Includes a concrete example (page from an append). Lacks explicit when-not-to-use, but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set-user-avatarA

Set a Foundry user's avatar — the portrait shown next to that user's chat messages. Defaults to the bridge user (MCP-Claude), so this is how you give the MCP's own chat posts a portrait instead of the default mystery-man. Pass a Data-relative path or https URL (upload local files with upload-asset first). GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
userNoUser id or exact name to update. Default: the bridge user that posts (MCP-Claude).
avatarYesAvatar image: a Data-relative asset path (e.g. "assets/mcp/mcp-claude.jpg"), an https URL, or a Foundry built-in icon path. Upload local files first with upload-asset, then pass the returned path/URL here.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses mutation (set avatar), default behavior (bridge user), permission requirement (GM-only), and accepted input types. It lacks details on side effects or success indicators, but is otherwise transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: three sentences covering purpose, default behavior, input format, and prerequisite. No redundant information, front-loaded with key action, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with 2 params and no output schema, the description covers purpose, defaults, input types, prerequisite, and permissions. It does not mention what the tool returns on success, but overall it is sufficiently complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers both parameters with descriptions (100% coverage), so baseline is 3. The description adds value by clarifying the default for 'user', providing example paths for 'avatar', and referencing upload-asset. This extra context enhances understanding beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Set a Foundry user's avatar', specifying the exact verb and resource. It distinguishes this tool from siblings like set-actor-art by focusing on user avatars, and mentions the default behavior for the bridge user, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly explains when to use (setting user avatar, especially for MCP-Claude), notes the prerequisite of using upload-asset for local files, and states 'GM-only' to indicate access restrictions. This provides clear context for appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-actorA

[D&D 5e only] Edit an EXISTING actor's own stat-block fields. Supply only the groups you want to change: • identity + prototype token — name, tokenName (prototype nameplate ≠ actor name), img, disposition (friend/foe), tokenAutoRotate (face movement / lockRotation), tokenRing (dynamic ring), tokenScale (art size), tokenRotation (facing) — the PROTOTYPE-token editor. (elevation / hidden / x / y are placement-only: edit those on a dropped token with update-token) • details — size, cr*, creatureType*, creatureSubtype*, swarmSize*, alignment, biography, source • abilities — abilities.{str..cha}, savingThrows (replace), skills (merge; proficiency none/proficient/expert) • vitals — hp, ac, initiative • movement, senses • defenses — damageImmunities / damageResistances / damageVulnerabilities / conditionImmunities / languages (each {mode: replace|add|remove, values, custom?}), telepathy • resources* — legendaryActions, legendaryResistances, lair • 2024* — habitat, treasure • currency — coins {mode: set|add, pp, gp, ep, sp, cp} (carried money)

Fields marked * are NPC-only (skipped with a warning on player characters). This authors the stat block; it does NOT edit embedded items (use update-actor-item / add-feature / manage-activity) or run combat. Use list-actors or get-actor to find the actorIdentifier.

ParametersJSON Schema
NameRequiredDescriptionDefault
acNoArmor class.
crNo[NPC] Challenge rating (0.125 / 0.25 / 0.5 allowed).
hpNoHit points (value / max / temp / tempmax / formula).
imgNoPortrait image path or URL.
lairNo[NPC] Lair actions — sets the lair initiative count (marks the creature as having a lair).
nameNoRename the actor.
sizeNoCreature size (long name or short code).
sensesNoSenses ranges (feet) plus special-sense free text.
skillsNoSet skill proficiencies — merge: only the listed skills change.
sourceNoSource metadata (book / page / rules edition).
habitatNo[NPC, 2024] Habitats (replace the whole list), e.g. [{type:"forest"},{type:"planar",subtype:"nine hells"}].
currencyNoCarried coins (pp/gp/ep/sp/cp). Only the coins you list change.
movementNoMovement speeds (in the given units, default feet).
treasureNo
abilitiesNoAbility scores to set — only the abilities you list change.
alignmentNoAlignment free text (e.g. "Lawful Evil").
biographyNoBiography / description (HTML).
languagesNo
swarmSizeNo[NPC] Swarm member size, or "" if the creature is not a swarm.
telepathyNoTelepathy range (0 = none).
tokenNameNoPrototype-token nameplate, decoupled from the actor name — e.g. actor "Morgash the Gravemaker" whose dropped tokens read just "Morgash". A plain `name` rename keeps the two in lockstep; pass tokenName (alone or alongside name) to make them differ. Placed tokens keep their own name — retitle those with update-token.
tokenRingNoPrototype-token dynamic ring: false = plain token (the house default; new creations already get it), true = re-enable the ring (its colors/subject config is preserved).
initiativeNoInitiative bonus and/or ability override.
tokenScaleNoPrototype-token art scale — the "Scale (Ratio)" slider on the token Appearance tab (sets texture.scaleX and scaleY together). 1 = normal, 1.5 = 50% larger, 2 = double. Scales only the art within the token's grid footprint; it does NOT change the token's size (grid spaces).
dispositionNoPrototype-token disposition (friend vs foe). Set 'friendly' to mark an NPC an ally (e.g. a freed captive), 'hostile' for an enemy, 'neutral' for a bystander.
creatureTypeNo[NPC] Creature type: aberration, beast, celestial, construct, dragon, elemental, fey, fiend, giant, humanoid, monstrosity, ooze, plant, undead.
savingThrowsNoReplace the proficient saving throws: the listed abilities become proficient, all others non-proficient.
tokenRotationNoPrototype-token facing in degrees (0–359) — the default angle a dropped token faces. Same behavior as update-token for placed tokens: a lock-rotation prototype (tokenAutoRotate false) HIDES the angle, so setting a rotation without also setting tokenAutoRotate AUTO-UNLOCKS rotation (and warns) so the facing shows. (elevation / hidden / x / y are PLACEMENT-only — a prototype has no such fields; set those on a dropped token with update-token.)
actorIdentifierYesName or id of the actor to edit (partial name match supported). Also accepts a placed TOKEN id (from list-tokens): the edit then lands on that token INSTANCE's own actor (its delta), not the base actor — the way to edit ONE placed copy of an unlinked NPC, since base-actor edits never reach tokens already on a scene.
creatureSubtypeNo[NPC] Creature subtype free text (e.g. "Devil").
tokenAutoRotateNoPrototype-token auto-rotation: true = the token turns to face its movement (lockRotation off — the house default; new creations already get it), false = fixed facing.
damageImmunitiesNo
legendaryActionsNo[NPC] Legendary action points per round (resources.legact.max).
damageResistancesNo
conditionImmunitiesNo
legendaryResistancesNo[NPC] Legendary resistance uses per day (resources.legres.max).
damageVulnerabilitiesNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses that fields marked with * are NPC-only (skipped with warning on PCs), explains token field behaviors (tokenName, tokenRing, tokenAutoRotate, tokenRotation), and notes that actorIdentifier can accept token IDs. However, it does not state whether the operation is safe (no destructive hint) 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 long but well-structured with bullet points and clear categories. It front-loads the purpose and then organizes groups. While informative, it could be slightly more concise (e.g., some details are repeated in schema descriptions).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers most aspects of the tool's behavior and parameters, but it does not mention the return value (no output schema exists). Given the complexity (37 params), the description is fairly complete, but the missing output info is a notable gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 84%, so the schema already documents many parameters. The description adds value by grouping parameters into logical categories (identity, details, abilities, etc.) and explaining merge/replace behavior for skills, savingThrows, defenses, and currency. It also clarifies nuances like tokenName decoupling and tokenRotation auto-unlock.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool edits an existing actor's stat-block fields for D&D 5e, listing specific groups. It distinguishes from sibling tools like update-token, update-actor-item, and manage-activity by explicitly stating what it does NOT do.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool (to edit stat-block fields) and when to use alternatives (update-token for placement, update-actor-item for items, etc.). It also advises using list-actors or get-actor to find the actorIdentifier.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-actor-itemA

[D&D 5e] Edit an item embedded on an actor (weapon / feature / spell / equipment). Apply a dot-path patch (values applied as-is; arrays/Sets replace whole) and/or deletePaths (remove keys, e.g. an activity by id), and/or change name/img. This is the low-level item editor — to add/edit/remove activities (attacks, saves, heals, etc.) prefer manage-activity, which knows the shapes. Use get-actor or get-actor-entity to find the item and the exact paths/ids to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
imgNoItem image path or URL.
nameNoRename the item.
typeNoOptional item type to disambiguate the lookup (e.g. "weapon", "feat", "spell").
patchNoMap of Foundry dot-path -> value, applied as-is. Examples: {"system.damage.base.number": 3}, {"system.damage.base.types": ["fire"]} (arrays REPLACE whole), {"system.activities.<id>.attack.bonus": "2"}, {"system.equipped": true}, {"system.description.value": "<p>...</p>"}.
deletePathsNoDot-paths to delete from the item, e.g. "system.activities.<id>" to remove an activity. Converted to the Foundry "-=" deletion form for you.
itemIdentifierYesName or id of the embedded item to edit (id, exact name, then substring).
actorIdentifierYesName or id of the actor that owns the item (partial name match supported). Also accepts a placed TOKEN id (from list-tokens): the edit then lands on that token INSTANCE's own delta, not the base actor — the way to re-gear ONE placed copy of an unlinked NPC (base-actor edits never reach tokens already on a scene).

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully describes behavior: patch applies values as-is, arrays replace whole; deletePaths are converted to Foundry deletion form; actorIdentifier accepts token IDs for delta edits on placed tokens. This goes beyond schema 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 concise, with no wasted words. Key information is front-loaded regarding purpose and operations, and supplementary details follow logically.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 7 parameters with only 2 required and no output schema, the description covers all essential aspects: the capabilities, how parameters work, and important nuances (e.g., token handling). It is fully sufficient for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema coverage is 100%, the description adds significant meaning with concrete examples for patch and deletePaths, and explains the token instance behavior for actorIdentifier, providing practical context beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool edits an embedded item on an actor, detailing specific operations (patch, deletePaths, name/img). It explicitly distinguishes from the sibling manage-activity tool, making its purpose distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit guidance on when to use this tool (low-level item editing) versus when to use manage-activity (activities). It also recommends using get-actor or get-actor-entity to find the item and paths, offering clear context for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-drawingsA

Edit one or more placed DRAWINGS by id (from list-drawings): MOVE via x/y, RESIZE via width/height/radius or replace polygon points, restyle stroke/fill, change or clear the text label (text:""), toggle hidden/locked/interface. The shape KIND cannot change — delete and recreate for that. Patches only the fields you pass. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
drawingsYesThe drawing patches to apply (each targets one id).
sceneIdentifierYesScene id or exact name holding the placeables.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must explain behavioral traits. It covers mutation behavior, patching semantics, and the constraint that shape KIND cannot change. It does not detail safety, reversibility, or auth beyond GM-only. Adequate but not comprehensive.

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?

Single, well-structured paragraph with clear categories and front-loaded action. No superfluous words. Efficiently conveys key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers major operations, patching behavior, GM-only restriction, and the inability to change shape kind. It lacks return value details (no output schema) and error cases, but for a modification tool with many parameters, it is largely 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 coverage is 100%, so baseline is 3. The description adds value by explaining the shape KIND constraint not in schema, but does not elaborate on parameter details beyond what schema provides. Meets minimum expectation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool edits existing DRAWINGS by ID, listing specific operations (move, resize, restyle, change text, toggle hidden/locked/interface). It distinguishes from siblings like create-drawings, delete-drawings, and list-drawings by specifying modification of existing entities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'Patches only the fields you pass' and 'GM-only', indicating when to use. It references list-drawings for IDs. However, it lacks explicit 'when not to use' or comparison to alternatives, but the purpose is distinct enough to guide selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-folderA

Update a sidebar Folder in place — rename it, recolor it, and/or reparent it (nest under another folder of the same type, or pass parentFolder:"" to move it to the root). Resolves the folder by exact id or exact name+type. Use this to RENAME a folder without the move-documents + delete-folder dance. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew folder name (rename).
typeNoFolder document type (needed to resolve by name; default Actor).Actor
colorNoNew hex color, e.g. "#4a90e2".
identifierYesFolder id or exact name to update.
parentFolderNoReparent under this folder id or exact name (same type). "" = move to root.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses resolution by id or name+type, reparenting behavior, and GM-only restriction. However, it does not detail error handling or confirmation of updates.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences with no filler. The first sentence introduces the action and capabilities, the second provides resolution and usage guidance. Every word serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description covers the core functionality (update, rename, recolor, reparent), resolution method, and restrictive audience (GM-only). Missing specifics on success/failure responses but sufficient for the tool's complexity.

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 100%, so baseline is 3. The description adds value by explaining identifier resolution ('exact id or exact name+type') and the special case for moving to root (passing an empty string). It also provides a use-case hint for renaming.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Update' and the resource 'sidebar Folder', listing specific actions (rename, recolor, reparent). It distinguishes this from sibling tools like 'create-folder' and 'delete-folder' by its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises using this tool to rename a folder without the 'move-documents + delete-folder dance', providing an alternative. It also notes 'GM-only', setting clear usage constraints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-itemA

Update existing world-level Item(s) by id — change name, img, system data, or folder. GM-only. Renaming an UNIDENTIFIED dnd5e item works on the true source name; the echo shows the mystery-mask name plus trueName so the rename is visible.

ParametersJSON Schema
NameRequiredDescriptionDefault
updatesYesOne or more item patches. Each entry must include "id" plus at least one field to change (name, img, system, folder).

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses authorization requirement (GM-only) and a special rename behavior for dnd5e. With no annotations, the description partially carries the behavioral burden but does not mention side effects, destructiveness, or what happens on error.

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 with no waste: purpose, constraint, and a critical special case all front-loaded. 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?

Covers key aspects (purpose, authorization, special case) but lacks information about return values (no output schema) and does not explain what 'world-level' means in contrast to actor-owned items. For a mutation tool with no annotations, some gaps remain.

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 100%, and the description adds meaningful extra context beyond the schema: it explains the rename behavior for unidentified dnd5e items, which is not in the schema. The description also reiterates the 'world-level' scope, reinforcing the parameter's context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states verb (update) and resource (world-level Items by id), lists changable fields (name, img, system data, folder), and specifies GM-only. Distinguishes from sibling tools like create-item and update-actor-item by explicitly saying 'world-level'.

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?

Explicitly states GM-only constraint and provides specific guidance for renaming unidentified dnd5e items. However, lacks explicit guidance on when to use this versus alternatives like update-actor-item, though the world-level scope is implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-journalA

Generic JournalEntry update: rename the entry (name) and/or set page content. Content replaces the target page — pass pageId to target a specific page, newPageName to add a new page, or neither to update the first text page. For quest-style append updates use update-quest-journal instead. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew journal entry name (rename).
pageIdNoTarget a specific page by id (get ids from list-journals).
contentNoHTML content to set on the target page (replaces existing content).
journalIdYesJournal entry id or exact name.
newPageNameNoIf set (without pageId), create a new page with this name from content.
playerVisibleNoSet the written page visibility: true = players can OBSERVE it (a handout), false = GM-only. Omit to leave it unchanged. To flip an EXISTING page without rewriting its content, use set-journal-page-visibility.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses destructive behavior (content replaces existing), creation of new pages (newPageName), and that tool is GM-only. No annotations present, so description fully handles transparency.

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?

Concise, four sentences with clear front-loading. No redundant information; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers main use cases and distinguishes from sibling, but lacks description of return value or error handling. Acceptable for a straightforward update tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds meaning beyond schema by explaining interactions between pageId, newPageName, and content. Schema coverage is 100%, but description provides additional context on conditional behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it updates a journal entry by renaming or modifying page content, and distinguishes from update-quest-journal for quest-style updates. Specific verb 'update' with resource 'JournalEntry'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use (generic update) and when not to (use update-quest-journal instead). Provides conditional logic for page targeting and notes GM-only restriction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-lightsA

Edit one or more placed AMBIENT LIGHTS by id (from list-lights): MOVE via x/y, change dim/bright radii, color, alpha, angle, luminosity, attenuation, the animation (animationType/Speed/Intensity — e.g. add torch flicker), the darkness activation range, walls/vision, hidden. Emission fields nest under config internally — patches only the fields you pass, so a partial change never wipes the rest. Unresolved ids reported. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
lightsYesThe light patches to apply (each targets one id).
sceneIdentifierYesScene id or exact name holding the placeables.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description fully bears the behavioral transparency burden. It discloses that updates are partial ('patches only the fields you pass'), unresolved ids are reported, and the tool is GM-only. It also explains internal nesting of emission fields and provides examples like torch flicker.

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, efficient paragraph that front-loads the main purpose. Every sentence adds value, covering scope, partial update behavior, error handling, and permissions without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (many parameters) and no output schema, the description is thorough. It lists all editable aspects and explains behavior. It lacks explicit return value info, but the partial update and error reporting context suffices.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the baseline is 3. The description adds semantic value beyond the schema by providing real-world examples ('warm torch', 'add torch flicker'), explaining default values (alpha ~0.3), and clarifying the behavior of partial updates and darkness ranges.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Edit one or more placed AMBIENT LIGHTS by id' with specific editable fields like x/y, dim, bright, color, etc. It distinguishes from sibling tools like create-lights and delete-lights by mentioning 'update' and referencing 'list-lights'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage after listing lights and for updating existing lights. It provides context on partial updates and GM-only access, but does not explicitly state when not to use it or mention alternatives like create or delete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-noteA

Nudge ONE existing map-note pin by id (the legend→pins review loop): move it (x/y), relabel it, resize/restyle its icon, toggle fog global, or re-point it to a different journal/page. Patches only the fields you pass; at least one is required. Strict scene + note-id resolution. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoNew pin X in absolute canvas pixels.
yNoNew pin Y in absolute canvas pixels.
iconNoNew Data-relative icon image src.
pageNoPage id or exact name within the (re-pointed) journal; only used with `journal`.
labelNoNew text shown on the pin.
globalNoRender the pin through fog/vision occlusion (NOT a permission control).
noteIdYesThe Note id to update (from create-scene-notes/list-notes).
journalNoRe-point the pin to a different JournalEntry (id or exact name, strict resolve).
iconSizeNoNew icon size in px (min 32).
sceneIdentifierYesScene id or exact name holding the pin.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses key behaviors: partial updates (patches only fields passed), at least one required field, GM-only execution, and strict scene+note-id resolution. It does not mention error handling or response format, but the disclosed traits are sufficient for safe invocation.

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 two sentences, packed with information. The first sentence front-loads the primary action and key capabilities. It is efficient, but the first sentence is slightly long. Overall, it earns its place without fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 10 parameters, no output schema, and no annotations, the description provides substantial context: the patch behavior, required fields, scene/note resolution, and GM-only restriction. It lacks details on return values or error conditions, but these are partially mitigated by the schema's parameter descriptions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, baseline is 3. The description adds semantic value beyond the schema by grouping actions (nudge, relabel, resize, etc.) and explaining the 'global' field's purpose (fog occlusion, not permission control). This helps an agent understand parameter intent better than the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it updates an existing map-note pin by id and lists all modifiable attributes (position, label, icon, etc.). It distinguishes from create/delete siblings by specifying 'Nudge ONE existing map-note pin' and refers to the 'legend→pins review loop', making its purpose highly specific and actionable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context (GM-only, part of review loop, strict resolution) but does not explicitly state when not to use this tool or suggest alternatives. However, the context strongly implies it is for modifying existing notes, and sibling tool names like create-scene-notes and delete-note cover the other cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-playlistA

Update a Playlist's document fields: rename, change playback mode, or set the crossfade duration. Does not add/remove tracks. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
fadeNoCrossfade duration in milliseconds.
modeNoNew playback mode.
nameNoNew playlist name.
identifierYesPlaylist id or exact name.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses key behaviors: updates document fields, does not add/remove tracks, and is GM-only. With no annotations, description carries full burden and covers essential traits. Could mention idempotency or error conditions, but sufficient for typical use.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with action and scope. No redundant information. Every sentence adds value.

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?

Adequately covers tool purpose and constraints for a low-complexity tool (4 params, no nested objects, no output schema). Could mention return value or confirm action, but not essential given the context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with good parameter descriptions. Description adds context by naming the fields (rename, playback mode, crossfade) but does not provide additional semantic detail beyond what schema already offers. 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?

Description clearly states the tool updates playlist fields (rename, change playback mode, set crossfade) and explicitly excludes adding/removing tracks. Also notes GM-only restriction. Distinguishes from sibling tools like create-playlist or delete-playlist.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides context on what the tool does and what it does not do (add/remove tracks). Implies it's for modifying existing playlists. No explicit alternative sibling mentioned, but the exclusion helps guide usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-quest-journalA

Append a new styled section to a quest/journal page from typed blocks (e.g. a heading "Session 3" + paragraphs of what happened) — the §8 session-log/progress path. You supply the words as blocks; the tool styles + appends them. By default appends to the first text page; use pageId to target a page, or newPageName to start a new page. Structuring only.

ParametersJSON Schema
NameRequiredDescriptionDefault
blocksYesTyped blocks to APPEND as a new styled section (e.g. a heading "Session 3 — date" + paragraphs). You supply the words; the tool styles them. Include a heading block to label it.
pageIdNoPage to append to (id from list-journals). Omit to use the first text page.
journalIdYesID of the quest journal to update.
newPageNameNoIf set (without pageId), create a NEW page with this name from the blocks instead.
playerVisibleNoSet the target/new page visibility: true = players can OBSERVE it (a handout), false = GM-only. Omit to leave visibility unchanged (a new page then inherits GM-only).

TDQS

A4.3/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 that the tool 'styles + appends' the blocks, is 'append-only,' and mentions visibility inheritance for new pages. These are behavioral traits beyond basic schema 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 concise and front-loaded with the main action. Every sentence adds value without redundancy. It efficiently covers purpose, usage, and key parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and absence of output schema, the description provides sufficient context: block types, page targeting, visibility options, and a note about requiring a heading block. An agent can correctly invoke the 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 description coverage is 100%, so the baseline is 3. The description adds minimal extra meaning (e.g., 'you supply the words as blocks; the tool styles + appends them'), but the schema already thoroughly describes each block type and parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Append a new styled section to a quest/journal page from typed blocks'. It specifies the verb 'append', the resource 'quest/journal page', and the mechanism 'typed blocks'. It also mentions the specific context '§8 session-log/progress path', distinguishing it from general journal update tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for usage: 'By default appends to the first text page; use pageId to target a page, or newPageName to start a new page.' It also notes 'Structuring only,' implying the tool handles structure rather than raw content. However, it does not explicitly state when not to use it or mention alternatives among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-regionA

Update ONE region by id: rename, recolor, change visibility, replace its shapes whole, or reshape to a single grid rectangle via the rect convenience (center px + cells + snap — the move/resize you'd do reviewing a teleporter). Patches only what you pass; behaviors are left untouched. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew region label.
rectNoConvenience: reshape to ONE grid rectangle centered at (x,y), sized in cells, grid-snapped by default (the move/resize the review loop wants). Ignored if `shapes` is given.
colorNoNew region tint hex.
shapesNoReplace the region shapes whole (v14 shapes in canvas px).
regionIdYesRegion id (from create-region / create-teleporter / list-regions).
visibilityNoNew visibility mode (0 layer / 1 gamemaster / 2 always).
sceneIdentifierYesScene id or exact name holding the region.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility. It discloses that it's a partial update (patches only passed parameters), leaves behaviors untouched, and is GM-only. While it doesn't detail return values or error handling, it provides essential behavioral context for safe use.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the main purpose and capabilities. Every word serves a purpose—no redundancy. It efficiently conveys all key details without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of 7 parameters and nested objects, the description covers core functionality: partial update, GM restriction, and rect convenience. It omits the interaction between rect and shapes (schema covers it), but overall provides sufficient context for correct tool use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% description coverage, so baseline is 3. The description adds value by explaining the rect convenience as a 'move/resize' action and clarifying shapes replacement. It reinforces the patch semantics, enhancing understanding beyond the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates a single region by ID and lists specific attributes: rename, recolor, change visibility, replace shapes, or reshape via rect. It distinguishes from sibling tools like create-region and delete-region, and notes it's GM-only, providing a specific verb and resource focus.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for modifying existing regions, mentioning 'GM-only' as a constraint and explaining the rect convenience. It does not explicitly state when not to use or compare to alternatives, but the context of sibling tools makes usage clear. The patch behavior is highlighted, aiding decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-rolltableA

Update a RollTable's fields (name, description, formula, replacement, displayRoll) and/or its entries, two ways: editResults = TARGETED per-entry edits — name an entry by its roll face (e.g. 7 on a d12) or resultId (from get-rolltable) and patch just its text, linked uuid, weight, and/or range; every OTHER entry (ranges, weights, @UUID item links) stays byte-identical — the right way to fix a typo on one entry of a tuned table. text/uuid REPLACE that entry's content (copy the raw text from get-rolltable and change only what you need). results = DESTRUCTIVE whole-set replace (all entries deleted and recreated with auto-assigned ranges). Bad edits are isolated + reported; an introduced range overlap/gap is warned. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew table name.
formulaNoNew roll formula.
resultsNoDESTRUCTIVE: replaces ALL existing results (deleted + recreated with auto-assigned ranges). To change one entry, use editResults instead.
identifierYesTable id or exact name.
descriptionNoNew description.
displayRollNoShow the roll when drawing.
editResultsNoTARGETED per-entry edits — fix one entry's text/link/weight/range in place; every other entry (ranges, weights, @UUID item links) is left byte-identical. Mutually exclusive with `results`.
replacementNoDraw with replacement.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully discloses behavioral traits: results is destructive (deletes and recreates entries), editResults leaves other entries byte-identical, bad edits are isolated and reported, range overlap/gap is warned, and uuid references to SRD are refused. It also notes GM-only restriction.

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 relatively long but well-structured, starting with the overarching purpose and then detailing the two modes. Every sentence provides essential information, though some redundancy (e.g., repeated warnings) could be trimmed. It remains efficient for the complexity of the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (8 parameters, two modes, no output schema), the description covers all necessary aspects: parameter behavior, mode differences, SRD restrictions, error handling, and access restrictions (GM-only). It adequately prepares the agent to use the tool correctly without gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema coverage is 100%, the description adds substantial meaning beyond the schema: it explains the difference between editResults and results, the auto-assignment of ranges, the SRD restriction, and the use of `name` vs `text` vs `uuid`. For editResults, it clarifies how to target entries via `roll` or `resultId`. This significantly aids the agent in using parameters correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool updates RollTable fields and entries, with two distinct modes: targeted edits via editResults or destructive whole-set replace via results. It distinguishes itself from create-rolltable and delete-rolltable by specifying updating behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use each mode: editResults for fixing individual entries (e.g., a typo) while preserving others, and results for replacing all entries. It implies to use get-rolltable for reading, and notes that the tool is GM-only, providing clear guidance on appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-sceneA

Update an existing Scene document — rename, swap its background image (Data-relative path), toggle navigation, set the navigation label, change dimensions/grid (size/type/distance/units)/padding, token vision, fog mode, lighting (darkness, global light), weather, a nav thumbnail, or the linked playlist/journal ("" clears a link). Also (parity with create-scene) deep-merges a full environment{}/fog{} mood object, re-points the saved camera (initial{x,y,scale}), or re-stamps document flags on an existing scene. Scene-document only: never touches placeables (walls/lights/tokens) and never activates the scene. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
fogNoA v12+ scene's full fog{} object (exploration, overlay, colors), carried whole (deep-merged).
nameNoNew scene name.
flagsNoDocument flags namespaced by scope — e.g. {"tom-cartos-import":{sourceModule,sourceId}} for import provenance/dedup. Deep-merged over any existing flags (re-stampable on update).
thumbNoData-relative path to a pre-rendered navigation thumbnail (e.g. an uploaded <id>-thumb.webp shipped by a map pack). Foundry may regenerate it on a later in-app edit, so treat it as a nice-to-have, not load-bearing.
widthNoScene width in pixels.
heightNoScene height in pixels.
fogModeNoFog of war: disabled | individual (classic per-player) | shared (party-wide).
initialNoThe saved initial camera view {x,y,scale} to restore on scene load (deep-merged).
journalNoJournalEntry id or exact name to attach as scene notes. "" clears it.
navNameNoNavigation label shown in the scene nav bar.
paddingNoScene padding fraction (0–0.5).
weatherNoWeather effect key (e.g. rain, snow, fog, leaves, rainStorm, blizzard). "" = none.
darknessNoDarkness/day-night level: 0 = full daylight, 1 = full night.
gridSizeNoGrid size in pixels.
gridTypeNoFoundry grid type (0 gridless, 1 square, 2+ hex).
playlistNoPlaylist id or exact name to auto-play on scene activation. "" clears it.
gridAlphaNoGrid line opacity 0–1 (e.g. 0.2 for a faint grid).
gridColorNoGrid line color as a hex string, e.g. "#000000".
gridUnitsNoDistance unit label per cell, e.g. "ft" (dnd5e default).
navigationNoWhether the scene appears in the navigation bar.
environmentNoA v12+ scene's full environment{} mood object, carried whole (darknessLevel, globalLight{...}, cycle, base, dark{hue,luminosity}…). Deep-merged, so a partial mood patch layers onto the scene; prefer this over the flat darkness/globalLight knobs when importing or re-mooding a pack scene.
globalLightNoGlobally illuminate the whole scene (turn the lights on).
tokenVisionNoRequire token line-of-sight to see the scene. Turn OFF for overland/illustration maps.
gridDistanceNoReal-world distance per grid cell (dnd5e default 5).
backgroundPathNoData-relative path to a new background/map image.
sceneIdentifierYesScene id or exact name.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description thoroughly discloses behaviors: deep-merges for environment/fog objects, clearing links with empty string, re-stamping flags, and crucially states it never touches placeables or activates the scene, with 'GM-only' permission. Since no annotations exist, the description fully informs the agent of constraints and 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively long but efficiently front-loads the main purpose. It uses a semicolon-separated list and clear sectioning. While every sentence adds value, some parameter details could be more terse. It's not the most concise but justifies its length given complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers many aspects: parameter behaviors, usage constraints, and what it does not do. However, it lacks information about return values (since no output schema is provided) and does not mention possible errors or side effects beyond the constraints. For a tool with 26 parameters and nested objects, the description is mostly complete but falls short on return expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions, but the tool description adds significant extra context beyond the schema—e.g., explaining deep-merge behavior for environment and fog objects, giving usage advice ('prefer this over the flat darkness/globalLight knobs when importing'), and providing examples for flags. This elevates the value well above the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it updates an existing Scene document and enumerates specific capabilities (rename, swap background, toggle navigation, etc.). It also explicitly limits scope ('Scene-document only: never touches placeables...') and distinguishes from create-scene by mentioning parity and deep-merge behaviors. This provides a specific verb+resource+scope, fulfilling the highest clarity.

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 notes 'GM-only' as a constraint but does not explicitly guide when to use this tool over alternatives like create-scene or for non-document operations. It mentions what it does not do (placeables, activation) but lacks 'when-to-use' vs 'when-not-to-use' guidance for sibling tools. The guidance is adequate but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-soundsA

Edit one or more placed AMBIENT SOUNDS by id (from list-sounds): MOVE via x/y, resize the audible radius, swap the track (path), change volume/repeat/walls/easing, the darkness activation range, or the listener effects. Patches only the fields you pass. Unresolved ids reported, never fatal. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
soundsYesThe sound patches to apply (each targets one id).
sceneIdentifierYesScene id or exact name holding the placeables.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description covers key behaviors: partial updates (patches only passed fields), error handling (unresolved ids reported not fatal), and permission (GM-only). Could add details on concurrency or reversibility but sufficient.

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 well-structured sentence that fronts the core purpose and lists key capabilities without fluff. Every part 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 complex tool with many fields and no output schema, the description explains what can be edited and the patching pattern. It misses details on return values (e.g., confirmation or updated objects), but overall is complete enough for use.

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 100%, baseline 3. The description adds context beyond schema by explaining how fields are used (e.g., 'MOVE via x/y') and the patching behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it edits placed ambient sounds by id, lists specific editable fields (x/y, radius, path, volume, etc.), and distinguishes from sibling tools like create-sounds and delete-sounds.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It specifies using ids from list-sounds, mentions unresolved ids are non-fatal, and that it's GM-only. However, it could be more explicit about when to use this vs other editing tools like update-tiles.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-tilesA

Edit one or more placed TILES by id (from list-tiles). RESIZE via width/height (the tile's on-map size — this is "tile scale"); MOVE via x/y; also rotation, alpha, elevation, sort, texture src/tint/fit/scaleX/scaleY (image zoom within the frame), occlusion, light/weather restrictions, video, hidden, locked. Patches only the fields you pass; unresolved ids are reported, not fatal. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
tilesYesThe tile patches to apply (each targets one id).
sceneIdentifierYesScene id or exact name holding the placeables.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description fully carries burden. It details partial update behavior (patching only passed fields), error handling (unresolved ids reported, not fatal), permissions (GM-only), and clarifies ambiguous terms like width/height vs scaleX/Y. No contradictions.

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?

Description is a single paragraph, front-loaded with purpose. Efficient listing of parameters with inline clarifications. While thorough, it could be slightly more structured (e.g., bullet points) for easier parsing, but remains clear and concise.

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?

No output schema, but description comprehensively covers all relevant aspects: partial updates, error handling, permissions, and parameter groups. For a complex tool with many properties, it provides sufficient context for safe and correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (baseline 3). Description adds value by grouping parameters (RESIZE, MOVE) and explaining that scaleX/Y is image zoom within frame, not tile size. This goes beyond schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it edits placed tiles by id, explicitly mentions the source (list-tiles), and distinguishes from siblings like create-tiles or delete-tiles. Verb 'edit' and resource 'placed TILES' with specific examples provide high clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description implies usage: to update existing tile properties. It mentions partial updates and GM-only restriction, giving clear context. However, it does not explicitly state when not to use it or compare with sibling tools for similar operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-tokenA

Edit one or more PLACED tokens on a scene — a token INSTANCE already dropped on the map, NOT the actor's prototype token (that's update-actor). Resolve the scene by id/exact name (default: the ACTIVE scene), then target tokens by tokenIds and/or actorIds (an actor id OR exact name — updates EVERY placed copy of that actor, e.g. all "Dead Guard" corpses). Patch any of: rotation (or randomizeRotation for an independent per-token angle), scale (token art size — sets texture.scaleX/scaleY together), elevation, hidden, lockRotation, x/y, name, displayName (nameplate visibility), displayBars (resource-bar visibility), bar1/bar2 (which resource each bar tracks — the health bar is bar1 = attributes.hp), ring (dynamic token ring on/off), and hp (this token's CURRENT hit points, per-token on its own delta — so two copies of one actor can be wounded differently, which update-actor cannot do) — all matched tokens update in one batch. GOTCHA handled for you: a token whose actor had auto-rotate OFF carries lockRotation:true, which HIDES a set rotation — so when you rotate a locked token the tool auto-unlocks it and warns. Reports matched/updated counts + any unresolved ids. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoNew token X in absolute canvas pixels.
yNoNew token Y in absolute canvas pixels.
hpNoSet THIS placed token's hit points on its own actor — PER-TOKEN, so two copies of the same actor can differ (e.g. a band wounded to different HP). Writes system.attributes.hp.* on the token's (unlinked) delta, NOT the prototype/statblock — the right home for a token's current HP. For a linked token it writes the shared base actor. Only the sub-fields you pass change; 0 is valid (a downed creature).
bar1NoBar 1 resource attribute path (health bar is "attributes.hp"); "" clears it.
bar2NoBar 2 resource attribute path (e.g. "attributes.hp"); "" clears it.
nameNoRename the placed token (its nameplate).
ringNoDynamic token ring: false = plain token (the house default), true = ring on. Sets ring.enabled on the placed token.
scaleNoToken ART scale (sets texture.scaleX and scaleY together). 1 = normal, 1.5 = 50% larger.
hiddenNoHide (true) or reveal (false) the token from players.
actorIdsNoActor id OR exact actor name — updates ALL placed copies of each (e.g. every "Dead Guard" token on the map). Combined (union) with tokenIds.
rotationNoFacing in degrees (0–359), applied to every matched token.
tokenIdsNoPlaced-token ids to update (from list-tokens). Combined (union) with actorIds.
elevationNoToken elevation in grid-distance units (e.g. feet).
displayBarsNoResource (health) bar visibility, same modes as displayName: none | control | owner-hover | hover | owner | always.
displayNameNoNameplate visibility: none | control (only when selected) | owner-hover | hover | owner (always, to owners) | always (always, to everyone).
lockRotationNoLock the token art from rotating. NOTE: lockRotation:true HIDES any `rotation` you set, so when you rotate a locked token and omit this, the tool AUTO-UNLOCKS it (and warns) so the angle is visible.
sceneIdentifierNoScene id or exact name holding the token(s). Omit to use the ACTIVE scene.
randomizeRotationNoGive each matched token its OWN random angle (0–359) instead of one shared `rotation` — e.g. to strew corpses naturally. Overrides `rotation` when true.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behaviors: updates are applied to matched tokens, lockRotation auto-unlock, per-token HP delta, and return values (counts + unresolved ids). It could mention error handling for missing scenes, but overall it's transparent.

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 long paragraph covering many details. While it front-loads the key distinction, it could be better organized with bullet points or sections for readability. It is not overly verbose given 18 parameters, but structure could improve.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and 18 parameters, the description covers return values (matched/updated counts, unresolved ids), lockRotation gotcha, and per-token vs shared state. It lacks some edge cases (e.g., empty token/actor lists) but is largely complete for an update tool.

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 100%, so baseline is 3. The description adds extra context beyond schema, like explaining bar1/bar2 health bar path, hp per-token delta, and lockRotation interaction. This adds meaningful value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool edits placed tokens, not prototype tokens, explicitly distinguishing from update-actor. It lists editable fields and targeting methods, making the purpose very specific and clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly says when to use (placed tokens) and when not (prototype tokens -> update-actor). It provides guidance on scene resolution, targeting by ids/names, and batch updates. It also includes a 'GOTCHA' about lockRotation, helping the agent use the tool correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-wallsA

Edit one or more WALLS by id (from list-walls): flip a door to secret (door:2), open/close/LOCK it (ds: 0/1/2), change what it blocks (move/light/sight/sound: 0 none / 10 limited / 20 normal / 30 proximity / 40 distance), set one-way dir, doorSound, or proximity thresholds; MOVE by giving the full segment (all of x0,y0,x1,y1 or c:[4] — a wall never half-moves). Patches only the fields you pass; an off-enum value skips that patch with a warning. GM-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
wallsYesThe wall patches to apply (each targets one id).
sceneIdentifierYesScene id or exact name holding the placeables.

TDQS

A4.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 burden. It discloses 'Patches only the fields you pass; an off-enum value skips that patch with a warning' and mentions GM-only, but omits return format, rate limits, or authentication details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured with examples and parenthetical codes. Every sentence is informative, though it could be slightly more concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complex parameter array and lack of output schema, the description covers nearly all input details and patch behavior. Missing only a brief mention of what the tool returns (if anything).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds significant meaning beyond schema descriptions (e.g., 'door:2' for secret, 'ds: 0/1/2', 'a wall never half-moves'), making parameter usage much clearer.

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 'Edit one or more WALLS by id' and lists specific properties like door, ds, move/light/sight/sound, clearly distinguishing from create-walls, delete-walls, and list-walls among siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit context like 'GM-only' and explains patch behavior, but does not explicitly state when not to use it or compare to siblings beyond the initial verb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload-assetA

Plane B (file channel, write). Upload an ASSET (map/token/audio/handout image) from a local file to the Foundry data area over WebDAV and return its public HTTPS URL, so large media bypass the bridge entirely. Missing parent folders are created automatically. ASSETS ONLY — never world-DB files (LevelDB writes while the server runs corrupt it; such paths are refused). PRIVACY: anything under Data/ is served publicly with no auth — do not upload anything sensitive. Requires MOLTEN_WEBDAV_PASSWORD.

ParametersJSON Schema
NameRequiredDescriptionDefault
localPathYesAbsolute path to the local file to upload.
overwriteNoAllow overwriting an existing file at remotePath.
remotePathYesDestination path RELATIVE TO the Foundry `Data/` root, e.g. "worlds/your-world/assets/maps/cavern.webp". Must be an asset location, never inside a world's `data/` (LevelDB) directory.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavior: WebDAV channel, automatic folder creation, public serving of uploaded files, and the risk of LevelDB corruption for disallowed paths. Also mentions required password.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise but packed with essential information. Front-loaded with channel and purpose. Every sentence adds value, though could be slightly more streamlined.

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?

Comprehensive for a tool with no annotations and no output schema. Covers purpose, usage, behavioral traits, and parameter details. Could mention failure handling, but return value is stated.

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 100%, but description adds value by clarifying remotePath is relative to Data/ root, providing an example, and warning against world data/ directories. Overwrite default is noted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb (Upload), resource (ASSET), and channel (WebDAV). Explicitly states it returns public HTTPS URL. Distinguishes itself from siblings like upload-asset-tree and download-asset by specifying it's for single asset uploads and not for world-DB files.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides context (Plane B, file channel, write), conditions (ASSETS ONLY, not world-DB), privacy warning, and password requirement. Does not explicitly name alternative tools but implies alternatives for non-asset files.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload-asset-treeA

Plane B (file channel, write). Recursively upload a LOCAL directory tree of ASSETS to the Foundry data area over WebDAV, preserving the subtree layout (each file → remoteRoot/), creating parent folders as needed. Use for BULK imports — a scene pack's images, a tiles folder — instead of one upload-asset per file. Skips files that already exist unless overwrite:true; optional includeExt filter (e.g. ["webp"]). ASSETS ONLY — refuses live world-DB paths. Reports uploaded/skipped/error counts. PRIVACY: anything under Data/ is served publicly with no auth. Requires MOLTEN_WEBDAV_PASSWORD.

ParametersJSON Schema
NameRequiredDescriptionDefault
localRootYesAbsolute path to a LOCAL directory; every file under it (recursive) is uploaded.
overwriteNoOverwrite existing files (otherwise an already-present file is skipped).
includeExtNoOnly upload files with these extensions (no dot, case-insensitive), e.g. ["webp","png","jpg"]. Omit to upload every file.
remoteRootYesDestination directory RELATIVE TO the Foundry `Data/` root, e.g. "worlds/your-world/assets/tom-cartos/<id>/tiles". Each local file lands at remoteRoot/<path-relative-to-localRoot>. Never inside a world's `data/` (LevelDB) dir.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses key behaviors: creating parent folders, skipping existing files unless overwrite, optional includeExt filter, reporting counts, and privacy implications. It does not mention rate limits or performance but covers essential traits.

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 somewhat lengthy but well-structured with bullet points. Every sentence provides important information. The opening label 'Plane B (file channel, write)' is jargon but still informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 parameters, no output schema, and no annotations, the description is fairly complete. It covers privacy, required environment variable, behavior on existing files, and error reporting. Could explicitly mention the return format, but the report counts are implied.

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 100%, so baseline is 3. The description adds context beyond the schema: explains localRoot as absolute path, remoteRoot relative to Data/, the resulting file layout, and clarifies includeExt filtering. This adds value for correct usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: recursively uploading a local directory tree of assets to Foundry data area, preserving subtree layout. It distinguishes from siblings (e.g., upload-asset) by emphasizing bulk imports and recursive upload.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit use cases (bulk imports, scene pack images, tiles folder) and a warning against world-DB paths. However, it lacks explicit when-not-to-use guidance and direct comparison to alternatives beyond 'instead of one upload-asset per file'.

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. 54 tool updatesv1.3.0
    • Changedadd-item1 field changed
      • changedInput schema / properties / actorIdentifier / description
        Previous value: -"Target actor (name or id) to attach the item to (partial match). Omit to create a reusable world Item in the Items sidebar instead."New value: +"Target actor (name or id) to attach the item to (partial match). Also accepts a placed TOKEN id (from list-tokens) — the item is then added to that token INSTANCE's own delta, not the base actor. Omit to create a reusable world Item in the Items sidebar instead."
    • Changedapply-condition1 field changed
      • changedInput schema / properties / actorIdentifier / description
        Previous value: -"Name or id of the actor (partial name match supported)."New value: +"Name or id of the actor (partial name match supported). Also accepts a placed TOKEN id (from list-tokens) — the condition then applies to that token INSTANCE only, not the base actor."
    • Changedauthor-npc1 field changed
      • addedInput schema / properties / disposition
        Added value: +{
        +  "enum": [
        +    "hostile",
        +    "neutral",
        +    "friendly",
        +    "secret"
        +  ],
        +  "type": "string"
        +}
    • Changedcreate-actor-from-compendium1 field changed
      • addedInput schema / properties / disposition
        Added value: +{
        +  "description": "Prototype-token disposition for the created copies — YOUR judgment call (shared authoring-policy house token rules): 'neutral' for civilians/townsfolk/bystanders, 'friendly' for allies, 'hostile' for enemies. Omit to default by source type (copied PC pregen → friendly, copied monster → hostile).",
        +  "enum": [
        +    "friendly",
        +    "neutral",
        +    "hostile",
        +    "secret"
        +  ],
        +  "type": "string"
        +}
    • Addedcreate-drawings
    • Addedcreate-lights
    • Addedcreate-region
    • Changedcreate-scene7 fields changed
      • changedInput schema / properties / environment / description
        Previous value: -"A v12+ scene's full environment{} mood object, carried whole (darknessLevel, globalLight{...}, cycle, base, dark{hue,luminosity}…). Prefer this over the flat darkness/globalLight knobs when importing a pack so the authored day/night mood round-trips."New value: +"A v12+ scene's full environment{} mood object, carried whole (darknessLevel, globalLight{...}, cycle, base, dark{hue,luminosity}…). Deep-merged, so a partial mood patch layers onto the scene; prefer this over the flat darkness/globalLight knobs when importing or re-mooding a pack scene."
      • changedInput schema / properties / flags / description
        Previous value: -"Document flags to stamp on the new scene, namespaced by scope — e.g. {\"tom-cartos-import\":{sourceModule,sourceId}} for import provenance/dedup. Merged verbatim."New value: +"Document flags namespaced by scope — e.g. {\"tom-cartos-import\":{sourceModule,sourceId}} for import provenance/dedup. Deep-merged over any existing flags (re-stampable on update)."
      • changedInput schema / properties / fog / description
        Previous value: -"A v12+ scene's full fog{} object (exploration, overlay, colors), carried whole."New value: +"A v12+ scene's full fog{} object (exploration, overlay, colors), carried whole (deep-merged)."
      • addedInput schema / properties / folder
        Added value: +{
        +  "description": "Scene folder id or exact name to place the scene in (created if absent).",
        +  "type": "string"
        +}
      • changedInput schema / properties / initial / description
        Previous value: -"The saved initial camera view {x,y,scale} to restore on scene load."New value: +"The saved initial camera view {x,y,scale} to restore on scene load (deep-merged)."
      • addedInput schema / properties / navigation
        Added value: +{
        +  "description": "Whether the scene appears in the player navigation bar. Set false for a DM-only scene (keeps it off the nav bar). Omit for Foundry default.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / regions / items / properties / behaviors / description
        Previous value: -"Region behaviors carried whole — incl. teleportToken whose system.destination (Scene.<id>.Region.<id>) is rewritten post-import by remap-teleporters."New value: +"Region behaviors carried whole — incl. teleportToken whose system.destinations[] (each Scene.<id>.Region.<id>) are rewritten post-import by remap-teleporters."
    • Addedcreate-sounds
    • Addedcreate-teleporter
    • Addedcreate-tiles
    • Addedcreate-walls
    • Addeddelete-drawings
    • Addeddelete-journal-page
    • Addeddelete-lights
    • Changeddelete-note1 field changed
      • changedInput schema / properties / noteIds / description
        Previous value: -"Note ids to delete (from create-scene-notes)."New value: +"Note ids to delete (from create-scene-notes/list-notes)."
    • Addeddelete-region
    • Addeddelete-sounds
    • Addeddelete-tiles
    • Addeddelete-tokens
    • Addeddelete-walls
    • Changedget-actor1 field changed
      • changedInput schema / properties / identifier / description
        Previous value: -"Character name or ID to look up"New value: +"Character name or ID to look up. Also accepts a placed TOKEN id (from list-tokens) to read that token INSTANCE's live state — an unlinked NPC token can differ from its base actor."
    • Addedget-rolltable
    • Changedimport-item1 field changed
      • changedInput schema / properties / actorIdentifier / description
        Previous value: -"Target actor (name or id, partial match) to copy the item onto. Omit to copy into the world Items sidebar instead."New value: +"Target actor (name or id, partial match) to copy the item onto. Also accepts a placed TOKEN id (from list-tokens) — the copy then lands on that token INSTANCE's own delta, not the base actor. Omit to copy into the world Items sidebar instead."
    • Addedlist-drawings
    • Addedlist-folders
    • Addedlist-lights
    • Addedlist-notes
    • Addedlist-regions
    • Addedlist-sounds
    • Addedlist-tiles
    • Addedlist-tokens
    • Addedlist-walls
    • Changedmanage-activity1 field changed
      • changedInput schema / properties / actorIdentifier / description
        Previous value: -"If set, the item is embedded on this actor; omit to target a world (sidebar) item."New value: +"If set, the item is embedded on this actor; omit to target a world (sidebar) item. Also accepts a placed TOKEN id (from list-tokens) — the activity edit then lands on that token INSTANCE's own delta, not the base actor."
    • Changedmanage-effect1 field changed
      • changedInput schema / properties / actorIdentifier / description
        Previous value: -"Actor that owns the effects (or owns the item when itemIdentifier is also set)."New value: +"Actor that owns the effects (or owns the item when itemIdentifier is also set). Also accepts a placed TOKEN id (from list-tokens) — the effect then lands on that token INSTANCE's own delta, not the base actor."
    • Addedplace-tokens
    • Changedremove-from-actor1 field changed
      • changedInput schema / properties / actorIdentifier / description
        Previous value: -"Actor name or ID to remove the items from."New value: +"Actor name or ID to remove the items from. Also accepts a placed TOKEN id (from list-tokens) — the removal then hits that token INSTANCE's own delta, not the base actor."
    • Changedset-actor-art2 fields changed
      • changedInput schema / properties / imagePath / description
        Previous value: -"Data-relative path to the image."New value: +"Data-relative path to the PORTRAIT image. Must be a STILL image — actor.img rejects video. Also used for the token texture unless tokenImagePath is given."
      • addedInput schema / properties / tokenImagePath
        Added value: +{
        +  "description": "Optional Data-relative path for the prototype TOKEN texture, which (unlike the portrait) accepts an animated VIDEO (.webm/.mp4/.m4v/.ogg) — e.g. a JB2A effect. Defaults to imagePath.",
        +  "type": "string"
        +}
    • Addedset-journal-page-visibility
    • Changedupdate-actor7 fields changed
      • changedInput schema / properties / actorIdentifier / description
        Previous value: -"Name or id of the actor to edit (partial name match supported)."New value: +"Name or id of the actor to edit (partial name match supported). Also accepts a placed TOKEN id (from list-tokens): the edit then lands on that token INSTANCE's own actor (its delta), not the base actor — the way to edit ONE placed copy of an unlinked NPC, since base-actor edits never reach tokens already on a scene."
      • addedInput schema / properties / disposition
        Added value: +{
        +  "description": "Prototype-token disposition (friend vs foe). Set 'friendly' to mark an NPC an ally (e.g. a freed captive), 'hostile' for an enemy, 'neutral' for a bystander.",
        +  "enum": [
        +    "hostile",
        +    "neutral",
        +    "friendly",
        +    "secret"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / tokenAutoRotate
        Added value: +{
        +  "description": "Prototype-token auto-rotation: true = the token turns to face its movement (lockRotation off — the house default; new creations already get it), false = fixed facing.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / tokenName
        Added value: +{
        +  "description": "Prototype-token nameplate, decoupled from the actor name — e.g. actor \"Morgash the Gravemaker\" whose dropped tokens read just \"Morgash\". A plain `name` rename keeps the two in lockstep; pass tokenName (alone or alongside name) to make them differ. Placed tokens keep their own name — retitle those with update-token.",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / tokenRing
        Added value: +{
        +  "description": "Prototype-token dynamic ring: false = plain token (the house default; new creations already get it), true = re-enable the ring (its colors/subject config is preserved).",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / tokenRotation
        Added value: +{
        +  "description": "Prototype-token facing in degrees (0–359) — the default angle a dropped token faces. Same behavior as update-token for placed tokens: a lock-rotation prototype (tokenAutoRotate false) HIDES the angle, so setting a rotation without also setting tokenAutoRotate AUTO-UNLOCKS rotation (and warns) so the facing shows. (elevation / hidden / x / y are PLACEMENT-only — a prototype has no such fields; set those on a dropped token with update-token.)",
        +  "type": "number"
        +}
      • addedInput schema / properties / tokenScale
        Added value: +{
        +  "description": "Prototype-token art scale — the \"Scale (Ratio)\" slider on the token Appearance tab (sets texture.scaleX and scaleY together). 1 = normal, 1.5 = 50% larger, 2 = double. Scales only the art within the token's grid footprint; it does NOT change the token's size (grid spaces).",
        +  "exclusiveMinimum": 0,
        +  "type": "number"
        +}
    • Changedupdate-actor-item1 field changed
      • changedInput schema / properties / actorIdentifier / description
        Previous value: -"Name or id of the actor that owns the item (partial name match supported)."New value: +"Name or id of the actor that owns the item (partial name match supported). Also accepts a placed TOKEN id (from list-tokens): the edit then lands on that token INSTANCE's own delta, not the base actor — the way to re-gear ONE placed copy of an unlinked NPC (base-actor edits never reach tokens already on a scene)."
    • Addedupdate-drawings
    • Addedupdate-folder
    • Changedupdate-journal1 field changed
      • addedInput schema / properties / playerVisible
        Added value: +{
        +  "description": "Set the written page visibility: true = players can OBSERVE it (a handout), false = GM-only. Omit to leave it unchanged. To flip an EXISTING page without rewriting its content, use set-journal-page-visibility.",
        +  "type": "boolean"
        +}
    • Addedupdate-lights
    • Changedupdate-note1 field changed
      • changedInput schema / properties / noteId / description
        Previous value: -"The Note id to update (from create-scene-notes)."New value: +"The Note id to update (from create-scene-notes/list-notes)."
    • Changedupdate-quest-journal1 field changed
      • addedInput schema / properties / playerVisible
        Added value: +{
        +  "description": "Set the target/new page visibility: true = players can OBSERVE it (a handout), false = GM-only. Omit to leave visibility unchanged (a new page then inherits GM-only).",
        +  "type": "boolean"
        +}
    • Addedupdate-region
    • Changedupdate-rolltable2 fields changed
      • addedInput schema / properties / editResults
        Added value: +{
        +  "description": "TARGETED per-entry edits — fix one entry's text/link/weight/range in place; every other entry (ranges, weights, @UUID item links) is left byte-identical. Mutually exclusive with `results`.",
        +  "items": {
        +    "properties": {
        +      "name": {
        +        "description": "Display label for the `uuid` link (default: the resolved document name).",
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "range": {
        +        "description": "New explicit [low, high] roll range for THIS entry only — other entries are untouched (an introduced overlap/gap is warned, not blocked).",
        +        "prefixItems": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "integer"
        +          }
        +        ],
        +        "type": "array"
        +      },
        +      "resultId": {
        +        "description": "Target the entry by TableResult id (from get-rolltable) — always unambiguous.",
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "roll": {
        +        "description": "Target the entry whose roll range covers this die face (e.g. 7 = \"entry 07\" on a d12). Errors if no entry — or more than one — covers it. Provide roll OR resultId.",
        +        "type": "integer"
        +      },
        +      "text": {
        +        "description": "REPLACE this entry's text (HTML / @UUID enrichers allowed — the raw current text is in get-rolltable; copy it and change only what you need). Combine with `uuid` via {{link}}.",
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "uuid": {
        +        "description": "Re-link the entry to a REAL item by compendium/world UUID (premium-book only, SRD refused) — rendered as a clickable @UUID link, alone or into a {{link}} placeholder in `text`.",
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "weight": {
        +        "description": "New relative weight for this entry.",
        +        "exclusiveMinimum": 0,
        +        "type": "integer"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedInput schema / properties / results / description
        Previous value: -"If provided, replaces ALL existing results."New value: +"DESTRUCTIVE: replaces ALL existing results (deleted + recreated with auto-assigned ranges). To change one entry, use editResults instead."
    • Changedupdate-scene4 fields changed
      • addedInput schema / properties / environment
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "A v12+ scene's full environment{} mood object, carried whole (darknessLevel, globalLight{...}, cycle, base, dark{hue,luminosity}…). Deep-merged, so a partial mood patch layers onto the scene; prefer this over the flat darkness/globalLight knobs when importing or re-mooding a pack scene.",
        +  "properties": {
        +    "cycle": {
        +      "type": "boolean"
        +    },
        +    "darknessLevel": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "globalLight": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "enabled": {
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / flags
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Document flags namespaced by scope — e.g. {\"tom-cartos-import\":{sourceModule,sourceId}} for import provenance/dedup. Deep-merged over any existing flags (re-stampable on update).",
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / fog
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "A v12+ scene's full fog{} object (exploration, overlay, colors), carried whole (deep-merged).",
        +  "properties": {
        +    "exploration": {
        +      "type": "boolean"
        +    },
        +    "overlay": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / initial
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "The saved initial camera view {x,y,scale} to restore on scene load (deep-merged).",
        +  "properties": {
        +    "scale": {
        +      "type": "number"
        +    },
        +    "x": {
        +      "type": "number"
        +    },
        +    "y": {
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
    • Addedupdate-sounds
    • Addedupdate-tiles
    • Addedupdate-token
    • Addedupdate-walls
  2. 95 tool updatesv1.2.2
    • First observedadd-feature
    • First observedadd-item
    • First observedadd-journal-image
    • First observedapply-condition
    • First observedasset-info
    • First observedasset-url
    • First observedauthor-npc
    • First observedbulk-delete
    • First observedcontent-audit
    • First observedcopy-asset
    • First observedcreate-actor-from-compendium
    • First observedcreate-asset-folder
    • First observedcreate-cards
    • First observedcreate-folder
    • First observedcreate-item
    • First observedcreate-journal
    • First observedcreate-pc
    • First observedcreate-pc-from-prefab
    • First observedcreate-playlist
    • First observedcreate-quest-journal
    • First observedcreate-rolltable
    • First observedcreate-scene
    • First observedcreate-scene-notes
    • First observeddelete-actor
    • First observeddelete-asset
    • First observeddelete-cards
    • First observeddelete-chat-messages
    • First observeddelete-folder
    • First observeddelete-item
    • First observeddelete-journal
    • First observeddelete-note
    • First observeddelete-playlist
    • First observeddelete-rolltable
    • First observeddelete-scene
    • First observeddownload-asset
    • First observedexport-chat-log
    • First observedfind-asset-references
    • First observedget-actor
    • First observedget-actor-entity
    • First observedget-compendium-entry
    • First observedget-current-scene
    • First observedget-item
    • First observedget-scene-dimensions
    • First observedget-world-info
    • First observedimport-cards
    • First observedimport-item
    • First observedimport-rolltable
    • First observedinspect-pc-advancement
    • First observedlevel-up-pc
    • First observedlink-quest-to-npc
    • First observedlist-actor-ownership
    • First observedlist-actors
    • First observedlist-assets
    • First observedlist-cards
    • First observedlist-chat-messages
    • First observedlist-compendium-packs
    • First observedlist-items
    • First observedlist-journals
    • First observedlist-playlists
    • First observedlist-rolltables
    • First observedlist-scenes
    • First observedmanage-activity
    • First observedmanage-effect
    • First observedmove-asset
    • First observedmove-documents
    • First observedparse-ddb-character
    • First observedpost-item-card
    • First observedread-pack
    • First observedrelink-asset
    • First observedremap-teleporters
    • First observedremove-from-actor
    • First observedrequest-roll
    • First observedroll-on-table
    • First observedscreenshot-scene
    • First observedsearch-actor-contents
    • First observedsearch-compendium
    • First observedsearch-compendium-creatures
    • First observedsearch-compendium-items
    • First observedsearch-compendium-spells
    • First observedsearch-journals
    • First observedsend-chat-message
    • First observedset-actor-art
    • First observedset-actor-ownership
    • First observedset-user-avatar
    • First observedupdate-actor
    • First observedupdate-actor-item
    • First observedupdate-item
    • First observedupdate-journal
    • First observedupdate-note
    • First observedupdate-playlist
    • First observedupdate-quest-journal
    • First observedupdate-rolltable
    • First observedupdate-scene
    • First observedupload-asset
    • First observedupload-asset-tree

TDQS

A3.5/5.0

Scored across 130 tools

Disambiguation3/5

Most CRUD families are clearly separated, and many descriptions explicitly steer agents (e.g. prefer import-item over add-item). However, there are several near-overlapping families—add-item/create-item/import-item, get-actor/get-actor-entity/search-actor-contents, asset-info/asset-url, and the multiple PC/NPC creation tools—that create real selection ambiguity despite helpful descriptions.

Naming Consistency4/5

The set overwhelmingly follows a consistent verb_noun pattern (create/list/update/delete/get/search/set) with no camelCase/snake_case mixing. Minor singular/plural inconsistencies like update-token vs delete-tokens and list-notes vs update-note, plus the overloaded use of 'item' for both world Items and actor gear, prevent a perfect score.

Tool Count1/5

At 130 tools, this far exceeds the 50+ extreme threshold and is the dominant coherence problem. Even though Foundry VTT is a broad domain, an agent cannot reasonably hold this many tools in context, and many per-placeable CRUD families could be consolidated without losing capability.

Completeness4/5

The surface covers nearly the full authoring lifecycle: actors, items, journals, scenes, placeables, assets, playlists, rolltables, cards, chat, folders, ownership, and compendium import. Minor gaps such as no playlist-track management, no update/draw/shuffle for cards, and no direct editing of region behaviors keep it from a 5.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    A
    maintenance
    Connects Claude Desktop to Foundry VTT for AI-powered campaign management, enabling natural language interaction with game data including quest creation, character management, compendium searches, and dice rolling. Provides 20 MCP tools for seamless integration between Claude and your tabletop RPG sessions.
    69
    -
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Integrates with FoundryVTT tabletop gaming sessions, allowing AI assistants to query game data, roll dice, generate content (NPCs, loot, encounters), manage combat, and provide tactical suggestions through natural language.
    11 npm
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Connects AI assistants to Dungeons & Dragons 5e game information via the Model Context Protocol, enabling queries for spells, monsters, equipment, and more.
    48
    MIT