Skip to main content
Glama

Ninjo's Foundry MCP

Ninjo's Foundry MCP lets an AI assistant that speaks the Model Context Protocol (MCP), such as Claude Desktop, Claude Code or Cursor, work with your Foundry VTT world. Ask it to read and write journals, build scenes, search compendiums, manage actors, tokens, combat, chat, roll tables, playlists and more. It works only as far as the Gamemaster allows.

How it works

It has two parts that you install separately:

  • The Foundry module ninjos-foundry-mcp runs in the Gamemaster's browser. It connects to the server on the same computer and carries out every request inside the world, after checking the permissions described below. Only a Gamemaster connects.

  • The PC server runs on the Gamemaster's computer. Your MCP client starts it; all clients share one background process, which talks to the module over a local WebSocket on port 31415. Nothing is reachable from other computers.

The module and the server are updated independently. A server and a module one version apart still work together.

Related MCP server: foundry-cli

Installation

  1. Module: in Foundry under "Add-on Modules", install "Ninjo's Foundry MCP" and enable it in your world.

  2. Server: download ninjos-foundry-mcp-server-<version>-win32-x64.zip from the releases page, unpack it and double click setup.cmd. No Node.js and no administrator rights are needed.

  3. Restart Claude Desktop, open your world as Gamemaster and ask: "Which world is open in Foundry?"

Updating from 14.2609.3 or older: the module update alone is not enough, set up the server on your PC anew with the new server package as in step 2; a notice in Foundry explains this after the update.

Setup takes over an installation from the previous installer in place: same folder, same entry, your settings stay. Details, Claude Code, other clients, updating, uninstalling and troubleshooting: docs/INSTALLATION.en.md (German: docs/INSTALLATION.md).

Permissions

Every change goes through one check in the module, whichever tool asks for it:

  • "Allow Write Operations" is the master switch. Off means the assistant can only read.

  • A permission level per document kind (scenes, playlists, journals, roll tables, actors, folders, compendiums): read only, create and change, or create, change and delete. The default is create and change.

  • Deleting is off by default for every kind, because it is the one change that cannot be undone. Turn it on per kind if you want it. Items, macros, card stacks, chat messages and combat encounters have no level yet: they can be created and changed while the switch is on, and deleting them is refused.

  • Running macros is off by default. Destructive tools can additionally require a one-time confirmation with a dry run first ("Confirm destructive tools").

  • Every change is logged. list-changes shows the log, undo-change reverts an entry or a whole call where that is possible.

Supported systems

  • Foundry VTT 13 and 14 (verified on 14).

  • Game systems: the core tools (journals, scenes, compendiums, folders, playlists, roll tables, canvas, combat, chat, files) work in every system. System knowledge comes from adapters for D&D 5e, Pathfinder Second Edition, Das Schwarze Auge 5, Warhammer Fantasy Roleplay 4e, the Cosmere RPG and Traveller. Without an adapter a tool that needs one says so.

  • Server: Windows 10 and 11. A macOS bundle is not published yet.

  • MCP clients: Claude Desktop (including the Store edition), Claude Code, Cursor and any client that starts MCP servers through command and args.

  • Browser: Foundry must run in a browser on the same computer as the server.

Tools of other modules

Other Foundry modules can offer their own tools through this module. The interface is described in docs/EXTENSION-TOOLS.md.

Development

Node 24 or later.

npm ci
npm run check                # typecheck, language files, tests
npm run build                # server to build/, module scripts and languages to module/
npm run build:test-module    # module copy for a manual test deployment, see below
node installer/build.mjs --no-zip

npm run build:test-module writes dist/test-module/ninjos-foundry-mcp/ without the manifest and download fields and with a -test.<time> version suffix, so Foundry never replaces a test deployment with the release from the package listing.

Tests never use the ports 31414 to 31416, so they do not disturb a running installation.

License

Not open source. Free to use, also for paid games, but not to redistribute, copy into other projects or sell without permission. See LICENSE (English and German, the German version applies). Third-party material and its licences are listed there. The Ninjo logo is excluded from any licence.

Versions before 14.2609.4 were released under the MIT License and stay under it. Version 14.2609.4 is a rewrite and contains none of the code of the project those versions were forked from.

Available Tools

152 tools
actor-refresh-from-sourceRefresh actor items from their sourceA
DestructiveIdempotent

Items on an actor are copies. When their compendium was translated or corrected later, the copies keep the old text. This pulls name, image and description again from each item's source, and never touches mechanics: levels, uses, prepared spells, quantity, equipment and attunement stay. Items without a resolvable source are listed and left alone. Always run dryRun first.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoOnly report what would change, without writing (default false). Run this first.
fieldsNoFields to refresh. Default name, description and img. advancement is only refreshed when named: it takes the level progression definitions from the source and keeps the choices already made.
namePacksNoItem compendium ids to find items by name when they have no stored source, in order.
preferPacksNoItem compendium ids that win over the stored source when they hold an entry with the same id, as translation modules do. The new source is saved on the item.
actorIdentifierYesId or exact name of the actor.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already mark destructiveHint=true and idempotentHint=true, and the description adds meaningful detail beyond that: it lists exactly which fields are overwritten, states that mechanics remain untouched, and explains that items without a resolvable source are listed and left alone. This is strong behavioral disclosure for a mutating tool.

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

Conciseness5/5

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

The description is compact and well-ordered: it starts with the problem, states what the tool changes, explicitly lists what it never changes, addresses unresolvable sources, and ends with the key safety instruction. Every sentence contributes useful information.

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 mutating tool with five parameters and no output schema, the description provides the essential mental model: stale copy problem, exact mutation scope, safety boundary, and dryRun workflow. The parameter schema covers the remaining details, so nothing important is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents all parameters. The description reinforces the dryRun-first behavior and the default fields but does not add substantive parameter semantics beyond what the schema provides, so the baseline of 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource: refresh actor items from their source. It clarifies exactly what is pulled (name, image, description) and explicitly excludes mechanics such as levels, uses, and quantity, making it distinct from generic update tools like update-document or manage-actors.

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 for when this is appropriate: after a compendium has been translated or corrected and actors still contain stale copies. It gives an explicit safety instruction to run dryRun first, though it does not name alternative tools or state 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.

actor-set-tokenSet the token image of an actorA
DestructiveIdempotent

Set an actor's prototype token image, and optionally its portrait, its token name and the dynamic token ring. With ring true the token image also becomes the subject inside the ring, and without ringColor the ring is coloured by disposition: hostile red, neutral blue, friendly green. The actor is found by id or exact name.

ParametersJSON Schema
NameRequiredDescriptionDefault
ringNotrue switches the dynamic token ring on, false switches it off. Omit to leave it as it is.
tokenImgYesPath of the token image.
ringColorNoRing colour as hex, e.g. "#e72124". Omit to colour by disposition.
ringScaleNoScale of the image inside the ring. Usually omit it and give the image a transparent margin instead.
tokenNameNoName of the prototype token. Without it, placed tokens keep the compendium name; usually pass the actor's name.
portraitImgNoPath of the portrait image, when it should change too.
actorIdentifierYesId or exact name of the actor.

TDQS

A4/5.0
Behavior3/5

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

The description adds useful behavioral context beyond annotations, such as how the ring behaves when enabled and how ringColor defaults to disposition-based coloring. However, despite destructiveHint=true, it does not explain the overwriting or potentially destructive consequences of changing the prototype token image.

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 with no filler, front-loading the main purpose and then adding only relevant optional behaviors. Each clause adds actionable information without repetition of schema details.

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 7-parameter mutation tool with no output schema, the description covers the target resource, identifier resolution, optional fields, and ring semantics. It is slightly incomplete regarding what happens on failure or whether existing placed tokens are affected, but these are minor gaps given the schema covers every parameter.

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 genuine value by explaining behavior not fully explicit in the schema, such as ring color defaulting by disposition, ringScale being usually unnecessary, and the actor being found by id or exact name.

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

Purpose5/5

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

The description states a specific action on a specific resource: 'Set an actor's prototype token image' and lists the optional modifications. The word 'prototype' and 'actor' clearly distinguish this from sibling token tools like update-token, which operate on placed scene tokens.

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

Usage Guidelines3/5

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

The description implies when to use it: when an actor's prototype token image needs to be set, optionally with portrait, token name, or ring changes. It does not explicitly contrast with alternatives such as update-token or manage-actors, nor does it state 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.

add-combatantsAdd combatantsA
Idempotent

Add tokens to a combat encounter as combatants. Tokens come from the encounter's scene (for an encounter without scene: sceneIdentifier or the active scene). One unknown id stops everything; tokens already in the encounter are named and not added twice.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoOnly report what would happen and whether it is permitted; change nothing
combatIdNoId of the combat encounter, as list-combats shows it. Without it the active encounter is used.
tokenIdsYesIds of the tokens to add
sceneIdentifierNoScene of the tokens, only for an encounter without scene

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate idempotentHint=true, but the description adds concrete behavioral details: an unknown id stops the entire operation and tokens already in the encounter are not added twice. This goes beyond the structured annotations and helps an agent predict failure and duplicate handling.

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

Conciseness5/5

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

Two dense sentences deliver the core action, token source, failure behavior, and duplicate prevention without wasted words. The most important information is front-loaded in the first sentence.

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 key operational constraints: token source, unknown-id atomicity, and duplicate handling. With a 100%-covered schema and idempotentHint annotation, the remaining details are adequately supported, though it stops short of describing the exact success output or post-add state.

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 parameters are already well documented. The description reinforces the role of sceneIdentifier and the source of tokens, but it does not add meaning 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 uses a specific verb ('Add') and resource ('tokens to a combat encounter as combatants'), making the tool's function immediately clear. It also implicitly differentiates from siblings like remove-combatants and update-combatant by focusing exclusively on addition.

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 explains the token source (encounter scene, sceneIdentifier, or active scene), which provides useful context for when the tool can be used. However, it does not explicitly state when to prefer this tool over alternatives or mention exclusions, so usage guidance is implied rather than direct.

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

advance-world-timeAdvance the world timeA

Move the world time forward (or back with a negative number) by a number of seconds, through Foundry, so effects, calendars and modules react as at the table. 3600 is an hour and 86400 a day in the default calendar. The new time is read back. Needs the write switch.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoOnly check and report what would happen; nothing is written. Needs no write permission.
secondsYesSeconds to add; negative moves back. At most ten years either way.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only mark this as non-read-only, non-idempotent, and non-destructive, so the description carries the burden of explaining side effects. It does so well: the operation writes world time, triggers effects/calendars/modules, requires the write switch, and reads back the new time. This adds meaningful behavioral context beyond the 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 compact sentences front-load the core operation and immediately clarify the negative-number case, followed by useful magnitude examples and the permission requirement. No filler or repetition of schema content.

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 two-parameter mutation tool with no output schema, the description covers the operation, direction, scale, system reaction, permission requirement, and read-back behavior. It could mention the ten-year limit, but that is already in the schema, so the description is sufficiently 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 the baseline is 3. The description goes beyond the schema by giving concrete duration equivalents ('3600 is an hour and 86400 a day') and reiterating the direction semantics for negative numbers, which helps an agent reason about valid 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 names a specific verb and resource: 'Move the world time forward' by seconds through Foundry. It distinguishes itself from read-only time tools (e.g., get-world-time) by emphasizing that effects, calendars, and modules react, and it clarifies that negative numbers move time backward.

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

Usage Guidelines4/5

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

The description gives clear context for when to use this tool: when the GM wants the world clock to advance in-game so systems react as at the table. It does not explicitly name alternative tools or state when not to use it, but the context is strong 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.

assign-actor-ownershipAssign actor ownershipA
Idempotent

Give players a permission level on actors, e.g. make John the owner of Aragorn, or give the party observer access to all friendly NPCs of the active scene. Actors and players are matched exactly (id or name, case does not matter), never by part of a name; Gamemasters are never changed. More than one actor or player needs confirmBulkOperation. Each pair is read back and reported, unchanged pairs included.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorIdentifierYesId of the actor, its exact name (case does not matter) or the id of one of its tokens; or the phrase "all friendly NPCs" (friendly tokens of the active scene that no player owns) or "party characters" (actors a player owns)
permissionLevelYesLevel to give: NONE hides the actor, LIMITED shows little, OBSERVER shows everything, OWNER allows control
playerIdentifierYesThe player by id or exact name, the name of an actor a player owns, or "party" for every connected player. Gamemasters are never changed
confirmBulkOperationNoMust be true when more than one actor or more than one player is affected

TDQS

A4.7/5.0
Behavior5/5

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

The description adds substantial behavior beyond the annotations: exact match semantics and no partial-name matching, GM exclusion, bulk confirmation requirement, and read-back reporting of each pair including unchanged ones. This goes well beyond the idempotentHint/readOnlyHint/destructiveHint annotations and paints a clear operational picture.

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 compact sentences front-load the purpose and example, then state constraints and reporting behavior. Every sentence carries necessary information with no filler or repetition, making it easy to parse quickly.

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 permission-assignment tool with no output schema, the description covers all critical aspects: valid input patterns, edge cases (exact match, GM exclusion), bulk handling, and the fact that results are reported back including unchanged pairs. An agent can confidently invoke it without missing key constraints.

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, but the description adds meaningful semantic layers: it explains matching rules, the 'all friendly NPCs' and 'party' special values are contextualized with examples, and it clarifies that the operation is non-destructive and idempotent in effect. This is more than the schema alone 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 opens with 'Give players a permission level on actors', a specific verb and resource, and reinforces it with concrete examples (John as owner of Aragorn, party observer access to friendly NPCs). This clearly distinguishes it from sibling tools like list-actor-ownership and remove-actor-ownership, even without naming them.

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 and invocation rules: exact matching (id or name, case-insensitive, never partial), Gamemasters are never changed, and confirmBulkOperation is required when affecting multiple actors/players. It lacks explicit alternatives or when-not-to-use guidance, but the context is strong enough for correct selection.

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

browse-filesBrowse filesA
Read-onlyIdempotent

List folders and files in one folder of Foundry's data storage (source data, default) or of Foundry's own public files (source public). Paths are relative, such as "worlds//maps". Up to 500 entries each.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoFolder to list; empty for the top
sourceNodata (default) or public
extensionsNoOnly files with these extensions, such as ["png", "webp"]

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description goes beyond annotations by disclosing the 500-entry cap and the relative-path convention, which are operational details an agent needs to avoid surprises. It does not contradict any annotation.

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

Conciseness5/5

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

Three compact sentences, each contributing a distinct fact: scope, path format, and result cap. The verb and resource are front-loaded, and there is 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 read-only list tool with no required parameters and a well-annotated safety profile, the description covers purpose, path semantics, source values, and the entry limit. There is no output schema, but 'List folders and files' adequately conveys the return. Minor omissions like sorting or error behavior are acceptable for this 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 description coverage is 100%, so the baseline is 3. The description adds meaningful value with the illustrative relative path example 'worlds/<world>/maps' and clarifies the default source, giving practical semantics beyond the schema's terse parameter entries.

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'), names the resource (Foundry's data storage and public files), and scopes to 'one folder'. It clearly distinguishes from sibling file tools like create-directory, upload-file, and copy-file by focusing on read-only listing and explicitly naming the two source options.

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 through its functional definition and gives context like relative paths and the 500-entry limit, but it never explicitly states when to use this tool versus alternatives. There is no exclusionary guidance or 'use X instead' routing, so an agent must infer applicability.

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

change-combat-turnChange combat turnA

Move a running combat encounter: next-turn, previous-turn, next-round, previous-round, or set-turn to a combatant. Moves use Foundry's own rules (for example skipping defeated combatants when the tracker is set so). The answer gives round and turn before and after.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesThe move
tokenIdNoFor set-turn: or the id of its token
combatIdNoId of the combat encounter, as list-combats shows it. Without it the active encounter is used.
combatantIdNoFor set-turn: the combatant who acts

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/destructive hints, and the description adds useful behavioral context: moves follow Foundry's own defeated-combatant handling and the response reports round/turn before and after. This elaborates on side effects without contradicting 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?

Three short sentences carry purpose, behavior, and output expectations without repetition. The action list is front-loaded, and 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?

Despite no output schema, the description covers prerequisites (running encounter), behavior, and return info (round/turn before and after). It leaves tokenId vs combatantId and combatId defaulting to the schema, which is appropriate; minor error/validation behavior is not described.

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 reiterates that set-turn targets a combatant, but the tokenId/combatantId semantics and combatId default are already fully described in the input 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 names a clear verb and resource: 'Move a running combat encounter', then exhaustively lists the five supported moves. This differentiates it from combat-query tools like list-combats/get-combat and from start/end-combat siblings.

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

Usage Guidelines3/5

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

It implies the tool applies to running encounters and that movement follows Foundry's own rules, but it never explicitly says when to choose it over sibling combat tools or when not to use it. No alternative tools or exclusions are named.

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

check-wall-collisionDo walls block a line?A
Read-onlyIdempotent

Test whether walls block the straight line between two tokens or points, for movement, sight, light or sound, and list the walls on it. Doors that are open do not block. Uses Foundry's own test when the canvas shows the scene, otherwise the stored walls.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesEnd: { tokenId } (id or name of a token), or { x, y } in pixels
fromYesStart: { tokenId } (id or name of a token), or { x, y } in pixels
typeNoWhat is blocked; default move
sceneIdentifierNoScene id or name; default the scene that is active for everyone

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already mark it readOnly, idempotent, and non-destructive. The description adds valuable behavioral detail beyond that: open doors do not block, and it explains the fallback between Foundry's live canvas test and stored walls. This is exactly the kind of context a caller needs.

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, tightly written, with the core action and result front-loaded. Every clause adds information: the purpose, the use cases, the wall list, the door exception, and the fallback behavior. No 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?

For a read-only check with fully documented parameters despite no output schema, the description covers the key behavioral nuances: open doors, the canvas vs stored-wall fallback, and that a list of blocking walls is returned. It stops short of specifying the exact return shape, but this is a minor gap given the simple check semantics.

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 input schema already documents all four parameters including tokenId vs x/y and the type enum. The description reinforces the 'tokens or points' concept but does not add meaningful parameter-level detail 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 opens with a specific verb ('Test whether walls block') and a precise resource ('the straight line between two tokens or points'), then enumerates the use cases (movement, sight, light, sound) and the additional output ('list the walls on it'). This clearly distinguishes it from related tools like find-path or measure-distance.

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 names the intended use cases ('for movement, sight, light or sound'), providing clear context for when to use it. However, it does not explicitly contrast this with sibling tools such as find-path or measure-distance, nor does it state 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.

control-playlistControl playlist playbackA

Play or stop a playlist or one of its tracks, or switch its mode, through Foundry's own playback, so every connected browser follows. Playlist and track are found by id or exact name (case ignored when unique), never by a part of the name. The state is read back: a playlist without tracks or in mode "disabled" is an error, not a silent success. Browsers may only play sound after someone clicked on the page once. Needs the playlist permission "create and change".

ParametersJSON Schema
NameRequiredDescriptionDefault
soundNoTrack for play-sound and stop-sound, required there: id or name. Not for other commands.
commandYesplay the playlist as its mode says, stop all its tracks, cycle-mode to the next mode, or play-sound and stop-sound for one track.
playlistYesId or name of the playlist.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already mark this as non-read-only live playback control, but the description adds valuable behavior beyond them: it explicitly calls out error conditions (empty playlist or disabled mode), the one-time browser click requirement for audio, and the required permission. This goes well beyond what annotations convey.

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 tightly packed sentences cover action, lookup semantics, error behavior, browser restrictions, and permissions without a single wasted word. The most important usage facts are front-loaded before the edge-case 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 three-parameter tool with no output schema, this description is unusually complete: it explains the synchronous playback effect, identifier resolution, failure cases, browser autoplay limitation, and authorization requirement. An agent has enough context to call it correctly without additional investigation.

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?

Even though the schema has full descriptions for all three parameters, the tool description enriches them significantly: it explains exact name matching with case insensitivity when unique, forbids partial-name matches, and clarifies that 'sound' is required for track-specific commands. This materially improves 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 opens with a specific verb and resource scope: 'Play or stop a playlist or one of its tracks, or switch its mode'. It also clarifies the mechanism ('through Foundry's own playback') and clearly distinguishes this from management or scene-music siblings by focusing on live, synced playback control.

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

Usage Guidelines4/5

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

The description gives clear context for when to use the tool: whenever you want Foundry's playback controls to affect all connected browsers. It does not explicitly name alternatives or exclusion cases, but the synced-playback framing and command semantics make the intended usage clear without being misleading.

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

copy-fileCopy a fileA
DestructiveIdempotent

Copy a file (at most 50 MiB) inside Foundry's data storage into an existing folder. The original stays: Foundry cannot delete files. To move files: find-file-references on the old path, copy-file, then world-rewrite-paths (dryRun first), then find-missing-files. Needs the write switch.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesThe target folder; it must exist
fromYesThe file to copy, such as "worlds/<world>/old/map.webp"
nameNoNew file name; default the same name
dryRunNoOnly check and report what would happen; nothing is written. Needs no write permission.
overwriteNoReplace a file of the same name in the target folder

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, and idempotentHint=true. The description adds important context: the original file is preserved; actually, it says 'The original stays: Foundry cannot delete files.' It also clarifies the write switch requirement and the dryRun behavior (needs no write permission, implying the actual copy does). However, it does not explicitly state that the operation is destructive (overwrites) or that it is idempotent, but the annotations cover those.

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

Conciseness5/5

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

The description is concise and well-structured. It front-loads the core action and constraints, then provides a practical moving workflow, all in a few sentences with no wasted words. It efficiently packs 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?

Given that there is no output schema, the description does not explain return values, but that is acceptable for a copy operation. It covers key prerequisites (existing folder, write switch), constraints (size limit, no deletion), and the moving workflow. It does not mention the overwrite behavior in detail, but the schema covers that. Overall, it is fairly 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 description coverage is 100%, so the schema already documents all parameters. The description does not add significant detail beyond the schema, but it clarifies the 'to' folder must exist and the 'name' default. The description reinforces the dryRun purpose but adds little new meaning, so baseline 3 is appropriate.

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

Purpose4/5

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

The description states a clear verb ('Copy'), a resource ('a file inside Foundry's data storage'), and a destination ('existing folder'), with an explicit size limit. It distinguishes itself from file-moving alternatives by noting it cannot delete files, but does not directly name a sibling tool for copying (though file movement tools are implied).

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 direction on when to use this tool versus moving files: it states the tool cannot delete files and outlines a multi-step procedure (find-file-references, copy-file, world-rewrite-paths, find-missing-files) for moving. It also mentions the write switch requirement, but does not explicitly say when NOT to use it (e.g., if only moving is needed).

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

create-actor-from-compendiumCreate actors from a compendiumA

Copy one actor entry of a compendium into the world, once per name, into the folder "Foundry MCP Creatures", and optionally place the copies as tokens in the active scene. Find packId and itemId with search-compendium first. At most 10 copies (and not more than the setting "maxActorsPerRequest"). The copy keeps a link to its entry, never its id; a remote token image is dropped so Foundry uses its default. Everything that could refuse, including the scene permission for addToScene, is checked before the first actor is created. The answer lists every actor with its real name, the placed tokens and every problem.

ParametersJSON Schema
NameRequiredDescriptionDefault
namesYesName of each new actor, in order
itemIdYesId of the entry inside that compendium, as search-compendium or list-compendium-entries return it
packIdYesId of the actor compendium, e.g. "dnd5e.monsters"
quantityNoHow many copies; the number of names when left out. Missing names become the first name with a number
placementNoWhere the tokens go, used with addToScene
addToSceneNoAlso place the new actors as tokens in the active scene

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only indicate readOnlyHint=false, destructiveHint=false, offering no safety or behavioral detail. The description compensates fully by disclosing limits (10 copies, maxActorsPerRequest), the link behavior (keeps a link, never its id), image handling (remote token image dropped), preflight checks (everything that could refuse is checked), and response content (lists actors, tokens, and problems). This is rich, non-obvious behavioral context beyond the annotations.

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 efficient and front-loaded, starting with the core action before moving to prerequisites, constraints, and behaviors. It contains no tautology or filler; every sentence adds a distinct piece of information. It is slightly longer than strictly necessary, but the density justifies the length, so it earns a 4 rather than a 5.

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 has 6 parameters, nested objects, and no output schema, making it relatively complex. The description covers the preflight checks, limits, and a summary of the response format ('lists every actor with its real name, the placed tokens and every problem'). It doesn't detail the exact response structure, but given no output schema, this is a reasonable level of completeness. It could mention possible error types more explicitly, but the overall context is well covered.

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 every parameter already has a clear description in the schema. The description adds minimal extra parameter-specific meaning; it reiterates the limit and mentions the folder, but the schema already covers quantity semantics and placement options. Consequently, the description meets the baseline of 3 for high schema coverage without adding substantial new parameter insight.

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

Purpose5/5

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

The description states a specific verb ('Copy'), a precise resource ('one actor entry of a compendium'), and the target ('into the world, into the folder Foundry MCP Creatures'). It also mentions optional token placement, which clearly distinguishes it from sibling tools like dnd5e-add-features-from-compendium that copy features, not actors. 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 instructs users to find packId and itemId with search-compendium first, which is a clear prerequisite. It also defines limits (at most 10 copies, maxActorsPerRequest) and explains when placement occurs (optionally with addToScene). It doesn't explicitly name alternative tools to exclude, but the clear scope and prerequisite offer solid usage guidance.

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

create-campaign-dashboardCreate a campaign dashboardA

Create a journal that gives an overview of a campaign in several parts: progress, current part, location and quest giver, and for each part its levels, description and a status toggle. Clicking a toggle in Foundry cycles not started, in progress, completed, skipped and saves it on the journal; figures, current part and lock markers follow the saved status whenever the page is shown. A part is locked until the one before it is completed or skipped. The journal is visible to Gamemasters only, named after the campaign and placed in a journal folder with the campaign title (created when missing). Texts are written in the language of the Gamemaster's client.

ParametersJSON Schema
NameRequiredDescriptionDefault
templateYesStructure of the campaign. "custom" requires customParts; the other templates bring fixed parts and refuse customParts.
customPartsNoThe parts of a campaign with template "custom", in order. At least one.
campaignTitleYesTitle of the campaign, e.g. "The Whisperstone Conspiracy".
defaultLocationNoMain location or setting of the campaign, shown in the overview (optional).
defaultQuestGiverNoName of the figure who gives the party its quests, shown in the overview (optional).
campaignDescriptionYesShort description of the theme and scope of the campaign.

TDQS

A4.4/5.0
Behavior5/5

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

The description goes well beyond the sparse annotations by disclosing many behavioral traits: status toggles cycle through four states and persist, figures/current part/lock markers react to saved status, parts lock until predecessors are completed/skipped, journal is GM-only, folder is auto-created if missing, and text follows the GM's client language. These details add substantial context beyond readOnlyHint and destructiveHint.

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

Conciseness5/5

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

The description is information-dense and front-loaded with the core purpose. Each of its five sentences contributes distinct value: contents, toggle behavior, locking rules, folder/visibility, and localization. There is no filler or repetition of schema details.

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

Completeness4/5

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

Given the tool's complexity and the absence of an output schema, the description is largely complete: it explains the journal's contents, dynamic status behavior, locking, permissions, folder creation, and localization. A minor gap is that it never states what the function returns (e.g., journal ID), but for calling and creating the dashboard, the essential 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?

The input schema has 100% description coverage for all six parameters, so the baseline is 3. The tool description adds narrative context about how the journal uses campaign data (e.g., location, quest giver, parts), but it does not add parameter-specific meaning or constraints beyond what the schema already states. It does not need to repeat the schema.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Create a journal that gives an overview of a campaign.' It then enumerates the journal's contents (progress, current part, location, quest giver, per-part levels/description/status toggles), which clearly distinguishes it from sibling tools like create-quest-journal. The resource and behavior are 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 makes the tool's context clear: it is for creating a campaign-wide overview journal with status tracking, lock progression, and GM-only visibility. It does not explicitly name alternatives or state when not to use it, but the campaign focus and journal structure implicitly separate it from quest journal and combat tools.

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

create-canvas-elementsCreate walls, lights and other canvas elementsA

Create up to 200 elements of one type on a scene in one call, as Foundry data. Walls: c [x0, y0, x1, y1], door none, door or secret, doorState closed, open or locked, move none or normal, sight, light and sound none, limited, normal, proximity or distance, dir both, left or right. Lights: x, y, config { dim, bright, color, angle }. Sounds: x, y, radius, path. Tiles: x, y, width, height, texture { src }. Drawings: x, y, shape { type, width, height, points }. Regions: name, shapes, behaviors. One bad entry creates nothing. Needs the level "change" for scenes.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoOnly check and report what would happen, including a refusal; change nothing
elementsYesThe elements, 1 to 200, each an object of Foundry fields
elementTypeYesType of all elements in this call
sceneIdentifierNoScene id or name; default the scene that is active for everyone

TDQS

A4.4/5.0
Behavior4/5

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

The description attributes a key non-schema detail: 'One bad entry creates nothing' (atomicity), which prevents partial writes. It also adds a permission gate and the 200-element batch limit. Annotations only carry false hints, so this add value.

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 text is dense but organized as a list separated by semicolons, with the most useful batch/permission facts at the end. All content is functional and none is redundant with the schema.

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 multi-type batch-creation tool, this is enough: per-type structures, atomicity, permission requirement, and size cap. Lack of output details is minor because no output schema exists and the rule is not to duplicate output definitions; still missing are return-value or confirmation semantics.

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 substantially enriches the schema. For each elementType it gives precise field layouts (e.g., Wall: c [x0,y0,x1,y1], door state options, light/sound fields, tile texture src, drawing shape). This goes far beyond the schema's generic 'Foundry fields' placeholder.

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

Purpose5/5

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

The description states a specific verb and resource: create canvas elements, up to 200, on a scene, and lists the six element types. It clearly stands apart from sibling update-canvas-elements, delete-canvas-elements, and list-canvas-elements.

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

Usage Guidelines4/5

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

It gives batch size, one-type-per-call, and permission prerequisites ('Needs the level change for scenes'), plus an atomic failure mode. It does not explicitly spell out 'use update for existing elements' but the naming makes it obvious.

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

create-card-deckCreate a card deckA

Create a card deck from a list of cards (or an empty hand or pile to deal into). Each card has a name and optionally text, image, suit and value. Read back with the cards in the given order.

ParametersJSON Schema
NameRequiredDescriptionDefault
imgNoImage of the stack
nameYesName of the stack
typeNodeck (default), hand or pile
cardsNoThe cards, at most 1000; a deck needs at least one
backImgNoBack image for every card
folderPathNoFolder for the stack; nested levels separated by "/" are created
descriptionNoDescription of the stack

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate non-read-only, non-idempotent, and non-destructive behavior, so the description's burden is lower. It adds useful behavioral details: cards preserve order when read back, and empty hand or pile is permitted. This goes beyond the schema's property descriptions.

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 wasted words. The core purpose is front-loaded, and the ordering guarantee is placed at the end without excess detail. 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 creation tool with fully documented parameters and clear annotations, the description covers the essential behavioral nuance (ordering, empty stacks). It does not describe return values, but without an output schema that is not a significant gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds context about card structure and ordering, but it does not add meaning for name, type, folderPath, backImg, or description beyond what the schema already documents.

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 action ('Create a card deck') and resource, and immediately clarifies that it can also produce an empty hand or pile. This distinguishes it from sibling stack tools like get-card-stack or delete-card-stack without requiring the agent to inspect each schema.

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

Usage Guidelines4/5

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

The phrase 'or an empty hand or pile to deal into' explains when this tool is appropriate for creating non-deck stack types. It does not explicitly name alternative tools for reading, shuffling, or deleting stacks, but the context signals are clear enough for an agent to select this tool.

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

create-combatCreate combat encounterA

Create a combat encounter on a scene (the active scene by default) and optionally add tokens as combatants. It does not start the encounter; start-combat does. Tokens are named by id only.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoOnly report what would happen and whether it is permitted; change nothing
activateNoMake it the active encounter (default true)
tokenIdsNoIds of tokens on that scene to add as combatants
unlinkedNoCreate an encounter without a scene; tokenIds and sceneIdentifier are not allowed then
sceneIdentifierNoScene of the encounter, by id or name. Default: the scene active for everyone

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and idempotentHint false, so the mutation nature is already implicit in the annotations; the description adds valuable behavioral context. It explicitly states the encounter is not started automatically and that tokens are specified by id only, which goes beyond the schema and annotations. It doesn't mention permissions or failure cases, but the added context is meaningful.

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 with no filler. The main action and default behavior are front-loaded, followed by the key exclusion, and the token-specific constraint. 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 no output schema exists, the description covers the essential operational behavior well: creation, default scene, optional token list, and the start-combat separation. It doesn't hint at return value details, which the agent may need to later reference the created encounter, but the core invocation context 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 description coverage is 100%, so the baseline of 3 applies. The description repeats the scene default and token id idea, but these are already in the sceneIdentifier and tokenIds schema descriptions. It adds no new parameter-level semantics beyond what the 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?

States a specific verb and resource: creates a combat encounter on a scene. It also clarifies scope with details like the active-scene default and optional token combatants, and distinguishes itself from start-combat in the next sentence. The description clearly separates creating an encounter from starting the encounter.

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 main condition of use: creating a combat encounter on a scene, with the active scene as default. It names the key alternative alternative explicitly: "It does not start the encounter; start-combat does." The token handling note also gives practical guidance for how to provide tokens.

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

create-compendiumCreate compendiumA

Create a new world compendium, for example to archive a finished chapter of a campaign. Choose the document type it will hold. Needs the compendium permission on "create and change".

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesDocument type it will hold: Actor, Item, Scene, JournalEntry, RollTable, Playlist, Macro, Cards or Adventure
labelYesName shown in Foundry, for instance "Chapter One: The Sunken Keep"

TDQS

A4.3/5.0
Behavior4/5

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

Annotations indicate this is a write operation (readOnlyHint: false). The description adds the crucial permission requirement ('create and change') and specifies that it creates a world compendium, providing useful behavioral context beyond the structured 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?

Three concise, front-loaded sentences: action+example, parameter guidance, and permission requirement. Every sentence adds value with 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?

For a simple 2-parameter creation tool with no output schema, the description covers the purpose, parameter usage, and a critical prerequisite. No additional information is needed for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100% with both 'type' and 'label' fully explained. The description adds minimal extra value—only echoing the type choice and providing an example for label that is already in the schema. Baseline 3 is appropriate since the schema carries the semantic load.

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 'Create a new world compendium' with a concrete example ('archive a finished chapter'). It also specifies the parameter purpose ('Choose the document type it will hold'), making the tool's function unambiguous and distinct from sister tools like delete-compendium.

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 a clear use case ('to archive a finished chapter of a campaign') and a prerequisite permission ('Needs the compendium permission on create and change'). It doesn't explicitly contrast with alternative compendium tools, but the example and action make the intended scenario evident.

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

create-directoryCreate a folderA
Idempotent

Create a folder in Foundry's data storage, with any missing folders above it. Never inside modules, systems or another world. An existing folder is left as it is. Needs the write switch.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesThe folder to create, such as "worlds/<world>/handouts"
dryRunNoOnly check and report what would happen; nothing is written. Needs no write permission.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description discloses meaningful behavior: missing parent folders are created, existing folders are left as-is, and write permission is required. The 'existing folder is left as it is' detail aligns with idempotentHint=true and no contradiction exists.

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 tightly written sentences, each carrying necessary information: the core action, parent-folder behavior, location constraints, idempotency, and permission requirement. No filler or 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 simple two-parameter tool with no output schema, the description plus annotations cover purpose, path semantics, permissions, idempotency, and safety. An agent has enough to invoke it correctly without missing critical 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 description coverage is 100%, so the schema already documents both parameters. The description adds value by explaining that the path creates missing parent folders and that dryRun performs no write, though much of the parameter semantics already lives 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 states a specific verb and resource: 'Create a folder in Foundry's data storage', with additional scoping such as creating missing parent folders. This clearly distinguishes it from sibling operations like folder-rename and folder-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?

It provides clear usage context: creates missing parents, leaves existing folders untouched, and requires the write switch. Location restrictions are explicit ('Never inside modules, systems or another world'), though it does not explicitly name alternative tools for similar file operations.

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

create-documentCreate a document of any typeA

Generic fallback: create one document of any type in the world, or inside another document with parentUuid (a page in a journal, an item on an actor, a wall on a scene). data holds the fields as nested objects, as describe-document-type shows them. The permission settings apply as for the specialised tools; ids, ownership, _stats and the flags of this module cannot be given. The answer is read back from Foundry. Use dryRun first. Prefer journal-create, journal-add-page, create-scene, manage-actors, manage-world-items, create-macro and create-roll-table where they fit. Chat messages are sent only with send-chat-message; settings, users and compendiums are not written here.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesFields of the new document as nested objects, e.g. { "name": "Goblin", "type": "npc" }
dryRunNoOnly check and preview; nothing is written. Recommended before the real call
parentUuidNouuid of the document that holds an embedded one, e.g. "Actor.abc" for its items, "Scene.abc" for its walls
documentTypeYesFoundry document name, e.g. "Actor", "JournalEntryPage", "Combat", "Wall"; with id when no uuid is given

TDQS

A4.6/5.0
Behavior4/5

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

Annotations are all false, so the description must carry the behavioral burden. It adds valuable context: the created document is read back from Foundry, certain fields (ids, ownership, _stats, module flags) cannot be set, and permission behavior matches specialized tools. It does not explicitly state that it writes to the world, but that is implied. No contradiction with 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?

The description is dense but every sentence serves a purpose: purpose, data shape, permission/constraints, dryRun advice, tool routing, and exclusions. It is front-loaded with the 'Generic fallback' label and proceeds logically. No wasted words for the amount of information 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 generic creation tool with no output schema, this description is fairly complete: it covers what it does, how to use it, constraints, and what it returns (read back from Foundry). It could add a note on error handling or how to discover valid document types, but the pointer to describe-document-type mitigates that. Overall, an agent can confidently invoke it.

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 parameters are documented, but the description adds important semantics: how data should be structured (nested objects, 'as describe-document-type shows'), what parentUuid is for (with examples), and the restriction on fields like ids and _stats. This goes beyond the schema's bare descriptions, making it more actionable.

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

Purpose5/5

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

The description states a specific action ('create one document') on a broad but well-defined resource ('any type in the world, or inside another document with parentUuid'). It clearly positions itself as a generic fallback, explicitly naming specialized siblings it should not replace. This distinguishes it from the many other creation tools like journal-create or create-scene.

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 guidance: it says to prefer a list of specialized tools 'where they fit', and clarifies what is not handled here ('Chat messages are sent only with send-chat-message; settings, users and compendiums are not written here'). It also recommends using dryRun first, which is a specific precondition. This gives an agent clear decision criteria.

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

create-dsa5-character-from-archetypeCreate a DSA5 character from an archetypeA

[DSA5 only] Create one hero as a copy of an archetype from list-dsa5-archetypes, with a new name and optional details (age, biography, gender, eye and hair color, height, weight, species, culture, profession) written onto the hero and read back. The hero goes into the folder "Foundry MCP Actors", without a token in a scene, linked to its archetype. A name another actor has already (ignoring case) is refused. addToWorld false only prepares the hero and shows it, without writing anything.

ParametersJSON Schema
NameRequiredDescriptionDefault
addToWorldNofalse only prepares the hero and shows it, without writing anything
archetypeIdYesId of the archetype inside that compendium
characterNameYesName of the new hero; a name another actor has (ignoring case) is refused
customizationNoDetails written onto the hero and read back
archetypePackIdYesId of the compendium that holds the archetype, as list-dsa5-archetypes shows it

TDQS

A4.4/5.0
Behavior5/5

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

The description richly discloses side effects and behaviors beyond the sparse annotations: the hero lands in 'Foundry MCP Actors', has no token in a scene, remains linked to its archetype, duplicate names are refused, and addToWorld false prevents any write. This far exceeds the annotation's minimal safety hints.

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 dense sentences deliver scope, destination, linking behavior, duplicate handling, and the dry-run flag with no filler. The most important constraints are front-loaded, and every clause 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 tool with a nested customization object and no output schema, the description covers the critical context: source, destination, write behavior, uniqueness rule, and no-token outcome. The only small gap is not specifying the exact return shape, though 'read back' hints at the response.

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 every parameter. The description adds a useful pointer that archetypePackId is shown by list-dsa5-archetypes and restates the addToWorld behavior, but most parameter-level meaning is already 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 a specific verb and resource: 'Create one hero as a copy of an archetype', and identifies the source explicitly via 'list-dsa5-archetypes'. It also distinguishes itself from the related read-only sibling by describing the actual creation behavior, making the tool's role 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 '[DSA5 only]' prefix gives a clear system-scoping condition, and the reference to list-dsa5-archetypes as the required source indicates when this tool is appropriate. It does not explicitly name alternatives or exclusion conditions, but the context is strong enough for an agent to select it correctly.

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

create-macroCreate a macroA

Create a macro. A chat macro holds chat text or a chat command such as /roll 1d20. A script macro holds JavaScript that can do anything a Gamemaster can once someone runs it. Creating runs nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault
imgNoOptional icon path
nameYesName of the macro
typeYes"chat" or "script"
commandYesChat text or JavaScript
folderPathNoFolder for the macro; nested levels separated by "/" are created

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only carry all-false hints, providing no safety or side-effect information. The description adds important behavioral context: 'Creating runs nothing' clarifies that creation has no immediate execution side effect, and it warns that script macros can do anything a Gamemaster can once run. These details go beyond the structured 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?

The description is three sentences with no filler. The opening sentence 'Create a macro' front-loads the core action, followed by the two macro type explanations and a key behavioral note. 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 create tool with no output schema, the description covers the essential behavior (creating a macro without running it), differentiates macro types, and implies the risk of script macros. It does not mention return values or prerequisites like permissions, but those are not critical for an agent to invoke the tool correctly. The core usage context is 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 the baseline is 3. The description adds meaning beyond the schema by defining the 'type' enum values (chat vs. script) with concrete examples like '/roll 1d20' and explaining what each type holds. It does not add detail for name, img, or folderPath, but the schema already covers those adequately.

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

Purpose5/5

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

The description states a specific verb and resource: 'Create a macro.' It further distinguishes itself from sibling tools by explaining the two macro types and explicitly adding 'Creating runs nothing,' which contrasts with execute-macro. This makes the tool's purpose unambiguous and separates it from related operations like list-macros and execute-macro.

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

Usage Guidelines3/5

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

Usage is implied: to create a macro, use this tool. The description does not explicitly name alternatives like execute-macro or list-macros, nor does it state when not to use it. The explanation of chat vs. script macros offers context but no direct routing to sibling tools, so guidance remains implicit.

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

create-quest-journalCreate a quest journalA

Create a quest journal visible to Gamemasters only. Its first page holds the title and description, a background from location, quest giver and key figure, an overview with the given details, rewards and "Status: Active", an adventure hook as read-aloud text, a secret note for the Gamemaster, objectives from the quest type and the given facts, and a section for progress notes. All given values are escaped, so they appear as text. Write richer content yourself into additionalPages, which are stored as sent. Without folderName the journal is created outside any folder. The answer lists the pages with their ids and lengths, not the HTML.

ParametersJSON Schema
NameRequiredDescriptionDefault
npcNameNoName of the key figure of the quest: opponent, ally or target (optional).
rewardsNoThe rewards (optional).
locationNoWhere the quest takes place (optional).
questTypeNoKind of quest (optional). fetch, escort, kill and mystery bring fixed objectives.
difficultyNoDifficulty (optional).
folderNameNoJournal folder at the top level to put the journal in, by exact name; created when missing. Omit for no folder.
questGiverNoName of the figure who gives the quest to the party (optional).
questTitleYesTitle of the quest, also the name of the journal.
additionalPagesNoFurther pages after the quest page, such as a player handout or Gamemaster notes. Their HTML is stored as sent.
questDescriptionYesWhat the quest is about and what it should achieve.

TDQS

A4.7/5.0
Behavior5/5

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

The annotations only carry negative hints (readOnlyHint=false, etc.), so the description carries the full behavioral load. It does well: it discloses GM-only visibility, HTML escaping of given values, that additionalPages are stored as sent, and that the response lists page ids and lengths, not HTML, which is essential because there is no output schema.

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

Conciseness4/5

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

The description is dense and every sentence conveys a meaningful behavior, with no padding. It is, however, long and sentence-like; a structured list or clearer breaks would improve scannability, but not at the cost of necessity.

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 having no output schema and 10 parameters, the description provides a complete mental model: what the journal contains, how optional params affect it, folder behavior, and the response format. This is enough for an agent to call the tool correctly without hunting for additional guidance.

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%, so the baseline is 3, but the description goes well beyond the schema. It explains how parameters are used: values are escaped, the questType drives fixed objectives, folderName governs folder placement, and additionalPages content is stored as sent—all crucial for correct invocation or interpretation.

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

Purpose5/5

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

The description states a specific verb ('Create'), a specific resource ('a quest journal'), and a distinguishing scope ('visible to Gamemasters only'). It also enumerates the journal's internal content, which differentiates it from generic siblings like journal-create and update-quest-journal.

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 makes it clear when this tool is appropriate: when you need to create a quest journal with the canonical first page, optional folder handling, and additional pages. It does not explicitly call out alternatives or say when not to use this tool versus update-quest-journal or journal-create, 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-roll-tableCreate a roll tableA

Create a roll table from a list of text results. Ranges are assigned consecutively when omitted (first entry 1, second 2, and so on) and the dice formula is derived from the highest range, so a six-entry table becomes 1d6 by itself. Overlapping ranges are refused; gaps, and numbers the formula can roll without an entry, are reported as warnings.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the new table
formulaNoDice formula such as "1d6"; derived from the highest range when left out
resultsYesThe entries in order
folderPathNoFolder for the table; nested levels separated by "/" are created
descriptionNoOptional description shown with the table

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the flat annotations, the description discloses significant runtime behavior: omitted ranges are assigned consecutively, the dice formula is derived from the highest range, overlapping ranges are refused, and gaps or unrollable numbers produce warnings. This gives an agent a reliable model of what will happen on valid and invalid input.

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

Conciseness5/5

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

The description is two focused sentences: the first states the core action and input, the second packs the default range assignment, dice derivation, and validation behavior. Nothing is redundant or extraneous, and the key action is front-loaded.

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

Completeness4/5

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

For a creation tool with five parameters, the description plus a fully covering schema gives an agent the essential behavior needed to call it correctly. It stops short of complete by not stating what the successful response contains, since there is no output schema, and does not mention any permission prerequisite.

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, but the description adds meaning to `formula` and `results.range` by explaining derivation and validation, e.g., a six-entry table becomes 1d6 and overlapping ranges are refused. It does not add semantically to `weight` or `folderPath`, but those are already documented in the schema.

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

Purpose5/5

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

The description opens with the specific action 'Create' and the specific resource 'a roll table', and narrows the input to 'a list of text results'. This tells an agent exactly what the tool does and distinguishes it from roll-table siblings like draw-roll-table, get-roll-table, and update-roll-table.

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

Usage Guidelines3/5

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

The description implies this tool is for creating new roll tables, but it does not state when to prefer it over update-roll-table, delete-roll-table, or other alternatives. No when-not-to-use guidance or explicit alternative routing is provided.

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

create-sceneCreate sceneA

Create a scene from an image or video already in the Foundry data directory, such as a battlemap or a location picture. Without width and height the file is measured so the grid fits. templateName copies the settings of an existing scene (grid, lighting, level settings) but nothing that lies on its map and never its id. folderPath takes nested paths like "Locations/Harbour" and creates missing folders. journalIdentifier links a journal as the scene journal.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the scene; underscores become spaces
widthNoWidth in pixels instead of the measured one
heightNoHeight in pixels instead of the measured one
navNameNoLabel in the scene navigation. Without it: the name without an SC_ or BM_ prefix, underscores as spaces.
paddingNoPadding around the map; default the template value or 0
activateNoActivate the scene for everyone once it exists
gridSizeNoGrid size in pixels; default the template value or 100
backgroundYesPath of the image or video inside the Foundry data directory, e.g. "Maps/Hafen/SC_Hafen_Nacht.webp"
folderPathNoFolder path, nested with "/", e.g. "Locations/Harbour"
navigationNoShow the scene in the navigation (default false)
templateNameNoId or name of a scene whose settings are copied
journalPageNameNoPage of that journal to open, by id or exact name
journalIdentifierNoJournal linked as the scene journal (shown by Foundry for the scene, unlike a note on the map), by id or name. An empty string removes the link.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false, so the description correctly implies mutation. It adds behavioral context beyond annotations by detailing side effects: templateName copies settings but not map contents or id, folderPath creates missing folders, and journalIdentifier links a journal. However, it doesn't disclose potential side effects like what happens to existing scenes or whether the scene is activated by default (though 'activate' parameter exists). With no output schema, some return behavior is opaque, but the description covers the main behavioral traits.

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

Conciseness5/5

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

The description is concise and front-loaded: the first sentence states the core purpose, followed by short, specific behavior notes for key parameters. Every sentence adds value, covering revealing details about templateName, folderPath, and journalIdentifier without unnecessary verbosity. It's well-structured for an agent to parse quickly.

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 (13 parameters, no output schema, no enums), the description covers many important defaults and behaviors (grid measuring, template copying, folder creation, journal linking). It lacks explicit mention of the return value or confirmation of creation, but the schema and annotations provide basic context. For a complex creation tool, it's nearly complete, with minor gaps around error handling or what happens on invalid paths.

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 for all 13 parameters, each with a clear description. The tool description adds extra meaning by explaining how parameters interact: width/height default to measured values, templateName copies settings but not map/id, folderPath creates missing folders, and journalIdentifier links a journal. This goes beyond the schema's individual descriptions, but the schema already provides strong parameter semantics, so this isn't a full compensation need.

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 that it creates a scene from an image or video in the data directory, with a clear verb and resource. It also explains key behaviors like grid fitting and template copying, which distinguishes it from other scene-related tools (e.g., update-scene, delete-scene). However, it does not explicitly name any sibling tool for contrast, so it doesn't fully differentiate from 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 clear context on when to use this tool—creating a new scene from media files. It implies usage for battlemaps or location pictures and explains how parameters like templateName and folderPath work. It does not explicitly state when NOT to use it or name alternative tools (e.g., for updating scenes), but the purpose is clear enough for an agent to select it correctly.

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

create-scene-notePlace a journal noteA

Place a note on a scene at pixel coordinates that opens a journal, or one page of it, when clicked. Useful to make the places on a town map clickable.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX in scene pixels
yYesY in scene pixels
iconNoIcon path, default "icons/svg/book.svg"
labelNoText shown at the note
iconSizeNoIcon size in pixels, default 40
pageNameNoPage of that journal, by id or exact name
journalNameYesId or name of the journal
sceneIdentifierYesId or name of the scene. A name matches exactly, or in any case when only one scene has it.

TDQS

A3.9/5.0
Behavior3/5

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

With all annotations false and no other safety signals, the description carries the burden of behavioral disclosure. It reveals the core behavior—creating a clickable note that opens a journal/page—but does not mention reversibility, uniqueness, overlap with existing notes, or any side effects beyond placement. This is adequate but not rich.

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

Conciseness5/5

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

Two sentences, zero filler. The first sentence states the action and outcome; the second gives a motivating use case. Information is front-loaded and 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?

The tool has 8 parameters, no output schema, and empty annotations. The description is brief and does not cover prerequisites (e.g., scene and journal must exist), likely failure modes, or how to remove or modify the note. It is sufficient for a simple creation action but leaves room for more guidance given the 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%, so the description does not need to explain parameter syntax. It adds minimal extra meaning beyond the schema—only implying that coordinates are in scene pixels and the note becomes clickable. This matches the baseline for 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 states a specific verb and resource: 'Place a note on a scene at pixel coordinates' and describes the interactive behavior ('opens a journal, or one page of it, when clicked'). It clearly differentiates from sibling tools like journal-create or create-canvas-elements by tying the action to scene coordinates and click behavior.

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

Usage Guidelines4/5

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

The description provides a concrete use case ('make the places on a town map clickable'), which gives clear context for when to use the tool. It does not explicitly name alternatives or exclusions, but the example strongly implies the intended scenario.

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

deal-cardsDeal cardsA

Deal the same number of cards from one stack to each of several hands or piles. Refused before anything moves when too few cards are left. Needs the write switch.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesThe stacks to deal to: ids or exact names
howNoWhich cards: top (default), bottom or random
fromYesDeal from: id or exact name of the card stack
numberNoCards per stack, default 1
chatNotificationNoPost Foundry's chat message about the move (default false)

TDQS

A3.7/5.0
Behavior3/5

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

Annotations provide no hints (all false), so the description carries the full burden. It discloses a key atomicity behavior (refusal before moving anything when insufficient cards) and a permission requirement (write switch), which is valuable. However, it does not describe whether the source stack is modified, what happens to the cards after dealing, or the return value, leaving some behavioral ambiguity. No contradiction with 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?

Three sentences, each adding distinct value: the core action, the failure mode, and the permission prerequisite. The main purpose is front-loaded, and there is zero redundancy or filler. Highly concise and well-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?

For a 5-parameter tool with multiple siblings, the description covers the essential action and one failure condition, but omits details like whether the source stack is depleted, the default behavior (already in schema for 'how' and 'number'), and the return value (no output schema). The schema covers parameters, but the description could be more complete regarding state changes and expected results for an agent deciding to invoke 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 each parameter clearly described (e.g., 'how' enum, 'number' default, 'chatNotification' flag). The description adds no additional per-parameter meaning, which is acceptable given the schema's thoroughness. The baseline of 3 applies as the schema does the heavy lifting and the description does not compensate with 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 states the specific verb 'deal' with a resource ('cards from one stack to each of several hands or piles') and a key constraint ('the same number of cards'), clearly distinguishing it from sibling operations like pass-cards or draw-cards. The added failure condition ('Refused before anything moves when too few cards are left') further clarifies the intended behavior.

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 provides useful context (dealing evenly to multiple stacks) and a prerequisite (write switch), but it does not explicitly compare to alternative card tools such as draw-cards or pass-cards, nor does it state when to prefer this over them. The context is clear but lacks explicit when-not guidance for a tool surrounded by many card-related siblings.

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

delete-canvas-elementsDelete walls, lights and other canvas elementsA
DestructiveIdempotent

Delete up to 200 elements of one type from a scene by id. Every id is checked first. Deleting needs the level "create, change and delete" for scenes, which is off by default; dryRun shows what would go and whether it is allowed.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesIds, 1 to 200
dryRunNoOnly check and report what would happen, including a refusal; change nothing
elementTypeYesType of all elements in this call
sceneIdentifierNoScene id or name; default the scene that is active for everyone

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already carry destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is known. The description adds beyond annotations: the pre-validation behavior ('Every id is checked first'), the auth requirement being off by default, and that dryRun reports both what would be deleted and whether it is allowed. This meaningfully expands on the structured data without contradicting it.

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?

Three short sentences in total, each earning its place: the core action with constraints, the pre-check behavior, and the permission/dry-run caveat. Slightly denser than ideal (the last sentence packs two ideas into one semicolon-joined clause) but still efficient and front-loaded with the most important information.

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

Completeness4/5

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

For a destructive mutation tool with no output schema, this description covers the essential decision factors: scope limits, permission prerequisites, and the dry-run safety option, while the schema documents all parameters. Minor gaps remain (behavior on partially invalid id lists, all-or-nothing vs partial deletion), but an agent has enough to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter (ids, dryRun, elementType, sceneIdentifier) already has meaningful text in the schema. The description reinforces some of that (one type per call, dryRun usage, id limits) but adds only marginal extra semantics beyond what the schema states; the 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 states a specific verb and resource ('Delete up to 200 elements of one type from a scene by id') and adds the key constraints (max 200, single element type). This clearly distinguishes it from siblings like create-canvas-elements, update-canvas-elements, and list-canvas-elements, and the elementType enum confirms tokens are out of scope (handled by delete-tokens).

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 usage context: the 200-element and single-type constraint, the prerequisite permission level ('create, change and delete' for scenes, off by default), and the dryRun preview capability. It does not explicitly name alternatives or exclusions, but the context is sufficient for an agent to decide when to invoke it.

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

delete-card-stackDelete a card stackA
DestructiveIdempotent

Delete a card stack by id. Card stacks have no level of their own in the permission settings yet, so deleting is refused until they get one.

ParametersJSON Schema
NameRequiredDescriptionDefault
stackIdYesId of the stack

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark destructiveHint=true, readOnlyHint=false, and idempotentHint=true. The description adds the useful behavioral fact that deletion will be refused until card stacks get their own permission level, which is not captured by any annotation.

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

Conciseness5/5

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

Two sentences with zero filler: the purpose is front-loaded, and the second sentence adds an important caveat without repetitive or extraneous explanation.

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

Completeness4/5

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

For a one-parameter destructive tool with no output schema, this description covers the action, the identifier, and a key failure mode. It doesn't detail what happens to associated cards after deletion, but the destructiveHint annotation supplies the needed safety framing.

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 describes stackId as 'Id of the stack'. The description adds no additional detail about format, constraints, or valid values, so it meets the baseline for 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?

Description opens with 'Delete a card stack by id', a specific verb and resource, and clearly differentiates deletion from sibling reset-card-stack, shuffle-card-stack, and other card-stack operations.

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 first sentence states the usage action and target precisely. The second adds a concrete precondition (deleting is refused until grant stack permission level), but it doesn't explicitly call out alternatives such as reset-card-stack.

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

delete-chat-messageDelete a chat messageA
DestructiveIdempotent

Delete a chat message written by the Gamemaster the bridge runs as, by id. Refused until the permission settings have a level for chat messages that allows deleting.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageIdYesId of the message

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already supply destructiveHint=true and idempotentHint, and the description adds meaningful behavioral context beyond them: it narrows deletion to messages written by the Gamemaster and flags a permission prerequisite that causes refusal. This helps an agent predict refusal behavior without contradicting the 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 deliver the action, scope, key parameter, and a permission gate with no filler. The most important purpose information is front-loaded, and the permission note earns its place by explaining a likely refusal scenario.

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

Completeness4/5

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

For a single-required-parameter delete operation with destructive annotations, the description is largely complete: what to delete, by what identifier, under what permission condition. There is no output schema, and it does not mention the response shape or not-found behavior, but those are minor for a simple delete operation.

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

Parameters3/5

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

Schema description coverage is 100%: messageId is already documented as 'Id of the message.' The description only reiterates the id requirement via 'by id,' adding no meaningful semantics beyond the schema. This matches the baseline for fully covered parameters.

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

Purpose5/5

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

The description names a specific action ('Delete a chat message'), identifies the exact resource ('written by the Gamemaster the bridge runs as'), and explicitly requires an id. This cleanly separates it from siblings like update-chat-message, send-chat-message, and list-chat-messages.

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 deletion context is clear: the tool is used to delete a specific chat message by id. It also gives a usage-relevant condition by stating that the tool is 'Refused until the permission settings have a level for chat messages that allows deleting.' It does not explicitly name alternatives or when not to use it, but the purpose is unambiguous given siblings.

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

delete-compendiumDelete compendiumA
DestructiveIdempotent

Remove a world compendium and everything in it. This cannot be undone, so it is off by default: the compendium permission has to stand on "create, change and delete". The exact label must be passed as confirmLabel. Compendiums of a module or of the game system cannot be removed this way.

ParametersJSON Schema
NameRequiredDescriptionDefault
packIdYesId of the world compendium to remove
confirmLabelYesIts exact label, so a mistyped id cannot remove the wrong compendium

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already include destructiveHint and idempotentHint, but the description goes further: it discloses irreversibility, the non-default/off-by-default permission, and the exact-label safety guard. These are non-obvious behavioral constraints not captured by annotations alone.

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

Conciseness4/5

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

The description is short, front-loaded with the core destructive purpose, and contains no padding. It slightly duplicates the schema's confirmLabel description, but the repetition serves to emphasize a critical safety prerequisite.

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 tool with no output schema, the description covers all necessary calling context: what is deleted, irreversibility, permission requirements, the label safeguard, and what kinds of compendiums are excluded. An agent has everything needed to invoke it correctly and avoid dangerous mistakes.

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 describes both parameters with 100% coverage, so the baseline is 3. The description adds context about packId referring to a whole world compendium and confirms the label requirement, but mostly reinforces the schema rather than providing new semantic information.

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 'Remove a world compendium and everything in it', specifying the verb and the exact resource. It also distinguishes the tool from siblings like delete-compendium-entries by limiting scope to whole world compendiums and excluding module/system 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 gives clear boundaries: only world compendiums are eligible, and module/system compendiums cannot be removed. It also informs the agent about the permission prerequisite and the required confirmLabel. It does not name a sibling tool like delete-compendium-entries explicitly, which costs a point.

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

delete-compendium-entriesDelete compendium entriesA
DestructiveIdempotent

Remove named entries from a compendium, by id or by exact name. Only what is explicitly named is removed; there is deliberately no "empty this pack". Always run with dryRun first: it reports exactly what would go, what was not found and which names are ambiguous, without touching anything. Names are matched in their exact spelling, never as a part, and an ambiguous name is reported rather than guessed. If the selection covers every entry, confirmLabel is required as well. Needs the compendium permission on "create, change and delete".

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoIds of the entries to remove, as list-compendium-entries shows them
namesNoNames in their exact spelling, instead of ids; a name shared by several entries is reported and kept
dryRunNoOnly report what would be removed and change nothing. Start with this.
packIdYesId of the compendium
confirmLabelNoRequired only when the selection would remove every entry: the exact label of the compendium
unlockIfNeededNoLift a lock for this one operation; it is set again afterwards

TDQS

A4.9/5.0
Behavior5/5

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

The description goes well beyond the annotations. It discloses that only explicitly named entries are removed, that names are matched exactly and never as a part, that ambiguous names are reported rather than guessed, that dryRun changes nothing, and that unlockIfNeeded lifts a lock only for the one operation and sets it again. These are behavioral traits not visible in the annotations or 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?

The description is compact and front-loaded. The first sentence states the core action and selection modes. The second sentence gives the critical safety instruction (dryRun first). Every sentence adds distinct information: no bulk deletion, exact matching, ambiguity handling, confirmLabel condition, and permission requirement. No filler or repetition.

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

Completeness5/5

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

For a destructive tool with 6 parameters and no output schema, the description covers the essential context: what gets removed, how selection works, the safety workflow (dryRun), the edge case (all entries require confirmLabel), the permission requirement, and the lock behavior. An agent has enough to invoke this tool correctly and safely.

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 meaning beyond the schema by explaining the relationship between ids and names (exact spelling, ambiguity handling), the purpose of dryRun ('reports exactly what would go'), and the condition for confirmLabel ('selection covers every entry'). It doesn't add much about unlockIfNeeded beyond the schema, but the overall added value justifies 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 states a specific verb ('Remove'), a specific resource ('named entries from a compendium'), and the two selection modes ('by id or by exact name'). It also distinguishes itself from a generic delete by explicitly noting there is 'deliberately no empty this pack', which separates it from sibling tools like delete-compendium and delete-document.

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 usage guidance: 'Always run with dryRun first' and explains what dryRun reports. It also states when confirmLabel is required ('If the selection covers every entry') and what permission is needed ('compendium permission on create, change and delete'). This is clear when-to-use and how-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-documentDelete a document of any typeA
DestructiveIdempotent

Generic fallback: delete one document of any type, by uuid or by documentType and id. Needs the level "create, change and delete" of its kind, for an embedded document that of the document it belongs to; kinds without a level cannot be deleted. Refused for a folder with contents, a playlist or track a scene is linked to, the active scene and chat messages of others. dryRun shows what would go, embedded documents included. Prefer journal-delete, journal-delete-page, delete-scene, manage-actors, delete-playlist, delete-roll-table and delete-tokens where they fit. Compendium entries are deleted with delete-compendium-entries.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoId of the document, together with documentType
uuidNouuid of the document, e.g. "Actor.abc", "Scene.abc.Token.def", "Compendium.dnd5e.monsters.Actor.abc"
dryRunNoOnly check and preview; nothing is written. Recommended before the real call
parentUuidNouuid of the document that holds an embedded one, e.g. "Actor.abc" for its items, "Scene.abc" for its walls
documentTypeNoFoundry document name, e.g. "Actor", "JournalEntryPage", "Combat", "Wall"; with id when no uuid is given

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (destructiveHint=true), the description adds substantial behavioral context: required permission levels, rules for embedded documents, explicit refusal cases, and dryRun behavior including embedded documents. This is exactly the kind of context annotations cannot convey.

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 every sentence carries operational value: identification modes, permissions, refusals, dryRun, and alternatives. It is front-loaded with the core purpose and then lists exclusions, though the dense refusal list could be slightly better 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?

For a complex destructive tool with 5 parameters and no output schema, the description covers identification, permissions, failure cases, dryRun behavior, and routing to siblings. Nothing essential for an agent to call it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds a small amount of meaning by explaining the uuid-or-documentType+id identification modes, but it does not substantially enrich the parameter semantics beyond what the 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 opens with 'Generic fallback: delete one document of any type', giving a specific verb, resource, and scope. It clearly distinguishes this tool from the many specialized deletion tools by labeling it a fallback and specifying the two identification methods.

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 lists preferred alternatives ('Prefer journal-delete, journal-delete-page, delete-scene, manage-actors, delete-playlist, delete-roll-table and delete-tokens where they fit') and states conditions under which deletion is refused. This gives 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-playlistDelete a playlistA
DestructiveIdempotent

Delete a playlist by its id. Refuses while the playlist is still linked to a scene, and names those scenes. Requires the playlist permission to be set to full.

ParametersJSON Schema
NameRequiredDescriptionDefault
playlistIdYesId of the playlist to delete

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the description doesn't need to restate those. It adds valuable context beyond annotations: the refusal behavior when linked to scenes, the fact that it names those scenes, and the permission requirement. This is meaningful behavioral disclosure that helps the agent anticipate failure modes. Minor gap: it doesn't state whether deletion is permanent or reversible, but the destructiveHint covers the risk profile.

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 earning its place: what it does, when it refuses, and what permission is required. The most important operational constraints are front-loaded. No fluff or repetition of the title.

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

Completeness4/5

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

For a single-parameter destructive tool with no output schema, the description covers the essential context: the action, the refusal condition, and the permission prerequisite. It doesn't describe the return value, but with no output schema and a simple delete operation, that's a minor gap. The description is complete enough for an agent to invoke it correctly and anticipate failures.

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 the single parameter (playlistId). The description adds the context that the id is the playlist's id and that deletion is by id, but doesn't add new semantic detail beyond the schema. Baseline 3 is appropriate when the schema fully covers parameters.

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

Purpose5/5

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

The description states a specific verb ('Delete'), a resource ('a playlist'), and the identifier used ('by its id'). It also distinguishes itself from sibling tools like list-playlists, manage-playlists, and control-playlist by focusing on deletion. The title and description align, and the behavior is unambiguous.

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

Usage Guidelines5/5

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

The description explicitly states when deletion is refused (while the playlist is linked to a scene) and names the scenes, which is a clear exclusion condition. It also states a prerequisite (playlist permission must be set to full), giving the agent actionable guidance on when to use this tool vs alternatives like manage-playlists or control-playlist.

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

delete-roll-tableDelete a roll tableA
DestructiveIdempotent

Delete a roll table by its id. Requires the roll table permission to be set to full.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableIdYesId of the table to delete

TDQS

A3.8/5.0
Behavior3/5

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

The annotations already declare destructiveHint=true and readOnlyHint=false, so the destructive nature is covered. The description adds the permission requirement, which is useful behavioral context. It does not describe side effects, return value, or error behavior, but the low bar set by the annotations makes this acceptable.

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 exactly two short sentences with no filler. The core operation is front-loaded, and the permission note is the only additional detail, 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 single-parameter destructive tool with annotations covering safety and idempotency, the description plus schema is nearly sufficient. The permission note adds important operational context. A minor gap is not clarifying that deletion is permanent, but the destructiveHint annotation already signals this.

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 description fully documents tableId as 'Id of the table to delete'. The description only re-states this as 'by its id', adding no additional semantic detail beyond what the schema already provides. Baseline 3 is appropriate given 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 states a specific verb ('Delete'), a specific resource ('roll table'), and the identifying mechanism ('by its id'). This clearly distinguishes the tool from related roll-table siblings like get-roll-table, update-roll-table, reset-roll-table, or draw-roll-table.

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 clearly implies when to use the tool: when a roll table needs to be deleted. It also provides a meaningful prerequisite by requiring full roll table permission. However, it does not explicitly mention alternatives or give a when-not-to-use scenario, leaving usage guidance somewhat implicit.

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

delete-sceneDelete sceneA
DestructiveIdempotent

Delete a scene for good, by its id only, so a scene with a similar name is never hit. The active scene is never deleted; activate another one first. Needs the scene permission on "create, change and delete".

ParametersJSON Schema
NameRequiredDescriptionDefault
sceneIdYesId of the scene

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true and idempotentHint=true, so the description doesn't need to repeat those. However, it adds crucial behavioral context: the tool permanently deletes and cannot target the active scene, and it states the required permission level. This goes beyond annotations and is valuable 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.

Conciseness5/5

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

The description is concise, three sentences with no fluff. It front-loads the primary action (delete for good) and then provides the critical constraints and permission requirement. 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?

The description is complete for a deletion tool with one parameter. It covers the action, the target, the safety caveat, and permission requirement. It doesn't explain the return value, but since there is no output schema and deletion typically returns a simple success, this is not a major gap. The annotations provide safety hints, so the description is sufficiently 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 schema provides 100% coverage for the single parameter 'sceneId' with a basic description. The tool description adds significant semantic meaning by explaining that the id must be exact and that the active scene is never affected, which clarifies how the parameter is used and its constraints.

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

Purpose5/5

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

The description clearly states the action (delete), the resource (scene), and critical scoping (by id only, never the active scene). It distinguishes from sibling tools like 'delete-canvas-elements' and 'delete-document' by specifying the resource and the id-based targeting.

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 (deleting a scene permanently) and includes a critical exclusion (never delete active scene, activate another first). It does not explicitly mention alternatives, but the sibling list includes update-scene and restore-scene, so it implicitly suggests alternatives for non-destructive actions.

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

delete-tokensDelete tokensA
DestructiveIdempotent

Remove tokens from the active scene (or the scene in sceneIdentifier), by their ids only. The actors stay in the actor directory; an unlinked token loses its own values with it. When one id is not on the scene, nothing is deleted and the answer says where that id lies. The answer lists every deleted and every failed token.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenIdsYesIds of the tokens to remove
sceneIdentifierNoScene of the token, by id or name. Without it the scene that is active for everyone is used; every answer names the scene.

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing that actors remain in the actor directory, unlinked tokens lose their own values, the operation is atomic when an id is missing, and the response lists deleted and failed tokens. This adds meaningful behavioral context beyond the destructiveHint and idempotentHint 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?

Four dense sentences, each earning its place: the core action, the side effect on actors, the atomic failure behavior, and the response contents. The most important information is front-loaded in the first sentence.

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

Completeness5/5

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

With only two parameters and no output schema, the description fully covers what an agent needs: scene targeting, id-only restriction, side effects, failure atomicity, and response contents. Nothing essential 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?

Schema coverage is 100%, so the baseline is 3. The description adds extra semantic value by clarifying that tokenIds must be ids only, that sceneIdentifier can target a scene by id or name, and that the active scene is used when omitted. This enriches the parameter meaning 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?

States a specific verb and resource: 'Remove tokens from the active scene (or the scene in sceneIdentifier), by their ids only.' It clearly distinguishes this from sibling tools like move-token or update-token by emphasizing id-based removal and scene 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?

Provides clear context for when to use it: when removing tokens from a scene by id, with an optional sceneIdentifier for targeting a non-active scene. It does not explicitly name alternatives, but the scope and conditions are unambiguous enough for an agent to select it correctly.

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

describe-document-typeDescribe a document typeA
Read-onlyIdempotent

List the document types of this Foundry, or describe one: its fields from Foundry's data model, its subtypes, the system fields of a subtype in the active game system, what it holds and belongs to, the permission level writing it needs, the fields generic access never changes, and the specialised tools for it. Call it before creating or changing a type through generic access for the first time.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNoHow deep nested fields are listed, 1 to 8; default 4
subtypeNoType within it, e.g. "npc", for the system fields
documentTypeNoFoundry document name; leave out for the list of all types

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is known. The description adds useful context beyond annotations by enumerating what the tool returns: fields, subtypes, system fields, containment, permission requirements, generic-access behavior, and specialized tools.

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 only two sentences and front-loads the core action ('List... or describe one'). The first sentence is a long, dense enumeration of outputs, but it is information-rich and not padded with unnecessary filler.

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 read-only introspection tool with no output schema, the description fully enumerates what the agent can expect to learn: fields, subtypes, system fields, containment, permission levels, generic-access behavior, and specialized tools. It also tells the agent when to invoke it, making the call context 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 provides 100% parameter descriptions for depth, subtype, and documentType. The description adds little new parameter-level meaning beyond restating that document types can be listed or described, so the schema carries the semantic burden and the 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 identifies the tool as a read-only introspection tool for Foundry document types, using verbs like 'List the document types' and 'describe one' with a detailed resource scope. It distinguishes itself from document-instance tools like list-documents/get-document by focusing on Foundry's data model and type metadata.

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 guidance on when to call the tool: 'Call it before creating or changing a type through generic access for the first time.' It gives clear usage context but does not explicitly state exclusions or name alternative tools for non-type document operations.

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

dnd5e-add-featureAdd a D&D 5e featureA

[D&D 5e only] Add one thing to an existing dnd5e NPC or character; featureType chooses what, and each kind reads only its own parameters (the answer names the ignored ones).

  • passive: a trait without a roll. Needs featureName.

  • save: a feature forcing a saving throw with fixed DC, damage, optional template. Needs featureName, saveAbility, saveDC, damageParts; areaSize with areaType.

  • attack: a weapon attack. Needs featureName, attackType, damageParts; rangeFt when ranged. The first damage part is the weapon damage.

  • attack-with-save: an attack whose hit also forces a save with its own damage. Needs in addition saveAbility, saveDC, saveDamageParts.

  • aura: area damage without attack or save; no lasting aura or effect is created. Needs featureName, damageParts, areaType, areaSize.

  • spellcasting: casting ability and caster level of an NPC without class items, per class, level and rules version (2024 paladins and rangers have slots at level 1). dnd5e derives the slots; actors with class items are refused. Needs spellcastingClass, spellcastingLevel.

  • spells: copy spells by English name from compendiums. Needs spellNames. An item name the actor already has (ignoring case) is refused. The actor is found by id, exact name or token id, never by part of a name. Everything written is read back. Run spellcasting before spells.

ParametersJSON Schema
NameRequiredDescriptionDefault
saveDCNoFixed difficulty class of the save. Used by: save, attack-with-save.
rangeFtNoNormal range in feet, needed for a ranged attack. Used by: attack, attack-with-save.
reachFtNoReach in feet. Used by: melee attack, attack-with-save.
areaSizeNoSize of the template in areaUnits (length of a line, radius of a sphere). Used by: save with areaType, aura.
areaTypeNoTemplate shape. An emanation is stored as a radius; a line gets a width, a cylinder a height, a cube its side in every direction. Used by: save (optional), aura (required).
equippedNoWhether the weapon is equipped. Used by: attack, attack-with-save.
areaUnitsNoUnits of areaSize. Used by: save, aura.ft
attackTypeNoMelee uses reachFt, ranged needs rangeFt. Used by: attack, attack-with-save.
halfOnSaveNoHalf damage on a successful save; otherwise none. Used by: save.
proficientNoWhether the proficiency bonus is added to hit; false stores a non-proficient weapon. Used by: attack, attack-with-save.
propertiesNodnd5e weapon property keys such as "fin", "lgt", "rch", "thr"; unknown keys are stored with a warning. Used by: attack, attack-with-save.
saveOnSaveNoDamage of that save on a success. Used by: attack-with-save.none
sourceBookNoSource book, e.g. "MM". Used by: passive, save, attack, attack-with-save, aura.
sourcePageNoPage in the source book. Used by: passive, save, attack, attack-with-save, aura.
spellNamesNoEnglish spell names, matched whole and ignoring case. Used by: spells.
affectsTypeNoWhat the area affects. Used by: save, aura.creature
attackBonusNoExtra bonus to hit, not to damage. Used by: attack, attack-with-save.
damagePartsNoDamage. For an attack the first part is the weapon damage and further parts add to it. Used by: save, attack, attack-with-save, aura.
descriptionNoDescription as HTML. Used by: passive, save, attack, attack-with-save, aura.
featureNameNoName of the new item; refused when the actor has an item of that name, ignoring case. Used by: passive, save, attack, attack-with-save, aura.
featureTypeYesWhat to add; each kind reads only its own parameters and names the ones it ignored
longRangeFtNoLong range in feet, greater than rangeFt. Used by: ranged attack, attack-with-save.
saveAbilityNoAbility of the saving throw. Used by: save, attack-with-save.
sourceRulesNoRules version. Decides the slots of paladin and ranger at level 1 and is stored as the source of an item; the world setting of dnd5e when left out. Used by: passive, save, attack, attack-with-save, aura, spellcasting.2014
weaponClassNoWeapon category; "natural" for claws and bites. Used by: attack, attack-with-save.natural
activationTypeNoHow it is used in the action economy. Used by: save, attack, attack-with-save, aura.action
abilityModifierNoAbility for attack and damage. Left out: the better of STR and DEX for a natural weapon or one with the property "fin", as dnd5e allows them, else STR in melee and DEX at range. Written into the attack under both rules versions. Used by: attack, attack-with-save.
actorIdentifierYesThe actor: its id, its exact name (case does not matter) or the id of one of its tokens. Parts of a name are not matched. Needed by every kind
compendiumPacksNoItem compendiums to search, first match wins. Left out: the standard spell compendium of the world's rules version (dnd5e.spells for 2014, dnd5e.spells24 for 2024). Used by: spells.
saveDamagePartsNoDamage of the separate save that follows a hit. Used by: attack-with-save.
spellcastingClassNoClass whose table gives the spell slots; warlock uses pact magic. Used by: spellcasting.
spellcastingLevelNoClass level from 1 to 20. Used by: spellcasting.
spellcastingAbilityNoCasting ability; left out, INT for wizard and artificer, WIS for cleric, druid and ranger, CHA for bard, paladin, sorcerer and warlock. Used by: spellcasting.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only declare not-read-only/not-idempotent/not-destructive; the description adds rich behavior far beyond that: duplicate item names are refused case-insensitively, actor lookup is by id/exact name/token id and never partial, ignored parameters are named in the answer, everything written is read back, actors with class items are refused for spellcasting, auras create no lasting effect, and unknown keys are stored with a warning. No contradiction with 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?

Long but every clause earns its place given 33 parameters and 7 sub-modes. Front-loaded with the scoping sentence and '[D&D 5e only]' tag; the bullets are consistent and scannable (definition + minimum parameters per type); the closing paragraph groups the global rules (refusal, lookup, read-back, ordering) 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?

No output schema exists, but 'Everything written is read back' sets return expectations, and the description covers every mode's inputs, rejection conditions, defaults, and edge cases (2024 paladin/ranger slots at level 1, warlock pact magic, natural weapons). For a tool this complex, nothing an agent needs to invoke it correctly 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?

Schema coverage is 100% with per-parameter 'Used by' descriptions, so the baseline is 3. The description adds cross-parameter structure the flat schema cannot express: minimal required sets per featureType, 'The first damage part is the weapon damage', 'rangeFt when ranged', and default-derivation rules (abilityModifier fallback, compendiumPacks default). That pushes it above the schema-only baseline.

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

Purpose5/5

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

States a specific verb+resource ('Add one thing to an existing dnd5e NPC or character') and then enumerates seven distinct feature types with concrete definitions (passive, save, attack, attack-with-save, aura, spellcasting, spells). The 'one thing' phrasing and per-type breakdown distinguish it from siblings like dnd5e-add-features-from-compendium and dnd5e-create-npc.

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?

Extensive internal routing guidance: each featureType gets a definition and a minimal required parameter set, plus global rules like 'Run spellcasting before spells' and the actor-lookup constraints. However, there is no explicit when-not-to-use guidance against the near-sibling dnd5e-add-features-from-compendium (bulk addition from compendium), so tool-level alternative routing is left to inference.

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

dnd5e-add-features-from-compendiumAdd D&D 5e features from compendiumsA

[D&D 5e only] Copy class and monster features by English name from item compendiums onto an actor, such as "Pack Tactics", "Multiattack" or "Action Surge". Names match whole and ignoring case; the first compendium in compendiumPacks with the name wins, and two entries of that name in one compendium are reported instead of guessed. Without compendiumPacks the standard compendiums of the world's rules version are searched (2024 class features are part of the class items and cannot be fetched one by one). Items the actor already has by name are skipped. Copies keep a link to their entry, never its id. The answer lists added, skipped, not found and failed names; for spells use dnd5e-add-feature with featureType "spells", for homebrew features featureType "passive" and the others.

ParametersJSON Schema
NameRequiredDescriptionDefault
featureNamesYesEnglish names of class or monster features, matched whole and ignoring case; at most 50
actorIdentifierYesThe actor: its id, its exact name (case does not matter) or the id of one of its tokens. Parts of a name are not matched
compendiumPacksNoItem compendiums to search, first match wins. Left out: the standard feature compendiums of the world's rules version (dnd5e.monsterfeatures and dnd5e.classfeatures for 2014, dnd5e.monsterfeatures24 for 2024; 2024 class features live inside the class items)

TDQS

A4.8/5.0
Behavior5/5

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

The description discloses substantial behavior beyond the minimal annotations: whole-name case-insensitive matching, first-compendium-wins resolution, duplicate-entry reporting, skipping features the actor already has, preserving entry links rather than ids, and the summary of added/skipped/not-found/failed names. It also warns that 2024 class features cannot be fetched individually, which is valuable operational 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 dense but not padded; the first sentence front-loads purpose and examples, and every subsequent clause adds a relevant behavioral rule. It is slightly long as a single paragraph, and the final routing sentence is compressed, which keeps it from being perfectly 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?

For a tool with no output schema and nontrivial source-resolution logic, the description covers the core usage, defaults, limitations, duplicate handling, and result categories. An agent has enough information to decide when to call it and what to expect from the actor and the response.

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 documents all three parameters with 100% coverage, so the description does not need to repeat basic parameter meaning. It adds useful extras such as duplicate-name handling and the 2024 class-feature limitation for compendiumPacks. It adds little for actorIdentifier beyond the schema, so a 4 rather than 5 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 opens with a specific verb and resource: copying class and monster features by English name from item compendiums onto an actor, with concrete examples like 'Pack Tactics', 'Multiattack', and 'Action Surge'. It also scopes the tool to D&D 5e and distinguishes it from dnd5e-add-feature by directing spell and homebrew feature use cases to that sibling.

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

Usage Guidelines5/5

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

It states exactly when to use this tool, including the D&D 5e scope and the feature-copying use case, and explicitly names dnd5e-add-feature with featureType values for spells and homebrew features as the alternative. It also explains what happens when compendiumPacks is omitted, giving the agent clear selection criteria.

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

dnd5e-create-npcCreate a D&D 5e NPCA

[D&D 5e only] Create one NPC with a complete stat block and no items: type, size, alignment, challenge rating, ability scores, saving throw and skill proficiencies, hit points, armor class, speeds, senses, damage and condition traits, languages, biography and source. It goes into the folder "Foundry MCP Creatures". A name any actor already has (ignoring case) and a challenge rating the rules do not have are refused. Proficiency bonus and experience points are left to dnd5e, which derives them. Every value is read back; the answer lists warnings (e.g. a language that is not a dnd5e key) and anything stored differently. Add attacks, features and spells afterwards with dnd5e-add-feature.

ParametersJSON Schema
NameRequiredDescriptionDefault
crYesChallenge rating: 0, 1/8, 1/4, 1/2 or a whole number up to 30, as number or text. Anything else is refused
nameYesName of the new NPC; refused when any actor already has it, ignoring case
sizeYesSize; stored as the dnd5e key (sm, med, lg, grg)
hoverNoThe creature hovers while flying
acModeYes"default" lets dnd5e calculate the armor class; "flat" stores acValue
skillsNoSkills with proficiency or expertise
acValueNoArmor class for acMode "flat"
flySpeedNoFlying speed in feet; 0 means none
abilitiesYesAll six ability scores
alignmentNoAlignment as text, e.g. "chaotic evil"
biographyNoBiography as HTML
hpAverageYesHit points, stored as current and maximum
hpFormulaYesHit dice formula, e.g. "3d8+6"
languagesNoLanguages by key or English name, e.g. "Common" or "goblin"; unknown ones go into the custom text with a warning
swimSpeedNoSwimming speed in feet; 0 means none
truesightNoTruesight in feet; 0 means none
walkSpeedNoWalking speed in feet; 0 means none
blindsightNoBlindsight in feet; 0 means none
climbSpeedNoClimbing speed in feet; 0 means none
darkvisionNoDarkvision in feet; 0 means none
sourceBookNoSource book, e.g. "MM"
sourcePageNoPage in the source book
burrowSpeedNoBurrowing speed in feet; 0 means none
sourceRulesNoRules version of the source; the world setting of dnd5e when left out2014
tremorsenseNoTremorsense in feet; 0 means none
creatureTypeYesCreature type, one of 14 dnd5e keys. dnd5e has no type "swarm": it is stored as a custom type with a warning
savingThrowsNoAbilities whose saving throws are proficient
specialSensesNoOther senses as text
creatureSubtypeNoSubtype such as "goblinoid"
languagesCustomNoFree text for languages, e.g. "telepathy 60 ft."
damageImmunitiesNoDamage type keys the NPC is immune to; unknown words go into the custom text with a warning
damageResistancesNoDamage type keys the NPC resists; unknown words go into the custom text with a warning
conditionImmunitiesNoCondition keys such as "charmed"; unknown words go into the custom text with a warning
damageVulnerabilitiesNoDamage type keys the NPC is vulnerable to; unknown words go into the custom text with a warning

TDQS

A4.3/5.0
Behavior5/5

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

Annotations are all false (not read-only, not idempotent, not destructive), so the description carries the burden of explaining side effects. It does so richly: values are read back with warnings, proficiency bonus and XP are derived by dnd5e rather than stored, duplicate names and illegal CRs are refused, and output lands in a specific folder. This tells the agent what to expect after invocation beyond the annotation flags.

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

Conciseness4/5

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

The single paragraph is dense but every sentence earns its place: scope, field inventory, folder, validation rules, derivation behavior, read-back/warnings, and the pointer to dnd5e-add-feature. It is slightly long for one paragraph and could be bulleted, but there is no wasted text.

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 34-parameter tool with no output schema, the description covers folder placement, validation refusals, derived values, warning behavior, and the next tool to chain, which is substantial. It does not describe the exact return shape or all edge cases, but the schema's rich properties fill most remaining gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3; the tool description itself adds no per-parameter meaning beyond the schema's rich descriptions (CR format rules, 'swarm' handling, unknown-key warnings, etc.). The schema parameters are well documented such that no compensation from the main description is required.

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

Purpose5/5

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

States a specific verb and resource: 'Create one NPC with a complete stat block and no items' and enumerates the included fields (type, size, CR, abilities, etc.). It also distinguishes from the sibling dnd5e-add-feature, which is the later step for attacks/features/spells, and scopes to D&D 5e. The target folder is named, removing ambiguity about where the actor lands.

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?

Scopes to '[D&D 5e only]' and describes the creation flow, including that attacks/features/spells should be added afterwards with dnd5e-add-feature, which is an explicit alternative for continuing after this tool. It does not discuss competing creation tools like create-actor-from-compendium or manage-actors, so exclusions are only partial.

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

draw-cardsDraw cardsB

Draw cards from one stack (usually a deck) into another (usually a hand or pile). Refused before anything moves when too few cards are left. Every card is looked up afterwards. Needs the write switch.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesDraw into: id or exact name of the card stack
howNoWhich cards: top (default), bottom or random
fromYesDraw from: id or exact name of the card stack
numberNoHow many cards, default 1
chatNotificationNoPost Foundry's chat message about the move (default false)

TDQS

B3.4/5.0
Behavior4/5

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

The description adds meaningful behavioral context beyond the annotations: it refuses before any cards move when too few remain, performs a post-move lookup, and requires the write switch. Since the annotations only provide false hints, these disclosures carry important safety and operational information.

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

Conciseness4/5

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

The description is compact and front-loaded: action first, then failure behavior, verification step, and permission requirement. The sentence 'Every card is looked up afterwards' is somewhat vague, but the overall size and structure are appropriate with no wasted 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?

The description covers the core operation, a critical failure condition, and an auth prerequisite, which supports invocation. However, with no output schema, it does not clarify what the caller should expect afterward, and it does not position this tool among the similar card-related siblings.

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 each parameter is already documented. The description adds a little context around from/to being stacks and connects the refusal behavior to card count, but it does not substantially extend or clarify any specific parameter beyond what the schema already says.

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

Purpose4/5

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

The description states a specific action ('Draw cards') and resource ('from one stack ... into another'), with concrete typical examples: a deck into a hand or pile. It does not explicitly differentiate from sibling tools like deal-cards or pass-cards, so it stops short of full sibling-level clarity.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as deal-cards, pass-cards, or other card-stack operations. The 'usually a deck' and 'usually a hand or pile' phrasing implies a typical case but does not state exclusions, alternatives, or when another sibling would be more appropriate.

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

draw-roll-tableDraw from a roll tableA

Roll on a roll table and return the entries. mode "draw" follows the table: a table without replacement marks drawn entries so they do not come again. mode "roll" never marks anything. Nothing goes to the chat unless chat is set.

ParametersJSON Schema
NameRequiredDescriptionDefault
chatNoPost the result: "none" (default), "public", "gm" (Gamemasters only), "self", "blind" (Gamemasters only, hidden from the roller)
modeNo"draw" (default) follows the table's replacement setting; "roll" marks nothing
countNoHow many draws, 1 to 100; default 1
tableIdYesId or exact name of the table

TDQS

A4.2/5.0
Behavior5/5

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

The description discloses the key side effects: draw mode marks entries on tables without replacement so they do not come again, while roll mode never marks anything. It also states that nothing goes to chat unless chat is set. This goes well beyond the generic annotations (readOnlyHint false, idempotentHint false) and tells an agent exactly how state may change.

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, with the purpose front-loaded first and mode/chat behavior following directly. There is no filler or repeated information beyond necessary clarification.

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 definition covers purpose, mode behavior, chat behavior, and side effects, and the schema fully documents all parameters. It lacks only a description of the return-value shape and edge cases like an exhausted table, which is minor given the tool's low complexity and the absence of an 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 description coverage is 100%, so the baseline is 3. The description restates mode behavior and the chat default that the schema already documents, adding no genuinely new parameter-level meaning beyond what an agent would already see in the input 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 and resource: 'Roll on a roll table and return the entries.' It clearly distinguishes this from sibling tools like get-roll-table or reset-roll-table by focusing on drawing and returning results, while the mode detail adds operational scope.

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 gives clear context for choosing mode 'draw' vs 'roll' and explains when chat output occurs. However, it never names alternatives such as get-roll-table, reset-roll-table, or roll-dice, nor states when not to use this tool, so sibling differentiation is left to inference.

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

end-combatEnd combatA
DestructiveIdempotent

End a combat encounter: it stops (round 0, not active) and keeps its combatants and initiatives. deleteEncounter deletes it instead, as Foundry's own End Combat does; deleting encounters is refused until they have a permission level.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoOnly report what would happen and whether it is permitted; change nothing
combatIdNoId of the combat encounter, as list-combats shows it. Without it the active encounter is used.
deleteEncounterNoDelete the encounter instead of stopping it (default false)

TDQS

A4.7/5.0
Behavior5/5

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

The description explains the effect on combat state (round 0, not active) and that combatants and initiatives are preserved, which goes beyond the destructiveHint annotation. It also discloses that deletion requires permission, adding context to the destructive nature. The idempotentHint and readOnlyHint are not contradicted; in fact, the explanation of 'keeps its combatants and initiatives' supports the non-destructive stop behavior.

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

Conciseness5/5

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

The description consists of only two sentences, with the core action front-loaded in the first sentence ('End a combat encounter: it stops...') and the alternative and caveat in the second. No unnecessary words or repetition of annotation data.

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 3-parameter tool with full schema coverage and clear annotations, the description covers the primary behavior, the delete alternative, the permission requirement, and the fallback to the active encounter. An agent has all necessary information to invoke the tool correctly, even without an output schema.

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 the schema already documents each parameter, the description adds extra meaning beyond the schema descriptions: it explains that without combatId the active encounter is used, and that deleteEncounter changes the operation from stopping to deleting, plus the permission caveat. This adds value over the raw schema, which was already 100% covered.

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

Purpose5/5

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

The description clearly states the tool ends a combat encounter, specifying the resulting state (round 0, not active) and that it retains combatants and initiatives. It explicitly distinguishes between stopping and deleting via the deleteEncounter parameter, which is a key differentiator from sibling tools like start-combat or delete-encounter.

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 contrasts the default behavior (stop) with the deleteEncounter alternative, and even references Foundry's own End Combat to clarify semantics. It also notes that deletion is refused without a proper permission level, so an agent knows deletion may require permissions. It doesn't explicitly say 'use this to end an active combat' but that is clearly implied.

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

execute-macroRun a macroA
Destructive

Run a macro in the Gamemaster's browser and report its result or error. Off by default: the world setting "macroExecution" must be "chat" for chat macros or "all" for script macros. A SCRIPT MACRO CAN DO ANYTHING a Gamemaster can, including deleting documents, and cannot be undone; read its command with list-macros first. A chat macro only posts to the chat.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNoNamed values a script macro receives as variables and as scope
aliasNoName shown as the speaker; defaults to the token or actor name
macroIdYesId or exact name of the macro
sceneIdNoScene id or exact name that holds speakerToken, when the id is on several scenes
speakerActorNoSpeak as this actor: its id or exact name
speakerTokenNoSpeak as this token: its uuid ("Scene.<id>.Token.<id>") or its id; never its name

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already include destructiveHint=true and openWorldHint=true, so the destructive nature is disclosed. The description adds important context: script macros can do anything a Gamemaster can, including deleting documents, and cannot be undone. It also explains the off-by-default execution setting and difference between chat and script macros, which goes beyond 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?

The description is concise: three sentences with no fluff. It front-loads the core purpose, then the critical caveat about script macros, and ends with the distinction for chat macros. Every sentence earns its place, providing essential information without redundancy.

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

Completeness5/5

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

For a macro execution tool with complex security implications, the description covers the essential operational context: the required world setting, the risk of script macros, and the behavior of chat macros. There is no output schema, but the description mentions 'report its result or error' which suffices. Given the complexity, the description is complete enough 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?

The schema description coverage is 100%, meaning all parameters are described in the schema (e.g., args, alias, macroId). The description itself doesn't add extra parameter details beyond what the schema provides, but it does mention 'read its command' and 'speaker' nuances that align with parameters. Since schema coverage is high, the baseline is 3, and no description compensation 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 clearly states that the tool executes a macro in the Gamemaster's browser and reports the result or error. It specifies the resource (macro) and the action (run/execute), distinguishing it from sibling tools like list-macros (which lists macros) and create-macro (which creates macros).

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 guidance: it mentions the world setting requirement ('macroExecution' must be 'chat' or 'all') and instructs to read macro commands with list-macros before executing script macros. It also distinguishes between chat macros (post to chat) and script macros (can do anything), implicitly guiding when to use this versus other tools.

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

export-to-compendiumExport to compendiumA
DestructiveIdempotent

Copy documents from the world into a compendium, to archive finished material. Select by name or id, or by the world folder they sit in; without either, everything of that type is copied. Ids are kept, so a document already in the compendium is overwritten instead of duplicated. A locked compendium is refused unless unlockIfNeeded is set; then the lock is lifted for this operation only and set again afterwards. The answer lists new, overwritten, skipped and, marked CAUTION, lost entries.

ParametersJSON Schema
NameRequiredDescriptionDefault
namesNoWorld documents to save, by whole name (case does not matter) or by id. Leave out to save every document of the type.
packIdYesId of the compendium to save into
folderNameNoSave only documents lying directly in the world folder with exactly this name
documentTypeYesType of the world documents: JournalEntry, Scene, Actor, RollTable, Playlist, Item or Macro
unlockIfNeededNoLift a lock for this one operation; it is set again afterwards

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description discloses that duplicate ids are overwritten, locked compendiums are refused unless unlockIfNeeded is set, and the lock is restored afterwards. It also describes the output summary (new, overwritten, skipped, lost), giving an agent a clear picture of side effects and results.

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

Conciseness5/5

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

The description is four sentences with no wasted words. Purpose is front-loaded, and each subsequent sentence adds a distinct behavioral detail (selection, overwrite, lock handling, result listing).

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 enumerates the answer categories and covers edge cases like duplicates and locks. For a moderately complex write operation, all essential behavior an agent needs to call and interpret results is documented.

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 describes every parameter fully (100% coverage). The description adds value by explaining the interplay between names, folderName, and omission (fallback to all documents of the type), as well as case-insensitive name matching. This is helpful but not extensive.

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 documents from the world into a compendium for archiving finished material. The specific verb and resource are unmistakable, and the direction distinguishes it from the sibling import-from-compendium.

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 clear context for when to use the tool (archiving finished material) and explains the selection modes (by name/id, folder, or everything). However, it does not explicitly name alternatives or state when not to use it, so it stops short of full exclusion guidance.

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

find-file-referencesFind documents that use a pathA
Read-onlyIdempotent

Find every field of every world document that points to a file or folder path, with the same path rule world-rewrite-paths uses: a folder matches the files under it, never a longer name. Use it before moving or replacing files. Compendiums are not scanned.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFile or folder path, such as "worlds/<world>/tokens"
maxResultsNoAt most this many references, 1 to 1000, default 200
collectionsNoCollections to scan: scenes, actors, items, journal, playlists, tables, cards, macros, users. Default all.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, establishing the safety profile. The description adds valuable behavioral context: the exact path matching rule (folder matches files under it, never a longer name), the scan scope (every field of every world document), and the compendium exclusion. It does not describe output format or edge cases, but this is not required given the strong annotation coverage.

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

Conciseness5/5

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

Three sentences with no filler: action, path rule, usage context, and limitation each earn their place. The core function is front-loaded and the supporting rules are presented in a logical order.

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 read-only search tool with a simple parameter set and strong annotations, this description is complete: it states what is scanned, how path matching works, when to use it, and a key exclusion. The only minor omission is output format details, but no output schema exists and the tool's purpose makes the return type obvious.

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 schema already documents all three parameters. The description goes beyond the schema by explaining the semantic behavior of the path parameter ('a folder matches the files under it, never a longer name'), which is essential for correctly interpreting what results will be returned. The maxResults and collections parameters are sufficiently documented 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 states a precise verb-and-resource pair: 'Find every field of every world document that points to a file or folder path.' It also clarifies the exact matching rule and scope ('Compendiums are not scanned'), which makes it clearly distinguishable from file-related siblings like find-missing-files or world-rewrite-paths even without naming them. The title and description agree and add 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?

The description gives an explicit usage scenario: 'Use it before moving or replacing files.' It also exposes a limitation ('Compendiums are not scanned') that tells the agent when this tool is insufficient. It does not explicitly name alternative tools or give detailed when-not-to-use guidance, so it stops just short of full routing guidance.

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

find-missing-filesFind missing filesA
Read-onlyIdempotent

Find files that world documents point to but that do not exist: images, sounds, videos, text and fonts in fields and in markup, looked up in the data storage and in Foundry's own files. Wildcard paths are counted but not checked. Compendiums are not scanned.

ParametersJSON Schema
NameRequiredDescriptionDefault
underNoOnly paths inside this folder
maxResultsNoAt most this many missing files are named, 1 to 1000, default 200
collectionsNoCollections to scan: scenes, actors, items, journal, playlists, tables, cards, macros, users. Default all.
maxDirectoriesNoAt most this many folders are listed, 1 to 1000, default 300

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, and the description adds meaningful behavioral nuance beyond those flags: wildcard paths are counted but not checked, compendiums are not scanned, and the search spans both data storage and Foundry's own files. This gives an agent expectations about coverage and false positives without contradicting the read-only safety hints.

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

Conciseness5/5

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

Two dense sentences with no fluff. The first sentence front-loads the action, scope, and locations; the second packs the essential caveats. Every clause 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 is complete for a read-only analysis tool: it states what is searched, where, and the important coverage limits. With no output schema, it leaves the exact result shape implicit, but the maxResults/maxDirectories parameters and the verb 'find' make the return intent clear.

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 every parameter already has a clear description in the schema, so the baseline is 3. The tool description adds no parameter-level meaning beyond the schema; it neither clarifies formats nor reveals relationships between parameters.

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 and resource: 'Find files that world documents point to but do not exist.' It further narrows scope by enumerating file types, lookup locations, and explicit exclusions, making it distinguishable from sibling file tools like find-file-references and browse-files without needing to open the schema.

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

Usage Guidelines4/5

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

The description gives clear context on what the tool covers (images, sounds, videos, text, fonts in fields and markup, data storage and Foundry files) and states two limitations: 'Wildcard paths are counted but not checked. Compendiums are not scanned.' It does not explicitly name sibling alternatives or state a direct when-to-use/when-not-to-use rule, so it falls just short of a 5.

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

find-pathFind a path around wallsA
Read-onlyIdempotent

Find a way from a token or point to another around walls that block movement (or sight, light, sound), on square and gridless scenes, and its length. Moves nothing; move-token moves a token. Works without a drawn canvas.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesGoal: { tokenId } (id or name of a token), or { x, y } in pixels
fromYesStart: { tokenId } (id or name of a token), or { x, y } in pixels
typeNoWhich walls count; default move
maxCellsNoStop after searching this many grid cells, 100 to 200000; default 50000
sceneIdentifierNoScene id or name; default the scene that is active for everyone

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: it computes a path and its length, does not move anything, and works without a drawn canvas. It could mention whether the path is returned as a list of points or cells, but the description adds meaningful behavior beyond the 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?

Three sentences, each earning its place: the core function, the non-mutation clarification, and the no-canvas prerequisite. The most important scoping information is front-loaded. 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 read-only pathfinding tool with 100% schema coverage and no output schema, the description is nearly complete. It covers the core inputs, the wall-type variants, the non-mutation guarantee, and the canvas prerequisite. A minor gap is that it doesn't describe the return format (e.g., list of points, length), but the description already states it returns the path and its length, which is sufficient for an agent to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all five parameters. The description adds the 'type' enum semantics ('Which walls count') and the 'maxCells' search limit concept, but it doesn't add much beyond the schema. Baseline 3 is appropriate because the schema carries the parameter documentation burden.

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

Purpose5/5

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

The description states a specific verb ('Find a way'), a resource ('from a token or point to another'), and the key constraint ('around walls that block movement (or sight, light, sound)'). It also distinguishes itself from the sibling 'move-token' by explicitly saying 'Moves nothing; move-token moves a token.' This makes the tool's purpose unmistakable.

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

Usage Guidelines5/5

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

The description explicitly says when to use this tool ('Find a way... around walls') and contrasts it with the alternative ('move-token moves a token'). It also notes that it 'Works without a drawn canvas,' which clarifies a common prerequisite. This is strong usage guidance.

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

find-tokens-in-rangeTokens in rangeA
Read-onlyIdempotent

List the tokens within a distance (scene units) of a token or point, nearest first, optionally only those not hidden behind walls for sight. Works without a drawn canvas.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesCenter: { tokenId } (id or name of a token), or { x, y } in pixels
distanceYesRange in the units of the scene, e.g. 30 for 30 ft
includeHiddenNoInclude hidden tokens; default true
sceneIdentifierNoScene id or name; default the scene that is active for everyone
requireLineOfSightNoLeave out tokens behind walls that block sight

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish that this is a safe, read-only, idempotent operation. The description adds genuinely useful behavioral details beyond those annotations: results are ordered nearest first, optional wall/sight filtering, and no canvas requirement is needed. This is meaningful context for an agent deciding how to invoke the 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 compact, with two sentences that carry distinct value: the core behavior and the optional sight-filtering mode, plus the important canvasless guarantee. There is no filler or redundant restatement of the tool's title.

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

Completeness4/5

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

For a read-only list operation with complete parameter documentation and safety annotations, the description is nearly sufficient. It captures ordering, sight filtering, and canvas independence, while the schema handles parameter semantics. The lack of an output schema means some return-format detail is not disclosed, but it is not critical for correct 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?

The input schema covers 100% of parameters with descriptions, so the baseline is 3. The description adds little beyond what the schema already documents, although terms like 'scene units' and 'token or point' reinforce the schema's meaning. It does not compensate for any parameter gap because none exists.

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

Purpose4/5

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

The description clearly states a specific verb and resource: it lists tokens within a distance with nearest-first ordering. It also conveys the optional line-of-sight filtering, making the tool's behavior easily identifiable. It does not explicitly differentiate itself from sibling tools by name, though its scope is distinct enough.

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 gives useful context about when the tool applies, notably that it works without a drawn canvas and can filter by line of sight. However, it does not explicitly state when to use this tool over alternatives such as measure-distance or check-wall-collision, leaving that routing implicit.

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

folder-deleteDelete a folderA
DestructiveIdempotent

Delete a sidebar folder, found by its id or exact name. By default its documents and subfolders move up one level. With deleteContents true, all documents and subfolders inside are deleted as well. Needs the folder permission level "create, change and delete", and for deleteContents the same level for the documents inside.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoDocument type of the folder, e.g. "JournalEntry".
folderNameYesId or exact name of the folder.
deleteContentsNoAlso delete everything inside, subfolders included (default false).

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark the tool as destructive and read-only=false, but the description adds significant behavioral context: default moves documents/subfolders up one level, deleteContents deletes them, and permission requirements. This goes beyond annotations and fully discloses consequences.

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 focused sentences: the first states the action and identification method, the second explains default behavior, the third covers the deleteContents option and permissions. Every sentence adds value, and the most important info is front-loaded.

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

Completeness5/5

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

The description provides all necessary operational details: identification method, behavior with and without deleteContents, and required permission levels. For a 3-parameter tool with a simple output (no output schema), this is complete and leaves no ambiguity for an 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 coverage is 100% with descriptions for all parameters, and the description adds meaning for folderName (id or exact name) and deleteContents (default false). It clarifies that deleteContents also includes subfolders and explains the permission implications, enhancing 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 states 'Delete a sidebar folder, found by its id or exact name' with a clear verb and resource, and distinguishes it from document deletion by focusing on folders. It is specific and differentiates from siblings like delete-document and journal-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?

The description implies when to use this tool (for deleting folders) and explains the default behavior versus deleteContents, giving clear context. It doesn't explicitly name alternatives, but the resource type is unambiguous, and it covers the main decision point (whether to also delete contents).

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

folder-renameRename a folderA
Idempotent

Rename a sidebar folder, found by its id or exact name, optionally only among folders of one document type. When several folders have that name, the error lists them so the id can be passed instead. Contents stay.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoDocument type of the folder, e.g. "JournalEntry" or "Actor".
newNameYesThe new name.
folderNameYesId or exact current name of the folder.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover non-destructive (destructiveHint=false) and idempotent aspects)Skip. The description adds 'Contents stay,' directly confirming no data loss, and explains the behavior when multiple folders share a name (error lists them). This provides context beyond the structured 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?

Three tight sentences, each earning its place: the first states the core action and parameters, the second covers ambiguity handling, the third reassures non-destructiveness. No fluff, and key info is front-loaded.

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

Completeness4/5

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

For a simple rename tool with no output schema, the description covers identification, optional filtering, disambiguation, and non-destructive nature. It doesn't mention return values, but that's not critical given the simplicity. Overall it gives an agent enough to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description largely restates the folderName and type semantics ('found by its id or exact name,' 'optionally only among folders of one document type'), but adds the interaction detail that ambiguous names cause an error listing matches. It does not elevate semantics meaningfully 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 states a specific verb and resource ('Rename a sidebar folder') and distinguishes it from siblings like folder-delete and journal-rename by specifying 'sidebar folder' and the id/exact-name lookup. It also clarifies scope with the optional document type filter. This is a clear, distinct 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?

Provides clear usage context: folder can be identified by id or exact name, optionally scoped by document type, and explains how ambiguity is resolved (error lists matching names, then use id). It does not explicitly contrast with alternative tools, but it gives enough context for when to call and even how to recover from ambiguous matches.

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

get-available-conditionsAvailable conditionsA
Read-onlyIdempotent

List the conditions the game system of the world offers in Foundry, with id, name, icon and description. Use it to find the id for toggle-token-condition.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe read operation. The description adds that the output includes id, name, icon, and description, which is useful. However, it doesn't disclose whether the list is complete, sorted, or filtered by game system, though the mention of 'game system of the world' hints at system-specificity. No contradiction with 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?

The description is a single, concise sentence that front-loads the main purpose ('List the conditions') and includes the output fields and a usage pointer. No fluff, every word contributes. It is appropriately sized for a simple read-only list tool.

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

Completeness4/5

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

The tool is simple with no parameters and no output schema. The description is complete enough to know what it does and when to use it. It could potentially mention that the output is only for the current world's game system, but the mention of 'game system of the world' covers that. Given the simplicity, nothing critical is missing.

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

Parameters4/5

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

The tool has 0 parameters, so the schema provides no parameter information. The description adds meaning by explaining what the tool returns (id, name, icon, description) and its purpose (to get id for toggle-token-condition). This compensates for the lack of parameters, and the baseline for 0 params is 4, which 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 'List' and the resource 'available conditions', specifying the output fields (id, name, icon, description). It also distinguishes its purpose from the sibling 'toggle-token-condition' by indicating it provides the id needed for that tool, making it highly distinguishable.

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

Usage Guidelines5/5

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

The description explicitly tells the agent when to use this tool: 'Use it to find the id for toggle-token-condition.' This provides clear context and implies that if you need to toggle a condition, you should first call this tool. It does not mention alternatives, but the explicit usage scenario is sufficient, especially given the large sibling list.

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

get-canvas-viewWhat the canvas showsA
Read-onlyIdempotent

Whether the Gamemaster's browser has a drawn canvas, which scene it shows and which is active, the view position and zoom, and the Gamemaster's targets. Call it before pan-camera, ping-canvas or set-targets, which need the canvas.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already mark it read-only, idempotent, and non-destructive. The description adds value by specifying exactly what data is fetched (canvas presence, scene, view, targets) and the fact it reflects the Gamemaster's browser. It also notes the dependency relationship with sibling tools. No contradictions with 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?

The description is two sentences: the first enumerates the returned information, the second provides usage direction. It is front-loaded with the core purpose and has no redundant text. Efficient and 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?

For a zero-parameter read tool, the description is remarkably complete: it enumerates all the data fields returned, names the dependent tools, and conveys the Gamemaster-specific context. Although there's no output schema, the description itself serves as a sufficient guide. It fits the tool's low 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?

No parameters exist, so the schema fully covers them (100% coverage). The baseline for 0-param tools is 4, and the description doesn't need to add parameter details. It adequately describes the tool's behavior without mentioning parameters.

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 reads the canvas state: whether a canvas is drawn, which scene is active, view position/zoom, and targets. It distinguishes itself from siblings by naming pan-camera, ping-canvas, and set-targets as consumers. No ambiguity about what it does.

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 instructs to call this before pan-camera, ping-canvas, or set-targets, which require the canvas. This gives clear when-to-use context. No exclusions, but the primary use cases are well-defined.

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

get-card-stackRead a card stackA
Read-onlyIdempotent

Read one card stack with its cards in order: name, suit, value, drawn, text, image and origin.

ParametersJSON Schema
NameRequiredDescriptionDefault
stackIdYesThe stack: id or exact name of the card stack
includeDrawnNoInclude drawn cards of a deck (default true)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds value by disclosing that cards are returned in order and enumerating the specific card fields (name, suit, value, drawn, text, image, origin), which is useful behavioral context beyond the 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?

The description is a single, front-loaded sentence that states the operation, scope, ordering, and output fields without any wasted words. Every part of the sentence contributes useful information.

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 read-only tool with two schema-documented parameters and strong annotations, the description covers the output structure and ordering. No additional return-format or side-effect guidance is needed given the annotations and 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 description coverage is 100%, so the schema already documents stackId and includeDrawn with clear meaning and defaults. The description does not add parameter-specific semantics beyond the schema, so the baseline score of 3 is appropriate.

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

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 a precise resource ('one card stack') and clarifies that it returns the stack's cards in order with named fields. This clearly distinguishes it from sibling tools like list-card-stacks (which lists stacks) and draw-cards (which modifies a stack by drawing from it).

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 reading a single card stack's contents, but it does not explicitly state when to prefer this tool over alternatives such as list-card-stacks or draw-cards. No exclusions or alternative tool mentions are provided, leaving the agent to infer the appropriate selection context.

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

get-characterGet characterA
Read-onlyIdempotent

Overview of one actor with few tokens: head values and the value block as the adapter of the game system reads them, every item with id, name and type (plus the fields the system marks as relevant, no descriptions), effects, actions and spellcasting where the system has them. Without an adapter for the game system only name, type and image are known, and notes says so. The actor is found by id, exact name or token id; similar names are suggested, never guessed. Fetch the full data of one item or effect with get-character-entity.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesId of the actor, its exact name (case does not matter) or the id of one of its tokens

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare the read-only and idempotent safety profile, and the description adds substantial behavioral context beyond annotations: the response shape varies by game-system adapter. It discloses that item descriptions are omitted, that adapter-less actors expose only name/type/image, and that similar names are suggested rather than guessed, preventing hallucinated lookups. This is meaningful behavioral disclosure beyond readOnlyHint/idempotentHint.

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

Conciseness5/5

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

The description is front-loaded with the core purpose — 'Overview of one actor with few tokens' — and every subsequent sentence contributes information about output contents, adapter fallback, identifier semantics, or the sibling tool for full entity data. It is dense but not bloated, and avoids repeating schema text or annotation hints.

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

Completeness5/5

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

With no output schema present, the description carries the burden of explaining the return contents, and it does so thoroughly: head values, adapter-specific value block, item fields, effects/actions, spellcasting, and the minimal fallback case. It also covers identifier lookup behavior and routes to get-character-entity for deeper item data, giving an agent everything needed to call the tool correctly for a single-parameter read-only 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?

The schema already documents the identifier parameter at 100% coverage, including 'Id of the actor, its exact name (case does not matter) or the id of one of its tokens'. The description adds useful semantic behavior beyond the schema, namely that similar names are suggested and never guessed. It does not need to repeat the schema text, but the added matching behavior pushes it above baseline.

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

Purpose5/5

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

States the tool returns an 'Overview of one actor' and enumerates the included data: head values, adapter-dependent value block, items with id/name/type, effects, actions, and spellcasting. It also differentiates itself from get-character-entity by explicitly pointing there for full item/effect data. The verb and resource are specific enough that an agent can identify what this tool does at a glance.

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

Usage Guidelines4/5

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

The description explains the identifier resolution behavior and names get-character-entity as the alternative when full item/effect data is needed. It also tells the agent when results will be minimal ('Without an adapter for the game system only name, type and image are known'), setting expectations for sparse output. It does not enumerate all possible sibling alternatives like list-characters, so the routing guidance stops just short of exhaustive.

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

get-character-entityGet character entityA
Read-onlyIdempotent

Full data of one item, action or effect of an actor: description, all system data (credentials removed, game data such as save or activity data kept) and its effects. Looks among items first (id or exact name), then actions, then effects; two entries of the same name are reported with their ids instead of picking one.

ParametersJSON Schema
NameRequiredDescriptionDefault
entityIdentifierYesId or exact name of an item, the name of an action, or the id or name of an effect
characterIdentifierYesThe actor. Id of the actor, its exact name (case does not matter) or the id of one of its tokens

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: credentials are removed from system data, game data is kept, lookup order is items→actions→effects, and duplicate names are reported with ids instead of picking one. This goes beyond what annotations provide.

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

Conciseness5/5

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

The description is two sentences with no wasted words. The core purpose is front-loaded, and the second sentence packs three important behavioral details (lookup order, data filtering, duplicate handling) efficiently. Every clause earns its place.

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

Completeness4/5

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

For a read-only lookup tool with 100% schema coverage and no output schema, the description is nearly complete. It explains what data is returned (description, system data with credentials removed, effects), how lookup works, and how duplicates are handled. The only minor gap is not describing the exact response shape, but the absence of an output schema and the read-only nature make this 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 description coverage is 100%, so the schema already documents both parameters well. The description adds context about what entityIdentifier can be (id or exact name for items/effects, name for actions) and that characterIdentifier accepts id, exact name, or token id, but this largely mirrors the schema. Baseline 3 is appropriate since the schema does the heavy lifting.

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

Purpose5/5

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

The description states a specific verb ('get') and resource ('full data of one item, action or effect of an actor'), and clearly distinguishes it from siblings like get-character, get-document, and get-compendium-item by specifying the entity types and actor scoping. It also explains the lookup order (items first, then actions, then effects), which removes ambiguity about what the tool returns.

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

Usage Guidelines4/5

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

The description gives clear context on when to use this tool: to retrieve full data for an actor's item, action, or effect. It doesn't explicitly name alternatives or exclusions, but the lookup order and the note about duplicate names provide practical guidance. Sibling tools like get-character and get-document are implicitly distinguished by the entity types covered.

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

get-combatGet combat encounterA
Read-onlyIdempotent

Read one combat encounter: the turn order with initiative, hidden and defeated flags, and the current turn with its actor (values from the game system adapter where there is one), token, conditions and who comes next.

ParametersJSON Schema
NameRequiredDescriptionDefault
combatIdNoId of the combat encounter, as list-combats shows it. Without it the active encounter is used.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context beyond that by specifying the returned fields, including the nuance that actor values come from the game system adapter 'where there is one'.

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 focused sentence that front-loads the core action and resource, then efficiently lists the key returned data. Every clause earns its place, with no redundant or filler content.

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 read operation with one optional parameter, full schema coverage, and strong read-only/idempotent annotations, the description provides everything an agent needs: what is read, what data comes back, and how to target a specific encounter. The absence of an output schema is compensated by the explicit field enumeration.

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

Parameters3/5

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

Schema description coverage is 100%, so the single combatId parameter is already fully documented in the schema, including the active-encounter fallback. The description adds no additional parameter-level meaning, which is acceptable given the complete 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 uses a specific verb ('Read') and resource ('one combat encounter'), then enumerates the exact contents returned: turn order, initiative, hidden/defeated flags, and current turn details. This clearly distinguishes it from siblings like list-combats (listing), create-combat, and change-combat-turn.

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 context is clear: this is the read operation for a single combat encounter, and the optional combatId parameter points to list-combats as the source of the ID. It does not explicitly state when not to use it, but the read-only nature and sibling names make the usage boundaries reasonably obvious.

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

get-compendium-entry-fullGet compendium entry in fullA
Read-onlyIdempotent

One compendium entry of any document type with everything needed before copying it into the world: name, type, compendium label, description, system data, every contained item with its system data, the effects, a short summary and the whole document. Credentials are removed. A missing compendium or entry is reported as such.

ParametersJSON Schema
NameRequiredDescriptionDefault
packIdYesId of the compendium
entryIdYesId of the entry in it

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish read-only and non-destructive behavior, so the description adds value beyond them by disclosing two important runtime behaviors: credentials are removed from the returned data, and a missing compendium or entry is explicitly reported as such. This gives the agent useful expectations about data sanitization and error reporting.

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 focused sentence that front-loads the core purpose and then lists the returned content. The list is long but purposeful, since it effectively substitutes for an output schema. It contains no filler or repetition of the title beyond the necessary framing.

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

Completeness5/5

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

With no output schema, the description compensates well by enumerating exactly what the agent receives: document metadata, system data, contained items, effects, summary, and full document. It also covers edge behavior for missing resources and credential removal, making it sufficiently complete for safe 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?

Both parameters are fully documented in the input schema with simple descriptions ('Id of the compendium', 'Id of the entry in it'), so the schema carries the burden. The tool description does not add parameter-level guidance, but it also does not need to because the parameters are self-explanatory and coverage is 100%.

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

Purpose5/5

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

The description names the specific operation and resource: a single compendium entry retrieved in full, for any document type. The enumerated payload contents (name, type, compendium label, description, system data, contained items, effects, summary, full document) makes the scope concrete and distinguishes it from narrower siblings like get-compendium-item.

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

Usage Guidelines3/5

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

The phrase 'before copying it into the world' gives a clear intended use case, and the mention of 'everything needed' implies this is the retrieval-for-copy tool. However, it does not explicitly state when to use this over alternatives such as get-compendium-item or list-compendium-entries, nor does it state any exclusions.

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

get-compendium-itemGet compendium itemA
Read-onlyIdempotent

Retrieve one compendium entry in full: name, type, description, image, system data, contained items and effects and the whole document. compact returns key values, properties and at most five contained items instead, which is enough to decide between candidates.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesId of the entry inside that compendium
packIdYesId of the compendium that holds the entry
compactNoAnswer with key values, properties and up to five contained items only, leaving out the long description and the raw data

TDQS

A4/5.0
Behavior4/5

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

The read-only, idempotent, and non-destructive annotations already convey the safety profile; the description adds transparency about the output shape and the compact-mode cutoff. There is no contradiction with 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?

A single focused sentence front-loads the main purpose, then efficiently covers the output fields and the compact alternative. No filler is present and every clause contributes useful 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?

With no output schema, the description does a good job explaining what a full and a compact response contain. It could go further by clarifying how it differs from get-compendium-entry-full or what errors may occur, but for a read-only lookup the essentials are 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 description coverage is 100%, so the schema already documents itemId, packId, and compact. The description mostly restates the compact flag behavior without adding new parameter-level meaning, so it meets the baseline but does not exceed it.

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

Purpose4/5

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

The description uses a specific verb-resource pair ('Retrieve one compendium entry') and enumerates the returned fields for both full and compact modes. However, it does not explicitly differentiate itself from the sibling tool get-compendium-entry-full, which could be confused with it.

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

Usage Guidelines4/5

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

The description gives clear context for choosing the compact form: it is 'enough to decide between candidates.' It does not, however, mention alternative tools or explicitly state when to prefer this tool over a sibling such as get-compendium-entry-full.

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

get-current-sceneCurrent sceneA
Read-onlyIdempotent

Describe the scene that is active for everyone: size, background, navigation, how many walls, lights, sounds and notes it holds, its notes, and with includeTokens its tokens. Hidden tokens are left out of the list and the summary unless includeHidden is set.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeHiddenNoInclude hidden tokens (default: false)
includeTokensNoList the tokens on the scene (default: true)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds useful behavioral context beyond annotations by explaining that hidden tokens are omitted unless includeHidden is set and that tokens are only listed when includeTokens is true.

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

Conciseness5/5

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

A single front-loaded sentence that conveys the tool's purpose, scope, and parameter-sensitive behavior without repetition or filler. Every clause adds relevant 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?

With no output schema, the description carries the burden of explaining return content, and it does so by listing the scene data fields (size, background, navigation, walls, lights, sounds, notes, tokens). It could be slightly more explicit about the output format, but for a read-only, parameter-free-required tool, this 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?

The schema fully describes both parameters (includeHidden and includeTokens) with defaults and explanations, so the baseline is 3. The description lightly reinforces these parameters but does not add meaningfully new semantic detail 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 ('Describe') and names a clear resource: the currently active scene. It also enumerates exactly what is included (size, background, navigation, counts, notes, tokens), making the purpose unmistakable and distinct from sibling tools like list-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 scene that is active for everyone' clearly signals when this tool is appropriate: when you need details of the current shared scene. It does not explicitly mention alternatives or exclusions, but the context is strong enough that an agent can infer when to invoke it.

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

get-documentRead one document of any typeA
Read-onlyIdempotent

Generic fallback: read one document of any type by uuid, or by documentType and id (with parentUuid for an embedded document, pack for a compendium), whole or only the given fields. A large answer comes in parts: call again with chunkStart and the fingerprint of the first part and join the parts. embedded "summary" shortens embedded collections to ids and names. Prefer get-character, get-current-scene, get-roll-table, get-compendium-item and get-token-details where they fit.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoId of the document, together with documentType
packNoCompendium id "package.name" to read from; compendiums are read only here
uuidNouuid of the document, e.g. "Actor.abc", "Scene.abc.Token.def", "Compendium.dnd5e.monsters.Actor.abc"
fieldsNoDotted paths to return, list positions as ".0" or "[0]" and "*" for every entry, e.g. "system.attributes.hp.value", "items.*.name". ["*"] returns all data
embeddedNoEmbedded documents in full or as ids and names; default include
maxCharsNoCharacter budget of the answer, 1000 to 200000; default 60000
chunkStartNoCharacter position to continue from, from the previous part
parentUuidNouuid of the document that holds an embedded one, e.g. "Actor.abc" for its items, "Scene.abc" for its walls
fingerprintNoFingerprint of the first part, so a change in between is noticed
documentTypeNoFoundry document name, e.g. "Actor", "JournalEntryPage", "Combat", "Wall"; with id when no uuid is given

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is known. The description adds genuinely new behavior beyond annotations: large answers come in parts requiring a second call with chunkStart and fingerprint, and embedded 'summary' shortens embedded collections to ids and names. No contradiction with 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?

Three sentences with no filler; each sentence earns its place. It front-loads 'Generic fallback', then covers identification, field selection, chunking behavior, embedded summaries, and preferred alternatives. Nothing is redundant.

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

Completeness4/5

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

For a 10-parameter tool with no output schema, the description covers identification modes, partial field selection, chunked responses, embedded summary behavior, and routing to specialized tools. Minor gaps remain, such as not explicitly stating that at least one identifier combination is required, but the schema descriptions fill most remaining 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%, so the baseline is 3. The description adds relational meaning beyond the schema by grouping parameters into identification modes (uuid vs documentType+id with parentUuid/pack) and by explaining the chunkStart/fingerprint continuation protocol. It does not re-explain every parameter, but the schema already does that.

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

Purpose5/5

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

The description opens with 'Generic fallback: read one document of any type by uuid, or by documentType and id', giving a specific verb, resource, and two identification modes. It also names specialized siblings to prefer, so the tool is clearly distinguished from get-character, get-roll-table, and similar tools.

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

Usage Guidelines5/5

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

It explicitly states 'Prefer get-character, get-current-scene, get-roll-table, get-compendium-item and get-token-details where they fit,' which tells the agent when to use alternatives. It also clarifies the choice between uuid and documentType+id, including parentUuid for embedded documents and pack for compendiums.

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

get-permissionsPermissionsA
Read-onlyIdempotent

Show what the AI is currently allowed to do in this world: the switch "Allow Write Operations", the level per document kind (scenes, playlists, journals, roll tables, actors, folders, compendiums: read only, create and change, or additionally delete), the release list of compendiums and the modules released to offer tools of their own. Deleting is off by default everywhere. Call this when an action was refused, to see which setting has to change.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safe read-only behavior is covered. The description adds useful context about what specific settings are reported and the default deletion policy, going beyond the 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?

The description is dense but not bloated; every sentence contributes either the output scope, the default values, or the triggering condition. The main purpose is front-loaded in the first sentence.

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

Completeness5/5

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

For a zero-parameter read-only inspection tool with no output schema, the description is complete: it lists the permission categories shown and the realistic trigger scenario. No additional context is needed for an agent to call it 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?

The tool has zero parameters, so the baseline is 4. The description appropriately focuses on what the tool reports rather than parameter details, which would be irrelevant here.

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 specific verb and resource: 'Show what the AI is currently allowed to do in this world,' then enumerates the specific permission categories. This clearly distinguishes it from sibling tools, none of which are about inspecting AI permissions.

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 call it: 'Call this when an action was refused, to see which setting has to change.' It also adds context about the default state ('Deleting is off by default everywhere'), giving the agent actionable guidance.

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

get-roll-tableRead a roll tableA
Read-onlyIdempotent

Read one roll table with its settings and every entry: id, range, weight, text and whether it is drawn. The entry ids are what update-roll-table needs.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableIdYesId or exact name of the table

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds value by disclosing what the response contains (settings and entries with fields) beyond the annotations, giving the agent a clear expectation of output structure.

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

Conciseness5/5

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

The description is two sentences with no wasted words. It front-loads the core action and uses the second sentence to provide a useful pointer about entry ids for update-roll-table, making every sentence earn 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 single-parameter read tool with no output schema, the description sufficiently states what is returned (settings and entries with fields) and why the data matters. It lacks only peripheral details like error cases or response formatting, which are not critical for a read-only tool with annotations covering safety.

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

Parameters3/5

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

Schema description coverage is 100% and the single parameter tableId is fully described in the schema as 'Id or exact name of the table'. The tool description does not add any additional parameter-level semantics, so the baseline 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 uses the specific verb 'Read' and clearly identifies the resource as 'one roll table' with 'settings and every entry'. It explicitly differentiates from sibling list-roll-tables by emphasizing the singular and detailed nature of the read, and even mentions the downstream need for update-roll-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 implies when to use the tool (when you need a single table's full entries and entry ids for update-roll-table) and the singular scope distinguishes it from list-roll-tables. However, it does not explicitly name alternatives or state when not to use it, leaving some inference to the agent.

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

get-scene-imageScene imageA
Read-onlyIdempotent

Take a picture of a scene so you can look at the map. Returns one image and, as JSON, every token with its number on the picture, name, grid cell, canvas position, size, disposition and hidden flag, plus the grid (type, cell size, distance) and how canvas pixels map to picture pixels. Grid labels on the picture count cells from 0 at the top left of the scene, the same numbers as the token list. When the GM views the scene, the rendered canvas is captured (background, tiles, drawings, token art; no lighting, fog or vision). Otherwise, or with mode "composed", the picture is the background with grid and numbered token markers. Read only.

ParametersJSON Schema
NameRequiredDescriptionDefault
gridNoDraw grid lines (square grids).
modeNoauto: capture the canvas when the GM views this scene, otherwise compose. canvas: only a capture, an error when the scene is not on the canvas. composed: always background plus markers.auto
formatNojpeg (every client) or webp (smaller).jpeg
regionNoOnly this part of the scene, in grid cells counted from 0 at the top left.
maxBytesNoLargest encoded size in bytes, 50000 to 3750000. Quality is lowered first, then the size.
gridLabelsNoWrite column numbers along the top and row numbers along the left edge.
maxDimensionNoLong edge of the picture in pixels, 256 to 4096. Never enlarged beyond the scene.
tokenMarkersNoDraw the token numbers of the list on the picture, coloured by disposition.
sceneIdentifierNoScene by id or name. Without it the scene that is active for everyone.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds substantial behavioral context beyond annotations: it discloses what the canvas capture includes (background, tiles, drawings, token art) and excludes (lighting, fog, vision), explains the composed mode fallback, and details the coordinate system (grid labels count from 0 at top left). It also reveals the maxBytes quality-lowering behavior. This is rich, non-obvious behavioral disclosure.

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

Conciseness4/5

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

The description is dense but well-organized: it front-loads the core purpose, then the return payload, then mode behavior, then coordinate system. Every sentence earns its place, though the return-payload enumeration is long. It could be slightly tighter, but the density is justified given the tool's complexity and 9 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?

For a tool with 9 parameters, no output schema, and nested objects, the description is remarkably complete. It covers the return format (image + JSON token list), the two rendering modes, the coordinate system, and the read-only safety profile. The only minor gap is not describing the exact JSON structure of the token list, but the description enumerates the fields (number, name, grid cell, canvas position, size, disposition, hidden flag) sufficiently for an agent to understand the output.

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 coordinate system ('Grid labels on the picture count cells from 0 at the top left of the scene, the same numbers as the token list') which directly clarifies the region parameter's semantics. It also explains the mode auto behavior in prose, reinforcing the schema enum descriptions. The description doesn't repeat every parameter but adds meaningful context for the most complex ones (region, mode, maxBytes).

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

Purpose5/5

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

The description opens with a specific verb and resource ('Take a picture of a scene so you can look at the map') and immediately distinguishes the tool's dual output: one image plus a JSON token list. It clearly separates this from sibling tools like get-canvas-view or list-scenes by emphasizing the map image and token metadata. The description is unambiguous about what the tool produces.

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 it ('so you can look at the map') and contrasts the two modes: canvas capture when the GM views the scene, composed background otherwise. It also names the alternative get-canvas-view implicitly by describing the canvas capture behavior. The mode parameter's auto behavior is fully explained, giving the agent clear decision criteria.

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

get-token-detailsToken detailsA
Read-onlyIdempotent

Read one token: position, size, appearance (rotation, scale, alpha, hidden, image), behaviour (disposition, elevation, rotation lock) and its actor with whether it is linked. Hidden tokens are read too. No actor values such as hit points; get-character reads those.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenIdYesId of the token on that scene, as get-current-scene lists it. Not a name, not an actor id.
sceneIdentifierNoScene of the token, by id or name. Without it the scene that is active for everyone is used; every answer names the scene.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark it read-only and idempotent. The description adds meaningful behavior beyond that: hidden tokens are included in reads, the exact field scope is disclosed, and the exclusion of actor statistics is stated. No contradiction with 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?

Three short sentences carry a lot of signal with no filler. The main verb and resource are front-loaded, and the parenthetical field lists are compact and useful rather than redundant.

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?

Even without an output schema, the description tells the agent exactly what will be returned and what will not, and the input schema covers parameter usage. The only omitted item is error behavior, which is not essential for a simple, read-only, idempotent lookup.

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 applies; both tokenId and sceneIdentifier are fully documented in the schema. The tool description does not need to restate the parameters, and it adds no extra semantics beyond the conceptual 'token' and 'actor' scope.

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

Purpose5/5

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

The description starts with a concrete verb and resource ('Read one token') and precisely enumerates what is returned: position, size, appearance, behaviour, and actor-link status. It also names get-character as the sibling that covers actor values, so the agent can distinguish it from nearby read 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?

It implies when to use the tool (reading token presentation/behaviour data) and explicitly says when not to use it for actor stats ('No actor values such as hit points; get-character reads those'). It could more explicitly name alternatives for scene/position queries, but the guidance is clear.

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

get-world-infoWorld informationA
Read-onlyIdempotent

Read the basics of the Foundry world that is open right now: its id and title, the game system and its version, the Foundry version, how many users exist, and who is logged in. Use it first to learn which world and system you are working with.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds value by stating the operation is a read of the currently open world and listing the exact fields returned, which helps set agent expectations about the response.

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, well-structured sentence states the action, the target resource, the returned fields, and the recommended usage. Every part earns its place with no filler.

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

Completeness5/5

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

For a zero-parameter read-only tool, the description fully covers what the agent needs: what the tool does, what data it returns, and when to invoke it. Annotations cover the safety semantics, and there is no output schema to contradict or supplement.

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

Parameters4/5

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

The tool has zero parameters, so there is no parameter semantics burden on the description. The baseline of 4 applies, and the description appropriately does not invent unnecessary parameter guidance.

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 ('basics of the Foundry world that is open right now'), then enumerates exactly what is returned: world id/title, game system/version, Foundry version, user count, and logged-in users. This clearly distinguishes it from sibling tools like list-users or list-settings.

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

Usage Guidelines4/5

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

The description gives explicit usage context: 'Use it first to learn which world and system you are working with.' This tells the agent when the tool is appropriate. It does not name alternatives or exclusions, but for a simple read-only information tool that is a minor gap.

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

get-world-timeRead the world timeA
Read-onlyIdempotent

Read Foundry's world time in seconds, formatted by the world's calendar when one is configured, and whether the game is paused.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful behavioral detail the annotations do not: the returned time is in seconds, formatting may change when a calendar is configured, and the pause state is included. Since there is no output schema, this added return-value context is valuable, though the calendar-formatting behavior is slightly under-specified.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that names the action first and packs all essential return information into a compact structure. Every clause earns its place with no filler or repetition of annotations.

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 parameterless read-only tool with rich annotations, the description is complete enough: it states what is read, the units, the conditional calendar behavior, and the additional pause-state output. No output schema exists, but the description adequately covers what an agent needs to know before calling 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?

The tool has zero parameters and schema coverage is 100%, so there is nothing for the description to add about parameter meaning. The baseline for a parameterless tool is 4, and the description correctly avoids inventing parameter details.

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 action ('Read'), the resource ('Foundry's world time'), and the key output components (seconds, calendar formatting, pause state). This distinguishes it from sibling mutating tools like advance-world-time and set-game-pause without needing to open their definitions.

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 establishes clear context: use this tool when you need to read the current world time or pause state. It does not explicitly contrast with advance-world-time or set-game-pause, but the read-only framing makes the intended usage obvious and there are no misleading exclusions.

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

import-from-compendiumImport from compendiumA

Copy a document out of a compendium into the world: playlists, scenes, journals, actors, roll tables, items, macros, cards. Always assigns a FRESH id, so it can never overwrite an existing world document. That is the difference to dragging an entry out by hand, which keeps the id and silently replaces whatever carries it. Names are matched as a whole; an ambiguous name is refused with the ids.

ParametersJSON Schema
NameRequiredDescriptionDefault
packIdYesId of the compendium to copy from, for instance my-module.music
entryIdNoId of the entry, instead of entryName
newNameNoName the copy gets in the world
entryNameNoWhole name of the entry, case does not matter; a name shared by several entries is refused with their ids
folderPathNoWorld folder for the copy, levels separated by slashes such as "Places/Harbour"; missing levels are created

TDQS

A4/5.0
Behavior4/5

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

Annotations already communicate non-read-only, non-destructive, and non-idempotent hints. The description goes beyond these by explaining the fresh-id guarantee, the never-overwrite behavior, and the exact handling of ambiguous names (refused with ids). No contradiction with annotations exists, and this extra disclosure helps the agent predict side effects.

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

Conciseness5/5

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

The description is compact and front-loads the main action, then adds the critical safety property, then covers name-handling nuance. Every sentence earns its place; there is no filler or repetition of the tool title.

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

Completeness4/5

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

With 5 parameters and complete schema descriptions, plus the extra behavioral context, the tool is reasonably self-contained. The only notable gap is the lack of a success/return description and no acknowledgment of the specialized sibling tool, but for the complexity present the description is 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%, so the baseline is 3. The description does reinforce name-matching behavior with 'Names are matched as a whole; an ambiguous name is refused with the ids', but this largely duplicates what the schema already says for entryName. It does not add meaningful new semantics for packId, entryId, newName, or folderPath 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 says exactly what the tool does: 'Copy a document out of a compendium into the world' and enumerates the supported types (playlists, scenes, journals, actors, roll tables, items, macros, cards). It also draws a clear contrast with manual drag-and-drop, giving the agent a way to distinguish this operation from a common alternative.

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 gives a clear context (copying from compendium to world) and an implicit reason to prefer this over manual drag because it never overwrites. However, it does not explicitly mention any sibling tools or conditions for when to choose this over a more specialized import like create-actor-from-compendium or export-to-compendium, so selection guidance is incomplete.

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

journal-add-pageAdd a pageA

Add a new text page at the end of a journal, with the HTML stored as sent.

ParametersJSON Schema
NameRequiredDescriptionDefault
htmlYesHTML content, stored as sent.
nameYesName of the new page.
journalIdYesId of the journal, from list-journals.

TDQS

A3.7/5.0
Behavior4/5

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

The annotations already indicate a mutating, non-idempotent operation; the description adds the non-obvious behavioral guarantee that the HTML is stored exactly as sent and that the page is appended at the end. No contradiction with the annotations exists.

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

Conciseness5/5

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

The description is one front-loaded sentence with no filler words. Every part, especially the end-position placement and stored-as-sent note, contributes meaningful information.

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

Completeness3/5

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

Given its simplicity and fully documented schema, the description is mostly sufficient to invoke the tool correctly. It is not fully complete because there is no guidance about return values and no mention of sibling alternatives like journal-append-page or journal-page-from-file, which an agent would need for confident selection.

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 already describes all three parameters at 100% coverage, so the description carries little parameter burden. The phrase 'HTML stored as sent' reinforces the meaning of the html parameter without adding new information about journalId or name beyond the schema values.

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

Purpose4/5

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

The description uses a specific verb and resource: it adds a new text page, at the end of a journal, and preserves HTML exactly as sent. It is clear enough to understand the operation, but it does not distinguish itself from the sibling tool journal-append-page, whose name suggests nearly the same behavior, so it misses the sibling-differentiation bar for a 5.

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

Usage Guidelines3/5

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

The phrase 'Add a new text page at the end of a journal' and the HTML-stored-as-sent detail imply the intended use case clearly. However, there is no explicit guidance about when to use this tool instead of journal-append-page, journal-set-page, journal-page-from-file, or replace-journal-page.

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

journal-append-pageAppend to a pageA

Append HTML to the end of a text page. Meant for content too large for one message: create the page with the first part, then append the rest in pieces of about 40000 characters. The pieces are joined as sent, so cut them between tags. Returns the new length.

ParametersJSON Schema
NameRequiredDescriptionDefault
htmlYesThe HTML piece to append.
pageIdYesThe text page to append to.
journalIdYesId of the journal, from list-journals.

TDQS

A4.5/5.0
Behavior4/5

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

The annotations already indicate readOnlyHint=false (mutation) and destructiveHint=false (non-destructive), so the main behavior is known. The description adds valuable detail: that pieces are joined as sent (no automatic formatting), the practical size limit, and the return value (new length). It does not cover potential edge cases like what happens on failure, but the mutation context 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 compact and well-structured: it states the action, the intended use case, the chunk size, and the return value in two sentences. Every sentence adds meaningful guidance, with the most critical information (purpose) front-loaded.

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

Completeness5/5

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

For a simple append operation with three required parameters and no output schema, the description covers the necessary context: what it does, when to use it, how to use it (chunking), and what the return is. No missing pieces that would cause mis-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%, so each parameter is already documented. The description adds no extra meaning to the parameters beyond the schema. However, the description does imply that the 'html' parameter should be a well-formed piece and that it will be appended verbatim, which is a mild addition.

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 ('append'), the resource ('HTML to the end of a text page'), and the specific purpose (handling large content). It distinguishes itself from sibling tools like 'journal-add-page' (which likely adds a new page) and 'journal-set-page' (which sets content).

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 explains when to use this tool: for content too large for one message, and provides a concrete workflow (create page, then append in pieces of ~40000 characters). It also implies when not to use it (for single, small content, use create/update instead). The 'cut them between tags' instruction gives clear guidance for proper usage.

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

journal-createCreate a journalA

Create a journal with exactly the given pages, in order, each stored as HTML exactly as sent (headings, images and @UUID links included). No template page is added. Only Gamemasters can see it. With folderName the journal goes into that journal folder (by id or exact name), which is created when it does not exist; without folderName it is created outside any folder. Returns the new journal id.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the journal.
pagesYesThe pages, in order. At least one.
folderNameNoJournal folder to put it in, by id or exact name; created when missing. Omit for no folder.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only indicate not read-only and not idempotent, so the description carries the behavioral load. It discloses GM-only visibility, automatic folder creation as a side effect, exact HTML storage, absence of a template page, and the returned journal id—valuable beyond structured fields.

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

Conciseness5/5

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

Four dense sentences, each earning its place: creation semantics, no-template clarification, GM visibility, folder behavior, and return value. No filler or repetition of schema 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 3-parameter create tool with no output schema, the description covers the essential runtime behavior: storage fidelity, permissions, folder handling, and the return value. No critical calling information is missing.

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

Parameters5/5

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

Although schema coverage is 100%, the description adds critical semantic detail: pages are stored in order and HTML exactly as sent, and folderName accepts id or exact name, auto-creates the folder, and has a defined omit-behavior. This goes well beyond the schema field 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 states a specific verb and resource ('Create a journal') and immediately gives differentiating detail: exactly the given pages, in order, stored as HTML exactly as sent, with no template page added. This separates it from update/add/append/page tools without needing to open schemas.

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 for when to use it: creating a new journal with exactly specified pages, including folder placement and the no-template behavior. It does not explicitly name sibling alternatives or state when not to use it, so it misses the highest 'explicit alternatives' bar.

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

journal-deleteDelete a journalA
DestructiveIdempotent

Delete a whole journal with all its pages for good. Needs the journal permission level "create, change and delete", which is off by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
journalIdYesId of the journal, from list-journals.

TDQS

A4/5.0
Behavior4/5

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

Beyond the annotations (destructiveHint=true), the description adds that the deletion is permanent ('for good') and cascades to all pages, plus the specific permission permission needed. This is useful behavioral context beyond what annotations already provide and does not contradict any annotation.

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

Conciseness5/5

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

Two sentences with no filler. The primary action and scope are front-loaded, followed by the key prerequisite. Every sentence contributes meaningful information.

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

Completeness4/5

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

For a one-parameter mutation with a destructive hint, the description covers scope, permanence, and permission requirements. No output schema exists, so return-value details are not needed. It is adequate and complete 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?

The schema already fully describes the sole parameter journalId as 'Id of the journal, from list-journals.' The description offers no additional parameter-level semantics; schema coverage is 100%, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('Delete'), a resource ('a whole journal'), and explicitly clarifies scope ('with all its pages'), which clearly distinguishes it from journal-delete-page. The scope is precise enough for an agent to know exactly what object and scope the operation acts on.

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 gives clear context about scope and prerequisites: it requires the journal permission level 'create, change and delete' and notes it is off by default. However, it does not explicitly mention alternatives or exclusions, such as pointing to journal-delete-page for individual pages; the guidance is implied rather than stated.

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

journal-delete-pageDelete a pageA
DestructiveIdempotent

Delete one page of a journal for good. Needs the journal permission level "create, change and delete", which is off by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesId of the page, from list-journals.
journalIdYesId of the journal, from list-journals.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=true. The description adds the key behavioral fact that deletion is permanent ('for good') and the permission requirement. It does not describe what happens to the page's contents, whether the action can be undone, or any side effects on linked references. With annotations covering the destructive nature, the description adds some value but not rich 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.

Conciseness5/5

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

Two sentences with no wasted words. The core action is front-loaded ('Delete one page of a journal for good'), and the permission requirement is stated concisely. Every sentence earns its place.

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

Completeness3/5

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

For a destructive single-page delete with two well-documented parameters, the description is mostly adequate. However, it doesn't mention what happens to the page's content, whether the operation can be undone, or any side effects on journal structure. The permission note is useful, but an agent might benefit from knowing the deletion is irreversible beyond the word 'for good' and the destructiveHint annotation.

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 both parameters (pageId and journalId) are already documented in the schema. The description adds no additional parameter-level meaning beyond what the schema provides. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description states a specific verb and resource: 'Delete one page of a journal for good.' This clearly identifies the action and target. It is distinguishable from sibling tools like journal-delete (which deletes a whole journal) and journal-set-page (which modifies pages), though it doesn't explicitly name those siblings.

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

Usage Guidelines3/5

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

The description implies when to use it: when you need to permanently remove a single journal page. It does not explicitly state when not to use it or name alternatives like journal-delete for deleting the entire journal. The permission requirement ('Needs the journal permission level...') provides some context for when it can be used, but no explicit exclusions or alternative routing.

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

journal-page-from-fileFill a page from a fileA
Destructive

Write an HTML file that is already in Foundry's data directory into a page. The browser fetches the file from the Foundry server itself and nothing of it crosses the bridge, so any size works. With pageId that text page is overwritten (an unknown pageId is an error); without it a new text page is added at the end.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath of the file relative to the Foundry data directory, e.g. "Bilder/Kampagnen/kap2.html".
pageIdNoText page to overwrite. Omit to add a new page.
pageNameNoName of the new page; only used without pageId. Default: the file name.
journalIdYesId of the journal, from list-journals.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already signal destructiveness, and the description goes beyond that by specifying exactly what happens: an existing page is overwritten when pageId is provided, an unknown pageId errors, and otherwise a new page is appended. It also discloses the fetch-local-from-server mechanism and the 'nothing crosses the bridge' detail, which is useful behavioral context.

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

Conciseness5/5

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

Three sentences with no filler: the main purpose comes first, the distinctive server-side fetch behavior is second, and the pageId-dependent behavior is third. Every sentence contributes essential information and the structure is logical and easy to scan.

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

Completeness4/5

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

The description covers the tool's core behavior, preconditions (file already in data directory), destructive overwrite case, and the new-page fallback. With full schema coverage and the required parameters documented, this is sufficiently complete for correct invocation, though it does not describe return values or all possible error modes beyond unknown pageId.

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 schema already documents each parameter. The description adds meaning by clarifying that pageId selects an overwrite targetament, that omitting it appends a new page, and that the path is relative to the data directory. This goes beyond the raw schema descriptions without restating them.

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

Purpose5/5

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

The description opens with a concrete action: 'Write an HTML file that is already in Foundry's data directory into a page.' It clearly distinguishes this tool from generic journal page tools by explaining the file-based mechanism, the overwrite-vs-add behavior, and the 'any size works' guarantee. This is specific enough to tell it apart from siblings like journal-add-page or journal-set-page.

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

Usage Guidelines4/5

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

The description explains the core usage context: use this tool when you want to put an existing HTML file from Foundry's data directory into a journal page. It also clarifies the branch behavior for with/without pageId. It does not explicitly name alternatives or state when not to use it, 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.

journal-renameRename a journalB
Idempotent

Give a journal a new name.

ParametersJSON Schema
NameRequiredDescriptionDefault
newNameYesThe new name.
journalIdYesId of the journal, from list-journals.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true, so the agent knows this is a safe, idempotent mutation. The description adds no behavioral context beyond the annotations, but it doesn't contradict them either. It doesn't mention whether the rename affects references to the journal, which could be useful context.

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

Conciseness4/5

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

The description is a single, efficient sentence with no wasted words. It's front-loaded with the action and resource. It could arguably be more informative, but for a simple rename operation, it's appropriately concise.

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

Completeness3/5

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

For a simple two-parameter rename operation with full schema coverage and annotations covering safety, the description is mostly complete. However, it doesn't mention whether the rename is reflected in references or links to the journal, which could be relevant in a VTT context where journals are often linked to actors, quests, or scenes.

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. The description adds no additional meaning beyond what the schema provides. Baseline 3 is appropriate since the schema does the heavy lifting.

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

Purpose4/5

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

The description 'Give a journal a new name' clearly states the verb (rename) and resource (journal), and the title reinforces it. It doesn't explicitly distinguish from sibling tools like journal-create or journal-set-page, but the action is specific enough that an agent can infer the purpose.

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

Usage Guidelines3/5

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

The description implies when to use it (when you want to rename a journal), but it doesn't explicitly state when not to use it or mention alternatives. The sibling list includes journal-create, journal-delete, and journal-set-page, but the description doesn't guide the agent toward or away from them.

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

journal-rewrite-imagesPoint images to local filesA
DestructiveIdempotent

Replace external image addresses in text pages with local paths, for imported adventures that load their images from a CDN. Every img whose src starts with urlPattern (ignoring case) gets localPrefix followed by the file name of the old address. Runs inside Foundry. Use dryRun first.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoOnly report what would change, without writing (default false). Run this first.
pageIdNoOnly this text page. Omit for every text page of the journal.
journalIdYesId of the journal, from list-journals.
urlPatternYesThe address prefix to replace, taken literally, e.g. "https://cdn.example.com/img/".
localPrefixYesThe folder the file names go under, e.g. "Bilder/Kampagnen/Abenteuer".

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructive and idempotent hints. The description adds value by specifying the transformation rule: 'Every img whose src starts with urlPattern (ignoring case) gets localPrefix followed by the file name of the old address.' This clarifies the case-insensitive matching and the exact replacement behavior, going beyond the schema and 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?

Three sentences, each carrying essential information: purpose, transformation rule, and environment/safety. No filler, and the purpose is front-loaded before details.

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 has five parameters, full schema coverage, and annotations covering destructiveness and idempotency. The description explains the core behavior and the dryRun safety step. It could mention return values or edge cases (e.g., pages with no matches), but these are not essential for correct invocation given the schema richness.

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 descriptive field explanations, so the baseline is 3. The description adds the case-insensitive matching rule and file-name derivation, which enriches understanding of urlPattern and localPrefix, but not substantially beyond the schema's own descriptions.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Replace external image addresses in text pages with local paths.' It further scopes to imported adventures loading from a CDN and specifies Foundry, making it clearly distinct from sibling tools like world-rewrite-paths or journal-set-page.

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

Usage Guidelines4/5

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

It gives a clear context for when to use it ('for imported adventures that load their images from a CDN') and includes a strong safety instruction ('Use dryRun first'). It does not explicitly mention alternatives or when not to use it, but the stated use case is specific 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.

journal-set-pageReplace a pageA
DestructiveIdempotent

Replace the whole HTML content of a text page with the given HTML, stored as sent. Nothing is appended or wrapped. For content larger than one message, write the first chunk here and add the rest with journal-append-page, or use journal-page-from-file.

ParametersJSON Schema
NameRequiredDescriptionDefault
htmlYesThe new HTML content of the page.
pageIdYesId of the page, from list-journals.
journalIdYesId of the journal, from list-journals.

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the destructive/idempotent annotations, it discloses that the HTML is stored exactly as sent, that the entire page content is replaced, and that no wrapping or appending occurs. This tells an agent exactly what side effect to expect.

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 short sentences lead with the core operation, then state the boundary, then give alternatives. There is no redundant or generic filler.

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

Completeness5/5

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

With only three required parameters, full schema coverage, and annotations that already define danger (destructive), the description provides the remaining operational context an agent needs to call the tool correctly. It even answers the likely 'what about large HTML?' question.

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 parameters are already documented. The description adds the useful nuance that html must be the full replacement content, stored verbatim rather than modified into a wrapper.

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 first sentence names the exact operation ('Replace the whole HTML content...') and the text-page resource. 'Nothing is appended or wrapped' explicitly separates it from content-writing siblings such as journal-append-page and journal-page-from-file.

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

Usage Guidelines5/5

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

It gives concrete guidance on when this tool is appropriate and what to do instead for larger content: write the first chunk here and append the rest, or use journal-page-from-file. This is direct routing advice rather than a general hint.

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

journal-split-pageSplit a page at headingsA
Destructive

Split a large text page into one page per section, cut at headings, inside Foundry so the content never crosses the bridge. The markup of each section is kept as it was. Content before the first heading becomes a page of its own. The new pages appear right behind the source page, which is kept unless deleteOriginal is true.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNoSplit at headings h1 up to this level, 1 to 6 (default 1). Use 2 when sections are h2.
pageIdYesThe text page to split.
journalIdYesId of the journal, from list-journals.
namePrefixNoPut this in front of every new page name, e.g. "Chapter 2:".
deleteOriginalNoDelete the source page afterwards (default false). Check the result first.

TDQS

A4.1/5.0
Behavior5/5

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

Annotations only indicate destructive behavior and non-readonly, but the description adds rich behavioral detail: markup is preserved, content before the first heading becomes its own page, new pages appear right behind the source, and the source is kept unless deleteOriginal is true. This goes well beyond the structured 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?

The description is four sentences with no filler. It front-loads the core action, then adds meaningful behavioral details in a logical order.

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 5 parameters and no output schema, the description covers the main behavior, ordering, markup preservation, and deletion semantics. It is slightly reliant on understanding the 'bridge' concept and does not explain naming or return behavior, but those are minor gaps.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all five parameters. The description adds a bit of context around deleteOriginal and the heading-based split, but it does not substantially enrich parameter meaning beyond the schema.

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

Purpose4/5

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

The description states a specific verb and resource: split a large text page into one page per section at headings. It is clearly distinct from sibling operations like journal-delete-page or journal-add-page, though it does not explicitly name an alternative.

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

Usage Guidelines4/5

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

The description gives clear context for when to use this tool: when a text page is large and divided by headings, and when the split should happen inside Foundry. It does not explicitly state exclusions or name alternative tools, so it falls short of a 5.

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

list-actor-ownershipList actor ownershipA
Read-onlyIdempotent

Show which level every player effectively has on actors, and whether it is set for that player or comes from the default level of the actor. One actor or all, one player or all; Gamemasters are left out because they own everything.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorIdentifierNoOne actor. Id of the actor, its exact name (case does not matter) or the id of one of its tokens; "all" or left out lists every actor
playerIdentifierNoOnly this player, by id or exact name

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile needs no repetition. The description adds genuine behavioral context beyond annotations: the output distinguishes explicitly-set levels from inherited defaults, and Gamemasters are silently excluded ('Gamemasters are left out because they own everything'). This is exactly the kind of non-obvious behavior an agent needs to know.

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 zero waste. The core purpose is front-loaded in sentence one, and sentence two earns its place by covering scope options and the GM exclusion. Every clause carries information an agent needs.

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?

Even without an output schema, the description conveys the essential return semantics — effective level per player per actor plus whether the level is explicit or inherited from the actor default. Combined with two optional, fully documented parameters and safety annotations, the definition is complete for a read-only listing tool. Only minor details like the level format are unspecified.

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 fully documents both parameters (identifier forms, 'all'/omitted semantics for actorIdentifier, and player filtering). The description's 'One actor or all, one player or all' merely restates the schema's scope without adding new semantic detail, so the baseline 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 uses a specific verb ('Show') with a clear resource ('which level every player effectively has on actors') and adds the distinguishing detail of effective vs. default levels. This cleanly differentiates it from the write-side siblings assign-actor-ownership and remove-actor-ownership, and from the broader get-permissions tool.

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 scope guidance ('One actor or all, one player or all') gives an agent a clear sense of the tool's flexibility, and the read-only nature is implied. However, the description never explicitly names alternatives or states when-not-to-use it (e.g., 'to change ownership, use assign-actor-ownership'). Usage is inferable from sibling names rather than stated.

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

list-canvas-elementsList walls, lights and other canvas elementsA
Read-onlyIdempotent

List the walls (with doors), lights, sounds, regions (with behaviors), tiles and drawings of a scene, with ids and their main fields. Filter by type, by an area in pixels or to doors only. Works without a drawn canvas.

ParametersJSON Schema
NameRequiredDescriptionDefault
rawNoThe stored Foundry data of each element instead of the summary
limitNoHow many, 1 to 500; default 100
boundsNoOnly elements touching this rectangle in pixels: { x, y, width, height }
offsetNoSkip this many, for the next page
doorsOnlyNoOnly walls that are doors
elementTypesNoOnly these types; default all
sceneIdentifierNoScene id or name; default the scene that is active for everyone

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context beyond the annotations: it lists the exact element types returned, notes that results include 'ids and their main fields,' and highlights the unusual ability to work without a drawn canvas. No contradictions with 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?

Three short sentences pack in the resource scope, filtering options, and an important edge-case cue. Every sentence earns its place, and the core action is front-loaded.

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

Completeness4/5

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

The description is complete enough for a 7-parameter read-only tool with no output schema. It communicates element types, summary vs. raw data is implied by the raw parameter in the schema, filtering dimensions, and the 'works without a drawn canvas' behavior. It could be more explicit about pagination and the exact return shape, but the schema covers parameters and the summary field note is 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 description coverage is 100%, so the schema fully documents all seven parameters. The description adds a helpful summary of filter semantics (type, area in pixels, doors only) that maps to elementTypes, bounds, and doorsOnly, but does not provide parameter-level detail beyond what the schema already contains. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb ('List') and a well-defined resource: canvas elements of a scene, enumerating wall, light, sound, region, tile, and drawing types. It clearly distinguishes from sibling mutation tools (create/update/delete-canvas-elements) and the view tool (get-canvas-view). The added context 'Works without a drawn canvas' further clarifies the tool's 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?

Provides clear context on when the tool is appropriate by listing filtering capabilities and noting that it works without a drawn canvas eligibility. Does not explicitly name alternative tools or exclusion conditions, so it misses the top score but is still well above average guidance.

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

list-card-stacksList card stacksA
Read-onlyIdempotent

List the card decks, hands and piles of the world with their card counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOnly this type

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds useful output expectations by mentioning 'card counts' and enumerating the categories of stacks, going beyond the structured annotations without contradicting them.

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

Conciseness5/5

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

A single, front-loaded sentence contains the verb, resource, scope, and return detail. There is no filler or redundant restatement.

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 filtered-list tool, the description is complete: it states what is listed, the scope, and that card counts are included. The optional type filter and safety profile are already covered by the schema and annotations, so nothing needed to call it correctly is missing.

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

Parameters3/5

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

Schema coverage is 100%, with the optional 'type' parameter fully documented by its enum and 'Only this type' description. The tool description adds no additional parameter semantics, so the schema 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 uses a specific verb ('List') and names the exact resources ('card decks, hands and piles') with their scope ('of the world'). It clearly differentiates this listing tool from siblings like get-card-stack and create-card-deck.

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 broad 'list ... of the world' phrasing makes it clear this is the general enumeration tool, while the optional 'type' filter narrows to deck, hand, or pile. It does not explicitly name get-card-stack as the single-item alternative, but the listing context is unambiguous.

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

list-changesList recent changesA
Read-onlyIdempotent

List the changes the AI made to the world, newest first, from the change log of this session: when, by which Gamemaster, which tool, which documents, and whether each can be undone (and why not). Every entry has an id and the id of its tool call for undo-change. The log keeps the latest 200 changes and starts empty when the Gamemaster reloads the world.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolNoOnly changes of this tool (or query) name
limitNoHow many entries, 1 to 200; default 20
callIdNoOnly the changes of this tool call
documentNoOnly changes of this kind, e.g. "Journals", "Scenes", "Actors", "Items", "ChatMessages"

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds useful behavioral context beyond annotations: the log is capped at 200 changes, starts empty after a world reload, and entries indicate whether they can be undone and why not. No contradiction with 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?

The description is a compact three-sentence definition with the core purpose first, followed by entry contents and log retention behavior. Every sentence adds useful information with no redundancy or filler.

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

Completeness4/5

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

For a read-only listing tool with no output schema, the description sufficiently covers what the caller receives: entries with timestamp, Gamemaster, tool, documents, undo status, entry id, and tool call id. It also notes log boundaries and session behavior, making the tool's behavior understandable without an 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 description coverage is 100%, so the input schema already explains tool, limit, callId, and document filters. The description does not add additional semantic detail about the parameters beyond what the schema provides, keeping it at the baseline for 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 uses a specific verb ('List') and names the exact resource (changes from the AI's change log of this session), with sorting and content details (newest first, by Gamemaster, tool, documents, undoneness). It also distinguishes this from the undo-change sibling by stating entries carry tool call ids for undo-change.

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

Usage Guidelines4/5

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

The description gives clear context about when this is useful: to review session changes, including undo eligibility and ids for undo-change. It does not explicitly name alternatives or state when not to use it, but the intended role relative to undo-change is strongly implied.

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

list-charactersList charactersA
Read-onlyIdempotent

List the actors of the world with id, name, type, folder and whether they have an image, optionally of one type. When no actor has the given type, the answer names the types that exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOnly actors of this type, compared exactly, e.g. "npc"

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: the exact fields returned and the special fallback behavior when no actor has the given type. This goes beyond the annotations without contradicting them.

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

Conciseness5/5

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

Two sentences, no filler. The first sentence states the action, resource, output fields, and optional filter. The second sentence covers the edge case. Every word 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 read-only list tool with one optional parameter and no output schema, the description is nearly complete. It covers the return fields and the no-match edge case. It doesn't describe pagination or sorting, but for a list of actors this is a minor gap, not a blocker.

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 the 'type' parameter. The description adds that the comparison is exact and gives an example ('npc'), which is helpful, but it doesn't go far beyond the 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 lists actors/characters with specific fields (id, name, type, folder, image presence) and an optional type filter. It distinguishes itself from siblings like list-combats, list-users, and list-scenes by naming the resource (actors of the world) and the exact output fields.

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

Usage Guidelines4/5

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

The description explains the optional type filter and even specifies behavior when no actor matches (names the existing types). It doesn't explicitly say when to use this over alternatives, but the resource and filter are clear enough that an agent can infer when to call it. A small gap: no mention of when to use get-character or search-character-items instead.

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

list-chat-messagesList chat messagesA
Read-onlyIdempotent

Read the chat log as the Gamemaster sees it, newest first, whispers included, each with who it is whispered to. Filter by speaker, author, type, time or what one user can see, and page back with beforeId. Content is shown as plain text.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOnly messages of this type
limitNoHow many messages, 1 to 100; default 20
sinceNoOnly messages from this time on, e.g. "2026-09-14T18:00:00Z"
authorNoOnly messages written by this user: id or exact name
speakerNoOnly messages spoken as this alias, actor id or name, or token id (whole name, any case)
beforeIdNoContinue after this message id, from nextBeforeId of the previous page
visibleToNoOnly messages this user can see: id or exact name
contentCharsNoShorten each content to this many characters; 0 for all; default 500

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds valuable behavioral context beyond annotations: newest-first ordering, whisper inclusion with recipient information, the Gamemaster's privileged view, plain-text content rendering, and pagination via beforeId. This meaningfully helps an agent predict behavior.

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

Conciseness5/5

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

Two dense sentences deliver the essential behavioral facts upfront: read-only intent, order, whisper visibility, filters, pagination, and content format. There is no redundancy with the annotations or schema, and 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?

For an 8-parameter, no-output-schema read tool, the description covers what an agent needs: ordering, filter categories, whisper behavior, plain-text content, and pagination mechanics. The schema fills parameter-level details, and annotations cover safety, so nothing material is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter. The description mentions filters and pagination at a high level but adds little beyond what the schema already states. Baseline 3 is appropriate because the description doesn't introduce any parameter semantics not found 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 names a specific verb and resource: reading the chat log. It further specifies the exact perspective (as the Gamemaster sees it) and order (newest first), which clearly distinguishes it from sibling write tools like send-chat-message, update-chat-message, and delete-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 Guidelines4/5

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

The description makes the use context clear: anyone wanting to read chat messages with filters, pagination, and whisper visibility will find this tool. It does not explicitly name alternative read tools, but there are no other chat-read siblings, so the context alone is sufficient. No exclusions or when-not-to-use conditions are stated, which keeps it from a 5.

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

list-combatsList combat encountersA
Read-onlyIdempotent

List every combat encounter of the world with its scene, whether it is active and started, round, turn, number of combatants and who acts now.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the agent knows it's a safe read operation. The description adds that it returns a list of all combats with specific fields, but doesn't mention any ordering, pagination, or performance implications. Since annotations cover the safety profile, this is adequate but not rich.

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 is concise and front-loads the purpose. It lists the fields without extra fluff, so it's efficient and to the point.

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

Completeness3/5

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

For a read-only listing tool with no parameters and no output schema, the description is fairly complete. However, it could mention whether it returns all combats regardless of scene or active status, and any ordering (e.g., by round or turn). Given the tool's simplicity, it's sufficient but has minor 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?

The tool has zero parameters, and schema coverage is 100%. With no parameters, the description doesn't need to elaborate on parameter semantics. A baseline of 4 is appropriate because the description effectively communicates that there's nothing to configure, and it states the output fields.

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

Purpose4/5

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

The description clearly states it lists combat encounters and enumerates the fields shown (scene, active, started, round, turn, combatants, who acts now). It is specific and informative, but there are sibling tools like get-combat that focus on a single combat, so it could explicitly distinguish itself, but it's clear enough.

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 it's for getting an overview of all combat encounters, but doesn't explicitly state when to use it versus get-combat or other combat tools. Given the name and description, an agent can infer it's for listing, but no explicit guidance on alternatives is provided.

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

list-compendium-entriesList compendium entriesA
Read-onlyIdempotent

List what actually sits inside a compendium: ids, names, types and folders. list-compendiums only gives counts, so this is the way to check whether an archive holds what it should, to find duplicates, or to get the ids needed for later work. Reads the index only, never the full documents, and returns at most 1000 entries per call; when more follow, the answer says so with the next offset. Read only: it changes nothing and works at any permission level.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoEntries per page: 200 unless given, 1000 at the most
offsetNoEntries to skip; continue with the offset the previous answer named
packIdYesId of the compendium, package and name joined by a dot, for instance world.chapter-one
folderNameNoKeep only entries inside the compendium folder of this name
namePatternNoKeep only entries whose name contains this text; case does not matter

TDQS

A4.5/5.0
Behavior5/5

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

The description goes well beyond the annotations by adding non-obvious behavior: it reads only the index, never full documents, returns at most 1000 entries per call, and tells the caller when more results exist via a next offset. It also confirms read-only behavior and permission-level access. This is exactly the kind of context annotations do not provide.

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

Conciseness5/5

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

The description is compact and front-loaded: purpose, distinguishing sibling, behavior, and read-only guarantee. Every sentence carries useful information and nothing is padded or redundant. The structure makes it easy to scan quickly.

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 rich 100% schema coverage, the read-only annotations, and the absence of an output schema, the description provides the missing contextual pieces: the shape of results, pagination behavior, index-only access, and use cases. An agent has what it needs to call this tool correctly and interpret the response.

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 documents all five parameters with full coverage, so the baseline is 3. The description mentions pagination limits that relate to limit and offset, but it does not add detail about folderName, namePattern, or packId beyond what the schema provides. It meets the baseline but does not elevate it.

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

Purpose5/5

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

The description names the exact action ('List what actually sits inside a compendium') and specifies the returned fields: ids, names, types, folders. It explicitly distinguishes this tool from the sibling list-compendiums by noting that sibling only gives counts, so an agent can immediately tell which tool to use.

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

Usage Guidelines4/5

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

The description gives concrete use cases: checking whether an archive holds what it should, finding duplicates, and getting ids for later work. It also calls out the alternative list-compendiums and why this tool is the right choice when counts are insufficient. It does not mention other relevant siblings like search-compendium, but the guidance is still clear.

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

list-compendium-packsList compendium packsA
Read-onlyIdempotent

List all compendium packs with id, label, document type, game system and whether they are private, optionally filtered by document type. availableTypes names every type that occurs, also when a filter is set.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOnly compendiums holding this document type, for instance Actor or JournalEntry

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish that the tool is read-only, idempotent, and non-destructive. Beyond that, the description adds useful response behavior: it names the fields returned and notes that availableTypes still lists every type even when a filter is set. This is meaningful non-obvious detail, though it omits any pagination or sorting behavior.

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

Conciseness5/5

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

Two concise sentences with no fluff. The main action and returned fields are front-loaded, and the second sentence conveys an important edge-case behavior about availableTypes. 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 read-only list with one optional parameter and no output schema, the description provides enough to call it correctly: what is listed, what fields are returned, and how the filter behaves. It could be slightly more complete by describing the overall response shape or differentiating from sibling listing tools, but nothing essential is missing.

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

Parameters3/5

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

The single optional parameter already has 100% schema coverage, including an example ('Actor or JournalEntry'). The description only restates the filter concept and adds no parameter-level detail beyond what the schema provides, so the baseline of 3 applies.

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

Purpose4/5

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

The description clearly states the action ('List all compendium packs') and enumerates the returned properties: id, label, document type, game system, and privacy status, plus an optional filter. It is distinct from entry-level tools like list-compendium-entries, but it does not explicitly distinguish itself from the similarly named list-compendiums sibling.

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 optional type filter implies a usage condition: use this when you want all packs, optionally narrowed by document type. However, there is no explicit guidance about when to choose list-compendium-packs over list-compendiums or list-compendium-entries, so some alternative routing is left to inference.

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

list-compendiumsList compendiumsA
Read-onlyIdempotent

List every compendium with its type, entry count, lock state and whether the AI can write to it right now. "Editable" takes all layers into account: the write switch, the permission level for compendiums, the release list and the lock. An unlocked compendium can be written to no matter who ships it, unless the release list is filled. Call this before exporting to find the right pack id.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds meaningful behavioral context by explaining that 'Editable' is computed from the write switch, permission level, release list, and lock, and that editability is a current-state property. This goes beyond the annotations without contradicting them.

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

Conciseness5/5

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

The description is concise and front-loaded: the first sentence states the core behavior, the next two clarify the key 'Editable' semantics, and the final sentence gives actionable usage. Every sentence adds value with no redundant filler.

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

Completeness5/5

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

For a zero-parameter, read-only listing tool, the description is complete: it enumerates the returned attributes, explains the nuanced 'Editable' field, and ties the tool to the exporting workflow. No output schema exists, but the description sufficiently covers what the agent needs to know.

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

Parameters4/5

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

The tool has zero parameters and the schema coverage is 100%, so there is no parameter documentation burden. The description's mention of 'pack id' is output-related, not parameter-related, and no parameter semantics are 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 a specific verb and resource: 'List every compendium with its type, entry count, lock state and whether the AI can write to it right now.' It clearly scopes the operation and differentiates it from sibling tools like list-compendium-packs or list-compendium-entries by emphasizing the full list and computed editability.

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

Usage Guidelines4/5

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

The description gives an explicit use case: 'Call this before exporting to find the right pack id.' This tells the agent when to use the tool, but it does not explicitly state when not to use it or name alternative tools for different scenarios.

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

list-creatures-by-criteriaList creatures by criteriaA
Read-onlyIdempotent

Creature discovery for encounter building: a long list of creatures matching criteria, with little data per creature, so you can choose by name and fetch details with get-compendium-item only for the final selection. The filters are understood by the adapter of the active game system (D&D 5e: challenge rating, creature type, size, alignment, spells, legendary actions; Pathfinder 2e: level, traits, rarity; DSA5: experience level, species, culture, profession; WFRP4e: species, traits, prayers; Traveller: hits, psionics; Cosmere RPG: tier, role, defenses) and checked against the creature index. Filters the active system does not know are reported as ignored. Without an adapter for the system, filtering is refused and a call without filters lists every actor by name.

ParametersJSON Schema
NameRequiredDescriptionDefault
hitsNoHits to match (Traveller)
roleNoAdversary role in the Cosmere RPG such as minion, rival or boss; case does not matter
sizeNoSize category to keep
tierNoAdversary tier in the Cosmere RPG, 1 to 4, the main measure there for building encounters
levelNoCreature level to match in Pathfinder 2e, from -1 upwards; experience level 1 to 7 in DSA5
limitNoHow many creatures to return: 100 unless given, 1000 at the most
rarityNoRarity to keep (Pathfinder 2e)
traitsNoTraits every creature must carry (Pathfinder 2e, WFRP4e)
cultureNoCulture; a part of the name is enough (DSA5)
minHitsNoHits at least this much (Traveller)
speciesNoSpecies; a part of the name is enough in WFRP4e and Traveller (DSA5, WFRP4e, Traveller)
alignmentNoAlignment; a part such as "evil" is enough (D&D 5e)
hasSpellsNoOnly creatures that cast spells
hitPointsNoMaximum health to match (Cosmere RPG)
deflectMinNoDeflect at least this much (Cosmere RPG)
hasPrayersNoOnly creatures with prayers (WFRP4e)
professionNoProfession; a part of the name is enough (DSA5)
defensesMinNoLowest defenses to accept in the Cosmere RPG; give any of phy, cog and spi
hasPsionicsNoOnly creatures with psionics (Traveller)
creatureTypeNoKind of creature to keep. D&D 5e: humanoid, dragon, beast, undead, fey, fiend, celestial, construct, elemental, giant, monstrosity, ooze, plant, aberration. Pathfinder 2e and the Cosmere RPG use their own types, for instance animal or spirit.
hasLiturgiesNoOnly creatures with liturgical chants or ceremonies (DSA5)
hasInvestitureNoOnly adversaries that use Investiture or Surges (Cosmere RPG)
challengeRatingNoChallenge rating to match: one value, the value as text, or lowest and highest. Bounds suit a first survey best.
experiencePointsNoAdventure points spent on the character (DSA5)
hasLegendaryActionsNoOnly 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?

Annotations already declare readOnlyHint=true, openWorldHint=false, idempotentHint=true, and destructiveHint=false. The description adds behavioral context beyond these: how unknown filters are handled (reported as ignored), the no-adapter behavior (filtering refused, unfiltered list returns all actors), and the limit behavior (default 100, max 1000). These are operational traits not covered by annotations, and they align with the read-only idempotent nature.

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 efficient. It front-loads the purpose and usage, then details system-specific filters and edge cases. Every sentence contributes meaningful information, but the length is near the upper bound for a tool with 25 parameters. The structure is logical—purpose, filter understanding, fallbacks—and avoids redundancy, but a slightly tighter wording could improve 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 the tool's complexity (25 parameters, multiple game systems, no output schema), the description covers the essential context: what the tool returns (a list with little data per creature), how to use it for encounter building, the system-specific filter behavior, unknown filter handling, no-adapter fallback, and the limit. It also directs users to get-compendium-item for details, completing the workflow. No critical missing information for an agent to call it 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 description coverage is 100%, so each parameter is already well-documented individually. The description adds value by explaining how filters are interpreted across different game systems (e.g., challengeRating for D&D 5e, level for Pathfinder 2e) and the global behavior when filters are not recognized. This semantic layer ties the parameters together, but it doesn't add per-parameter meaning beyond what the schema already provides; hence a 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?

The description opens with 'Creature discovery for encounter building' and specifies 'a long list of creatures matching criteria' with 'little data per creature', clearly stating the verb (list) and resource (creatures). It explicitly differentiates itself from get-compendium-item by advising to fetch details only for the final selection, so an agent can distinguish it from sibling tools without ambiguity.

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

Usage Guidelines5/5

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

The description provides explicit usage guidance: it's for encounter building, filters are system-specific (with a breakdown per game system), and it states that filters the active system does not know are reported as ignored. It also explains the fallback when no adapter exists (filtering is refused) and that a call without filters lists every actor by name. This gives clear when-to-use instructions and exclusions, including the alternative get-compendium-item for details.

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

list-documentsList documents of any typeA
Read-onlyIdempotent

Generic fallback: list documents of any type in the world, inside one document (parentUuid) or in a compendium (pack, read only), with conditions, sorting, paging and field selection. Prefer the specialised tools where one fits: list-journals, list-scenes, list-characters, list-compendium-entries, list-chat-messages, list-macros, list-playlists, list-roll-tables. Use this for types they do not cover (Combat, Cards, Wall, Region, Drawing), for game systems without an adapter, or to get exactly the fields needed. Without fields each row shows id, uuid, name, type and folder. describe-document-type shows the field paths.

ParametersJSON Schema
NameRequiredDescriptionDefault
packNoCompendium id "package.name" to read from; compendiums are read only here
limitNoDocuments per answer, 1 to 200; default 25
whereNoConditions that must all hold
fieldsNoDotted paths to return, list positions as ".0" or "[0]" and "*" for every entry, e.g. "system.attributes.hp.value", "items.*.name". ["*"] returns all data
offsetNoSkip this many matching documents; nextOffset of the previous answer
sortByNoField path to sort by; default is Foundry's order
maxCharsNoCharacter budget of the answer, 1000 to 200000; default 60000
parentUuidNouuid of the document that holds an embedded one, e.g. "Actor.abc" for its items, "Scene.abc" for its walls
documentTypeYesFoundry document name, e.g. "Actor", "JournalEntryPage", "Combat", "Wall"; with id when no uuid is given
sortDirectionNoSort direction; default asc

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already mark this as read-only and idempotent with no destructive actions, so the safety profile is clear. The description adds behavioral context about compendium read-only limitation and default row selection when 'fields' is omitted, which is useful beyond the schema. No contradiction.

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

Conciseness5/5

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

The description is compact relative to the complexity of a 10-parameter tool. It front-loads the core purpose and the fallback role, then lists the specialized alternatives. Every sentence adds value, and the parameter-level behavior is covered in the schema, keeping the description 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?

For a generic tool with a rich schema (10 params, 100% coverage) and no output schema, the description provides sufficient context: it explains the fallback role, points to alternatives, and gives default behavior. However, it could mention pagination or sorting defaults more explicitly, but the schema covers those. Given the complexity, this is nearly 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 the baseline is 3 per the rubric. The description adds a few behavioral clarifications (e.g., 'Without fields each row shows id, uuid, name, type and folder' and 'compendiums are read only here'), but most parameters are already well-documented in the schema. The description doesn't significantly augment parameter semantics beyond what the schema 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 opens with a clear action ('list documents of any type') and specifies the resource (world, parentUuid, compendium). It immediately establishes itself as the generic fallback and distinguishes itself from a long list of specialized siblings, which prevents ambiguity.

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

Usage Guidelines5/5

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

The description explicitly tells the agent when to use this tool: 'Prefer the specialised tools where one fits' and lists them. It also names concrete use cases for this tool (Combat, Cards, Wall, etc.) and notes when to use it for game systems without an adapter. This is excellent routing guidance.

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

list-dsa5-archetypesList DSA5 archetypesA
Read-onlyIdempotent

[DSA5 only] Find archetypes (ready made heroes of type character) in the actor compendiums of the dsa5 system, e.g. from the DSA5 core rules module, to create a hero with create-dsa5-character-from-archetype. Each archetype comes with id, name, compendium, species, profession and image. filterBySpecies matches the whole species ignoring case, filterByProfession a part of the profession ignoring case. A compendium that cannot be read is named with its cause.

ParametersJSON Schema
NameRequiredDescriptionDefault
packIdNoSearch only this actor compendium, e.g. "dsa5-core.corearchetypes". Without it every actor compendium of the dsa5 system is searched.
filterBySpeciesNoKeep archetypes of exactly this species, ignoring case, e.g. "Mensch" or "Zwerg"
filterByProfessionNoKeep archetypes whose profession contains this text, ignoring case, e.g. "Magier"

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds valuable behavioral detail beyond that: the returned fields are listed, filter behavior is specified, and failed compendium reads are reported with their cause.

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

Conciseness5/5

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

The description is compact and front-loaded. Every sentence earns its place: scope, purpose, output fields, filter semantics, and error behavior are each covered without redundancy or 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?

For a read-only list tool with no required parameters and no output schema, the description provides enough context to call it correctly: output shape, filter semantics, default search scope, and failure behavior are all documented.

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 parameter descriptions already document packId, filterBySpecies, and filterByProfession. The tool description mostly restates the matching semantics already present in the schema, so it adds little new parameter-level 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?

The description states a specific action and resource: 'Find archetypes' in 'the actor compendiums of the dsa5 system'. It also clarifies what an archetype is and connects the tool to its intended downstream use with create-dsa5-character-from-archetype, making it distinguishable from generic list 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 gives clear usage context: it is for DSA5 only and is meant to find archetypes to feed into create-dsa5-character-from-archetype. It does not explicitly enumerate alternatives or when-not-to-use cases, but the intended workflow is well established.

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

list-journalsList or read journalsA
Read-onlyIdempotent

Without journalId: every journal with its pages (id, name, type). With journalId: the content of its first text page and the list of all its pages. With journalId and pageId: the content of that page; for image, video or PDF pages the content is the source address. Content comes in chunks of maxChars characters: when hasMore is true, call again with offset set to nextOffset, and never write a partial chunk back as the whole page.

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNoCharacter position to start reading at (default 0). Use nextOffset from the previous chunk.
pageIdNoTogether with journalId: read this page.
maxCharsNoCharacters per chunk, default 50000, at least 1000, at most 200000. Oversized answers break the bridge.
journalIdNoRead this journal instead of listing all of them.
filterQuestsNoList only journals whose name contains quest, mission, task, adventure, job or contract (default false).
includeContentNoAdd a preview of the first 150 characters of each journal to the list (default false).

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the readOnlyHint/idempotentHint annotations, the description adds genuinely useful behavior: chunked content via maxChars, hasMore/nextOffset handling, media pages returning source addresses, and a warning to never write a partial chunk back. This is substantive behavioral disclosure that annotations alone do not provide.

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

Conciseness5/5

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

The description is dense but every sentence earns its place: invocation modes are front-loaded, and the pagination warning is critical. No filler or repetition.

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 and several optional parameters, the description covers the main return behavior, media content behavior, and pagination protocol. It relies on the schema for filterQuests/includeContent and does not spell out the exact response envelope, but enough is present 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?

The input schema already documents all parameters at 100% coverage, so the baseline is 3. The description adds meaningful semantics beyond the schema by explaining how journalId/pageId select different response shapes and how offset/maxChars interact with chunked 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 a specific verb (list/read) and resource (journals), and distinguishes three invocation modes by presence of journalId and pageId. It does not explicitly name a sibling like search-journals, so it stops just short of full sibling differentiation.

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

Usage Guidelines3/5

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

The description gives clear contextual conditions for each mode ('Without journalId...', 'With journalId...'), which implies when this tool is appropriate. It does not explicitly say when to prefer search-journals or other journal tools, so usage guidance is helpful but not fully explicit.

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

list-macrosList macrosB
Read-onlyIdempotent

List the macros of the world with type (chat or script), folder, author and whether the AI may run them now. includeCommand shows the command text.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOnly this type
nameContainsNoOnly macros whose name contains this text, any case
includeCommandNoShow the command of each macro

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context about the 'AI may run them now' permission field and the includeCommand behavior, but doesn't disclose details like pagination, sorting, or whether the command text is truncated.

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, compact sentence that front-loads the core purpose and lists the key output fields. It earns its place without redundancy, though it could be slightly clearer about the optional nature of includeCommand.

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

Completeness3/5

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

For a simple read-only list tool with no required parameters and full schema coverage, the description is mostly adequate. However, it doesn't mention whether the result is paginated, how many macros are returned, or what the output structure looks like, which an agent might need to know for large worlds.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters. The description adds a small amount of context by explaining that includeCommand shows the command text and that nameContains is case-insensitive, but this mostly mirrors the schema descriptions.

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

Purpose4/5

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

The description clearly states the tool lists macros and specifies the fields returned (type, folder, author, AI-run permission, optional command text). It distinguishes itself from create-macro and execute-macro siblings by focusing on listing, though it doesn't explicitly name them.

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

Usage Guidelines3/5

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

The description implies this is for reading/listing macros rather than creating or executing them, and the readOnlyHint annotation reinforces that. However, it doesn't explicitly state when to prefer this over sibling tools like list-documents or list-compendiums, nor does it mention any filtering alternatives.

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

list-playlistsList playlistsA
Read-onlyIdempotent

List the playlists in the world with their sounds. Use this to find the exact playlist and sound name before linking one to a scene, or to check whether a playlist referenced by a journal actually exists in the world.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeSoundsNoList the tracks of every playlist as well; true when left out

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that playlists are listed 'with their sounds', which is useful behavioral context, though it mostly overlaps with the schema parameter description rather than revealing hidden behavior.

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

Conciseness5/5

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

Two tight sentences with no filler. The core action is front-loaded, and the use cases are presented concisely.

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 read-only listing tool with one optional parameter, the description covers the purpose, the main use cases, and the key return detail (sounds). It is slightly light on output format details, but that is not a major gap for 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?

Schema description coverage is 100%, so the one parameter is already well documented. The description's phrase 'with their sounds' provides light context for the default includeSounds behavior, but it does not add substantial 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 states a specific verb ('List') and resource ('playlists in the world with their sounds'), making the operation immediately clear. It also differentiates the tool from sibling listing tools by focusing on playlists and sound-name lookup.

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

Usage Guidelines4/5

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

The description gives explicit use cases: finding the exact playlist/sound name before linking to a scene, and verifying a playlist existence referenced by a journal. It does not name specific alternative tools, but the contextual scenarios are clear 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.

list-roll-tablesList roll tablesA
Read-onlyIdempotent

List the roll tables in the world with their formula and number of results.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful output content details ('formula and number of results'), which matters because there is no output schema, but it does not disclose any other behavioral traits such as ordering, filtering, or permissions.

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 front-loads the action and resource, then states the returned information. Every word contributes meaning, with 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 parameterless list tool, the description is largely complete: it names the resource and the fields returned. With no output schema, it helpfully specifies 'formula and number of results.' It could be slightly richer by indicating scope or ordering, but nothing critical is missing for a simple list 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?

The tool has zero parameters and an empty input schema, so there is no parameter semantics burden. The description appropriately focuses on what the tool returns rather than on inputs.

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 a clear resource ('roll tables in the world'), and names the output fields ('formula and number of results'). This clearly distinguishes it from related tools like get-roll-table, draw-roll-table, or update-roll-table.

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

Usage Guidelines3/5

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

The intended use is implied: call this when you want an overview of all roll tables. However, it does not explicitly state when to prefer it over get-roll-table or draw-roll-table, nor does it provide any exclusion guidance.

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

list-scene-foldersList scene foldersA
Read-onlyIdempotent

List every scene folder with its full path, its id and how many scenes lie directly in it. Call it before create-scene or update-scene to pick a valid folderPath.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by specifying the output fields (full path, id, direct scene count) and the 'directly in it' scoping detail, which goes beyond the 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, front-loaded with the core function and output fields, followed by a direct 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?

For a zero-parameter read-only list tool with clear annotations and a precise description, nothing essential is missing. The description fully equips an agent to call it and use its output.

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

Parameters4/5

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

The tool has zero parameters, so there is no schema burden. The description still clarifies what the returned data contains (path, id, count), which is helpful for an agent deciding how to use the result.

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 every scene folder with its full path, id, and direct scene count. It distinguishes itself from sibling tools like list-scenes and create-scene by focusing on folders and their paths.

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 instructs to call this tool before create-scene or update-scene to pick a valid folderPath. This provides clear when-to-use guidance and names the relevant alternatives.

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

list-scenesList scenesA
Read-onlyIdempotent

List the scenes of the world with id, name, whether active, size, grid size, background and how many walls, tokens, lights and sounds each holds. filter narrows by a part of the name, in any case.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoOnly scenes whose name contains this text, in any case
include_active_onlyNoOnly the scene that is active for everyone

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful behavioral detail by specifying the output fields, including object counts, and clarifying that name filtering is case-insensitive.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler. It states the resource, lists the returned fields, and then gives the filtering behavior, which is exactly the right amount of detail.

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 read-only listing tool with two optional parameters and no output schema, the description supplies the output shape and the important filter behavior. Annotations cover the safety profile and the schema covers include_active_only, so nothing needed for a correct call is missing.

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

Parameters3/5

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

The input schema fully documents both parameters, so the description is not required to carry parameter meaning. The description only restates filter's substring behavior and does not add new semantics for include_active_only beyond 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 names a specific verb ('List'), a resource ('scenes of the world'), and enumerates the exact returned fields (id, name, active, size, grid size, background, and counts). This clearly separates it from scene-related siblings like get-current-scene and list-scene-folders.

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 intended use is evident: an agent should use this when it needs an overview of scenes, with optional name filtering and active-only filtering. It does not explicitly name alternatives or say when not to use it, but the context is clear enough for a list operation.

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

list-settingsList settingsA
Read-onlyIdempotent

Read registered world and client settings of the core ("core") or of chosen modules and systems, with name, scope, type and value. Values whose key looks like a secret are hidden, and the settings of this MCP module are not listed (get-permissions shows them). Client settings are those of the Gamemaster browser.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoAt most this many settings, 1 to 500, default 200
scopeNoworld, client or all (default)
namespacesNoModule, system or "core" ids; default ["core"]
keyContainsNoOnly keys containing this text, any case
includeValuesNoInclude the current values (default true)

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description discloses two important behaviors: secret-looking keys are hidden from values, and the module's own settings are excluded from results. This adds meaningful context an agent could not infer from the structured metadata alone.

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, starts with the primary action and resource, and each sentence adds essential information (output fields, secret filtering, module exclusion, client scope definition). There is no redundancy or filler.

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 read-only list tool with an annotations-provided safety profile, the description covers the tool's purpose, output fields, scope semantics, and notable filtering behaviors. While there is no output schema, the description names the returned fields, and all parameter docs live in the schema, so an agent has enough to call and interpret the result.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters are already fully documented in the input schema. The description adds no parameter-level detail (it mostly describes output and exclusions), which aligns with the baseline of 3 for fully covered schemas.

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

Purpose5/5

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

The description states a specific action ('Read') and a precise resource ('registered world and client settings of the core or of chosen modules and systems'), and lists the output fields (name, scope, type, value). It also distinguishes itself from the sibling tool get-permissions by noting that the MCP module's own settings are not listed there, so an agent can tell them apart.

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

Usage Guidelines4/5

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

The description gives clear context: it explains the two scope categories (world/client), clarifies that client settings are the Gamemaster browser's, and explicitly routes users to get-permissions for the MCP module's own settings. It does not mention alternative tools for reading settings, but the contrast with get-permissions and the scope clarifications provide actionable guidance.

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

list-usersList usersA
Read-onlyIdempotent

List the users of the world with role, whether they are logged in, their assigned character and the scene they are viewing. No passwords or access data.

ParametersJSON Schema
NameRequiredDescriptionDefault
onlyActiveNoOnly users who are logged in now

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful behavioral context by listing the exact response fields and explicitly disclaiming that passwords or access data are not included, which helps an agent avoid misusing the tool for sensitive lookups.

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 front-loads the action and resource, immediately gives the key output fields, and appends a short privacy caveat. Every phrase earns its place and there is 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 list tool with one optional parameter and no output schema, the description covers the returned fields and the privacy boundary. It does not mention pagination, ordering, or the exact response container, but these are minor gaps given the tool's simplicity and the annotations that already cover read-only behavior.

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% coverage for the single optional onlyActive parameter, including a clear description. The description's mention of 'whether they are logged in' reinforces the parameter's meaning but adds no new parameter-level semantics beyond what the 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 uses a specific verb ('List'), a clear resource ('users of the world'), and enumerates the returned data (role, logged-in status, assigned character, scene). It also distinguishes itself from sibling list-* tools by targeting users rather than combats, scenes, or chat messages, and the 'No passwords or access data' caveat sharpens its scope.

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

Usage Guidelines3/5

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

The description implies when to use the tool: whenever an agent needs a read-only inventory of users and their current state. However, it never states explicit alternatives or exclusion conditions, such as 'use get-character for character details' or 'for authentication data, use another tool.'

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

manage-actorsManage actorsA
Destructive

Create, change, delete and place world actors, and change or delete items on an actor. "create" makes actors with a type of the game system and free system data (the adapter of the system reshapes it where it knows how). "update" changes actors found by id or exact name and merges system data. "delete" removes actors by id for good and needs the actor permission "full". "place" puts world actors as tokens into the active scene. "update-items" and "delete-items" work on the items of one actor by item id; deleting needs "full". "describe" returns what the adapter of the game system says about actor data. Every target is checked before the first write, nothing found is named, and values the system did not store as written are listed as mismatches.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoFor "delete": ids of the world actors to delete; needs the actor permission "full"
actionYesWhat to do; each action names the parameters it needs
actorsNoFor "create": the new actors
folderNoFor "create": id of an actor folder, or a folder path that is created when missing; "Foundry MCP Actors" when left out
hiddenNoFor "place": create the tokens hidden from players
itemIdsNoFor "delete-items": ids of items on the actor; needs the actor permission "full"
updatesNoFor "update": one change per actor; every actor is found before the first one is written
actorIdsNoFor "place": ids or exact names of world actors to put into the active scene
placementNoFor "place": layout of the tokens, "random" when left out
itemUpdatesNoFor "update-items": changes of items on the actor, by item id
actorIdentifierNoFor "update-items" and "delete-items": the actor. Id of the actor, its exact name (case does not matter) or the id of one of its tokens

TDQS

A4.5/5.0
Behavior5/5

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

Adds substantial behavioral context beyond the annotations: delete is permanent ('for good'), permission 'full' is required, all targets are checked before the first write, missing targets are named, and system values not stored are listed as mismatches. The description also clarifies merge semantics for update and describes the adapter behavior for create. No contradiction with the 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?

The description is front-loaded with a one-sentence overview, then gives one compact sentence per action, followed by a single transaction-check guarantee. For a tool with 11 parameters and 7 distinct actions, this is appropriately sized and every sentence 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?

The definition covers all actions, permission requirements, merge/placement behavior, and the result-level mismatch reporting. Although there is no output schema, the description still discloses what the system will report for missing targets and mismatches. Nothing an agent needs to call this tool correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter and their action-specific meanings. The description adds useful cross-cutting context like checking targets before writes and merge behavior, but does not need to, and does not, provide per-parameter semantics beyond what the input schema already offers.

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

Purpose5/5

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

The description starts with a clear verb-and-resource summary ('Create, change, delete and place world actors...') and then enumerates each action with its specific scope: create, update, delete, place, update-items, delete-items, describe. This makes the tool's purpose unmistakable and distinguishes it from the many sibling actor-related 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 gives clear context for every action, including when to use update-items versus delete-items and which actions require 'full' permission. It does not explicitly name sibling tools as alternatives or state when to prefer actor-set-token or manage-world-items, so it stops short of a 5.

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

manage-effectsManage active effectsA
Destructive

Create, change or delete an active effect on an actor, or on an item that actor carries. The effect fields go to Foundry as given, without game system rules; Foundry drops unknown fields, and the result lists every field that was dropped or stored differently. Find effect ids with get-character (effects of the actor) or get-character-entity (effects of an item). An effect that lies on an item is changed there, with parentType "item"; parentType "actor" never touches it. create and update need the actor permission "create and change", delete needs "create, change and delete", which is off by default. Every change is read back.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesWhat to do with the effect.
effectIdNoId of the effect. Required for update and delete, not allowed for create.
effectDataNoEffect fields for create (name required) and update (at least one; lists such as changes are replaced as a whole). Not allowed for delete.
parentTypeYesEffect on the actor itself, or on one of its items.
actorIdentifierYesId, exact name (case ignored when unique) or uuid of the actor. An unlinked token actor needs its uuid.
parentItemIdentifierNoWith parentType "item" only, and required there: id or name of the item.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark destructiveHint true and readOnlyHint false, and the description adds crucial behavior beyond them: Foundry drops unknown fields, the result reports dropped or differently stored fields, permission requirements differ by action, and every change is read back. This substantially raises transparency for a mutation tool.

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

Conciseness5/5

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

The description is front-loaded with the primary action and then efficiently covers id discovery, parentType semantics, permissions, and read-back behavior without fluff. Every sentence contributes useful information.

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 mutating tool with no output schema, it covers prerequisite ids, permission requirements, system-rule behavior, and result readback behavior. An agent has enough context to invoke create, update, and delete correctly and anticipate failure modes.

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, but the description adds extra meaning: effect fields are passed as given without system rules, unknown fields are dropped, and parentType "actor" never touches item-level effects. This clarifies nuances the schema only hints at.

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

Purpose5/5

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

States a clear verb and resource: create, change, or delete active effects on an actor or on an item the actor carries. This distinguishes it from nearby siblings like manage-actors or get-character-entity by focusing specifically on active 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?

Provides concrete workflow guidance: effect ids can be found with get-character or get-character-entity, and parentType "item" vs "actor" is explicitly scoped. It lacks an explicit when-not-to-use vs game-system-specific effect tools, 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.

manage-playlistsManage playlistsA
Destructive

Describe, create, update or delete playlists. describe without playlist lists every playlist (like list-playlists); with playlist it returns that one with its tracks, and a unique part of the name is enough there. create checks every track first and creates the playlist with all tracks in one step. update changes fields of the playlist and of existing tracks; adding or removing tracks is not part of it. delete works by playlist id only, is refused while a scene still uses the playlist, and needs the playlist permission "create, change and delete". For changes a playlist is found by id or exact name (case ignored when unique), never by a part of the name.

ParametersJSON Schema
NameRequiredDescriptionDefault
fadeNoCrossfade in milliseconds.
modeNo-1 disabled, 0 in order, 1 shuffled, 2 all at once (ambience).
nameNoName of the new playlist (create, required) or the new name (update).
colorNoColour as text, or null. When Foundry does not keep it, the result says so.
actionYesWhat to do.
folderNoId of a playlist folder, or null for the top level. A name is not accepted.
soundsNoTracks to create, or to change with update.
channelNoAudio channel of the playlist.
sortingNo"a" alphabetical, "m" manual.
updatesNoMore playlist fields for update. A parameter of the same name wins; known fields are checked alike.
playlistNoId or name for describe and update, id for delete. Null with describe lists all.
descriptionNoDescription of the playlist.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description discloses that delete is refused while a scene uses the playlist, requires the permission 'create, change and delete', and that create validates every track before creating. It also explains naming rules (partial name for describe, exact/unique for changes, never partial for changes), adding valuable behavioral detail not captured by annotations.

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 each sentence carries distinct, non-redundant information. It front-loads the action summary and then expands per action. While it could benefit from bullet points, there is no filler or wasted wording.

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 12 parameters, nested objects, and no output schema, the description covers action behavior, name matching, permissions, and limitations. It mentions describe's return content (playlist with tracks) but does not specify return values for create/update/delete. Overall it is adequate and mostly 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 the baseline is 3. The description adds extra meaning: describe accepts a unique partial playlist name, while update/delete require exact name or id, and it clarifies that update does not add/remove tracks, which informs how the 'sounds' parameter should be used. This goes beyond the schema's 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 four specific actions (describe, create, update, delete) and the resource (playlists). It explicitly links describe-without-playlist to the sibling list-playlists, distinguishing the two tools. The action enum in the schema confirms the same verbs.

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 names list-playlists as an alternative for listing all playlists and explicitly states what update does not do ('adding or removing tracks is not part of it'). It gives precise conditions for delete (id only, refused while a scene uses the playlist, permission required), providing clear when and when-not guidance.

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

manage-world-itemsManage itemsA
Destructive

Items in the world and on actors. "create" makes world items (in a folder by id or path, created when missing and named in the answer), "list" filters world items by type, folder and part of the name, "update" changes world items by id, "add-to-actor" creates items directly on an actor, "remove-from-actor" deletes items of an actor by id or exact name (needs the actor permission "full"; a name that fits several items is refused), and "describe" returns the valid item types and the enumerated values the adapter of the game system reads from its configuration. Item types are checked against the game system before anything is written.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFor "list": only this item type. For "remove-from-actor": only items of this type match itemNames
itemsNoFor "create" and "add-to-actor": the new items
actionYesWhat to do; each action names the parameters it needs
folderNoFor "create": id or path of the item folder, created when missing. For "list": only items directly in this folder (id or exact name)
itemIdsNoFor "remove-from-actor": ids of items on the actor
updatesNoFor "update": changes of world items by id; all ids are checked before anything is written
itemNamesNoFor "remove-from-actor": exact names of items on the actor, ignoring case; a name that fits several items is refused
nameFilterNoFor "list": part of the name, ignoring case
actorIdentifierNoFor "add-to-actor" and "remove-from-actor": the actor. Id of the actor, its exact name (case does not matter) or the id of one of its tokens

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already signal destructive intent and mark the operation as non-read-only, but the description adds concrete behavioral details: folders are created when missing and named in the answer, item types are checked before anything is written, actor removal needs the 'full' permission, and exact-name matches that hit multiple items are refused. There is no contradiction with the annotations.

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 tool definition is dense and front-loaded with the domain, and each semicolon-separated clause covers one action without wasted wording. The single run-on structure is harder to scan than bullets, but it is appropriately sized for six actions and contains no filler.

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

Completeness4/5

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

For a six-action, nine-parameter tool with no output schema, the description covers action semantics, permission requirements, ambiguity handling, and validation-before-write behavior. It does not explicitly state return shapes for list/update/remove/add-to-actor, though the action names and schema make those reasonably inferable.

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 documents all parameters with 100% coverage, so the baseline is 3. The description adds value beyond the schema by explaining action-dependent usage, the pre-write game-system type check, and the behavior of a created folder's name being included in the answer.

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 opens with 'Items in the world and on actors' and then defines each action with a clear verb and resource: 'create' makes world items, 'remove-from-actor' deletes actor items, and 'describe' returns valid item types. It is specific within the tool, but it does not explicitly contrast with sibling tools such as manage-actors, create-document, or system-specific item tools, so differentiation from alternatives is implicit rather than stated.

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

Usage Guidelines4/5

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

The description gives clear usage context for every sub-action: 'list' filters, 'update' changes by id, 'remove-from-actor' requires full actor permission and refuses ambiguous name matches, and 'describe' reports valid types. It does not mention alternative tools to prefer instead of this one, leaving the sibling choice largely left to the agent's inference.

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

measure-distanceMeasure a distanceA
Read-onlyIdempotent

Measure between two tokens or points, optionally via waypoints, in the scene's units and grid spaces, following the grid and the diagonal rule of the world. Token centers count. Works without a drawn canvas.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesEnd: { tokenId } (id or name of a token), or { x, y } in pixels
viaNoWaypoints in between: { x, y }
fromYesStart: { tokenId } (id or name of a token), or { x, y } in pixels
sceneIdentifierNoScene id or name; default the scene that is active for everyone

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already provide readOnlyHint and idempotentHint. The description adds useful behavioral details such as token centers counting, following grid and diagonal rule, and working without a drawn canvas. This goes beyond the annotations without contradicting them.

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

Conciseness5/5

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

The description is three short sentences with the main purpose front-loaded. It includes only essential details and no redundant wording, earning a high score for conciseness and structure.

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 core behavior and constraints well, given the tool has no output schema. However, it does not specify the return value or how waypoints affect the result, which are minor gaps for a read-only measurement tool with strong annotations.

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 interpretive meaning by specifying that token centers count and that measurement follows the grid and diagonal rule, which clarifies how from/to and waypoints are handled.

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 measures distance between two tokens or points, with optional waypoints, in scene units and grid spaces. It distinguishes this from sibling tools like find-path or check-wall-collision by focusing on measurement rather than pathfinding or collision.

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

Usage Guidelines4/5

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

The description gives clear context for when to use the tool (measuring distances between tokens/points, with waypoints, without a canvas), but it does not explicitly name alternatives or state when not to use it. This is clear context without exclusions.

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

move-tokenMove tokenA
Idempotent

Put a token at a new position on the active scene (or the scene in sceneIdentifier). x and y are scene pixels of the top left corner of the token; grid, walls and scene bounds are not checked. With animate the token glides there, otherwise it jumps. The answer gives the position Foundry stored.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX in scene pixels
yYesY in scene pixels
animateNoAnimate the movement (default false)
tokenIdYesId of the token on that scene, as get-current-scene lists it. Not a name, not an actor id.
sceneIdentifierNoScene of the token, by id or name. Without it the scene that is active for everyone is used; every answer names the scene.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description discloses that grid, walls and scene bounds are not checked, animation vs. instant jump behavior, and that the answer reports the position Foundry actually stored. This gives an agent the non-obvious side effects of the call.

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

Conciseness5/5

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

Three short sentences front-load the core action and then add scoping, coordinate semantics, caveats, animation behavior, and return behavior. No filler or repetition of schema 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?

For a simple 5-parameter positioning tool without an output schema, the description covers the required coordinate semantics, optional scene resolution, coordinate caveats, animation behavior, and return value. An agent has everything needed to invoke it 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?

The input schema already documents all parameters at 100% coverage, but the description adds meaning: x/y denote the token's top-left corner in scene pixels, position is not validated against grid/walls/bounds, and animate means gliding instead of jumping. This is useful clarification on top of the schema, though not every parameter is re-explained.

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 first sentence names the operation ('Put a token at a new position') and its target resource (token on the active scene or sceneIdentifier). This clearly distinguishes move-token from sibling update-token and set-targets.

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

Usage Guidelines4/5

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

The description gives clear context: tokens are placed in scene pixels, the scene defaults to the active one unless sceneIdentifier is supplied, and x/y are top-left coordinates. It does not explicitly name alternative tools or state when not to use it, so it falls just short of a 5.

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

organize-compendiumOrganize compendiumA
Idempotent

Sort entries of a compendium into a folder, creating the folder if needed. Entries are named exactly (ignoring case) or by id; names not found and ambiguous names are reported and left where they are. Same lock rules as export-to-compendium.

ParametersJSON Schema
NameRequiredDescriptionDefault
packIdYesId of the compendium
entryNamesYesEntries to move, by whole name (case does not matter) or by id
folderNameYesCompendium folder that receives the entries
unlockIfNeededNo

TDQS

A3.9/5.0
Behavior5/5

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

Beyond the annotations, the description discloses meaningful behavioral details: the folder is created if needed, entries are matched exactly by name ignoring case or by id, and unmatched or ambiguous names are reported and left in place. It also points to lock behavior via the export-to-compendium reference, giving the agent useful execution expectations.

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 short sentences front-load the core action and then add only essential behavioral details. No filler or repetition exists; every sentence contributes useful 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 purpose, matching rules, failure behavior, folder creation, and lock rules, which is substantial for a mutating tool. It does not describe the return value or fully explain the unlockIfNeeded parameter, but the absence of an output schema and the presence of behavioral details keep this from being a major 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?

The description adds real meaning to the entryNames parameter by explaining exact-case-insensitive matching and ambiguous-name handling, and clarifies folderName by noting the folder is created if needed. However, the optional unlockIfNeeded parameter is left unexplained, and the lock-rule reference is indirect.

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

Purpose4/5

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

The description clearly states the action: sorting/moving compendium entries into a folder, with the folder created if needed. It is specific about the resource and behavior, but it does not explicitly differentiate this tool from related compendium operations like import-from-compendium or delete-compendium-entries.

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

Usage Guidelines2/5

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

No explicit guidance is given about when to use this tool versus alternatives. The description mentions 'Same lock rules as export-to-compendium,' which references another tool, but does not explain when organizing is appropriate or when a different compendium operation should be chosen.

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

pan-cameraPan and zoom the viewA
Idempotent

Move the Gamemaster's view to a token or a point and set the zoom; with forEveryone, also pull every player viewing the scene to it (needs "Allow Write Operations"). Needs the drawn canvas in the Gamemaster's browser.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoCenter x in pixels
yNoCenter y in pixels
scaleNoZoom, e.g. 1 for 100 percent
tokenIdNoCenter on this token: id or name
durationNoAnimation in milliseconds, 0 to 10000; default 250
forEveryoneNoPull the view of every user on this scene too
sceneIdentifierNoOptional check: the scene the Gamemaster views must be this one (id or name), else nothing happens

TDQS

A4.3/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false and idempotentHint=true, meaning the operation can have side effects but repeated calls are safe. The description adds critical behavioral information: it requires the canvas to be drawn in the GM's browser (a precondition not inferable from annotations), and it states that the sceneIdentifier acts as an optional safety check (nothing happens if the GM is on the wrong scene). It also notes that forEveryone pulls all players, which is a side effect worth disclosing. It doesn't detail reversible nature, but the idempotent hint covers that.

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, the first clearly states the main action, and the second handles the special condition. It is efficient and front-loaded, with no fluff. Minor point: it could be slightly more structured, but the brevity is appropriate for the tool's 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 tool has 7 parameters with 100% schema coverage and no output schema, the description sufficiently covers the core purpose, prerequisites (canvas overhead, write permissions), and safety checks. It does not mention edge cases like invalid coordinates or scale bounds, but the schema covers format. The description is complete enough for an agent to invoke correctly, especially with the sceneIdentifier guard.

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 schema already documents all 7 parameters with clear meanings (e.g., x/y center coordinates, scale zoom, tokenId id or name, duration range). The description adds value by clarifying the overall behavior of parameters: that x/y and tokenId are mutually exclusive (implied by the two methods), and that sceneIdentifier is a 'check' that triggers no action if mismatched. It also implies that duration is optional with a default, which is in schema but the description reinforces this. The 'forEveryone' purpose is clarified in the description, which is a small addition.

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

Purpose5/5

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

The description clearly states the action ('Move the Gamemaster's view') and the resource (camera/view), with two distinct use cases: positioning to a token or point and setting zoom, including an optional group 'pull' behavior. This is specific and distinguishes it from sibling tools like 'get-canvas-view', 'ping-canvas', or 'move-token' by focusing on the GM's view manipulation rather than token placement or querying.

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 when to use it: when the GM needs to move the view or zoom, and when forEveryone is used to sync all players, with a prerequisite of 'Allow Write Operations'. It does not explicitly mention alternatives like 'ping-canvas' for lightweight alerts, but the context is clear enough that an agent would know to use this for camera movement rather than other view-related tools.

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

pass-cardsPass cardsA

Pass chosen cards from one stack to another, such as from a hand to a pile. Cards are named by id or by exact name within the source stack. Needs the write switch.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesPass to: id or exact name of the card stack
fromYesPass from: id or exact name of the card stack
cardIdsYesIds or exact names of the cards
chatNotificationNoPost Foundry's chat message about the move (default false)

TDQS

A4.1/5.0
Behavior4/5

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

Beyond the annotations, the description adds meaningful behavioral context: the tool requires the write switch, and cards can be referenced by id or exact name scoped to the source stack. It does not detail side effects such as ordering or failure behavior, but for a non-destructive card move this is reasonable.

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 main operation is front-loaded and the naming constraint plus write-switch requirement are compact. 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 move operation with three required parameters, the definition covers purpose, card naming, and permission prerequisite. No output schema exists, but the expectations for a move tool are mostly satisfied; it could still mention what happens to stack order or what response is returned.

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 schema already documents from/to/cardIds. The description adds value by clarifying that names are exact and resolved within the source stack, which prevents ambiguous matches. This goes slightly beyond the baseline for high schema coverage.

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

Purpose4/5

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

Description states a specific action ('Pass chosen cards from one stack to another') with a concrete example ('from a hand to a pile'). It is arguably a near-tautology of the name, but the stack-to-stack scope and hand-to-pile example clarify the exact operation. It does not explicitly contrast itself with deal/draw siblings, but the chosen-card semantics separate it from them.

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

Usage Guidelines4/5

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

The description gives a clear use case: moving selected cards between stacks, such as hand to pile, and states the write-switch prerequisite. It does not explicitly name alternative tools or say when not to use it, but the operation is specific enough that the intended context is clear.

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

pf2e-manage-conditionsManage Pathfinder 2e conditionsA
Destructive

[Pathfinder 2e only] List, set, increase, decrease, remove or toggle a condition on an actor, with values such as frightened 2 or drained 1. pf2e keeps conditions as items with a value, which toggle-token-condition cannot set or read back; this tool writes through the system's own condition handling and reads the result back. A condition granted by another one (e.g. by grabbed) is removed with its source, not here. persistent-damage needs its damage and is applied on the sheet.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueNoFor set on a valued condition: the value, at least 1.
actionYeslist: the conditions on the actor. set: to a value (valued conditions) or present. increase and decrease: by amount (default 1); decreasing a valued condition to 0 removes it. remove. toggle: remove when present, else add with value 1.
amountNoFor increase and decrease on a valued condition: the step, at least 1. Default 1.
conditionNoCondition slug or name, e.g. "frightened", "off-guard" ("flat-footed" is accepted), "drained". Required except for list.
actorIdentifierYesActor id, exact actor name (case is ignored when unique) or token id.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already mark destructiveHint=true, but the description adds meaningful behavioral detail: it writes through the system's own condition handling, reads the result back, handles source-granted conditions in a specific way, and notes persistent-damage needs its damage. This goes beyond the structured annotations without contradicting them.

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

Conciseness5/5

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

Four sentences, front-loaded with the system scope and action list, then the key differentiator and limitations. Every sentence carries useful information and there is no filler or repetition of schema details.

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 five parameters, no output schema, and sparse annotations, the description covers the action semantics, system-specific behavior, and key limitations well. The main gap is that it does not describe the format or content of the 'list' result or what 'reads the result back' returns, but the schema and annotations carry much of the remaining burden.

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 beyond the schema with concrete examples like 'frightened 2 or drained 1', the behavior of decreasing to 0, and the persistent-damage caveat. It does not fully replace the schema's own detailed parameter descriptions, but it supplements them 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 states a clear action set ('List, set, increase, decrease, remove or toggle') on a specific resource ('a condition on an actor'), and explicitly distinguishes itself from toggle-token-condition. This makes the tool's purpose unambiguous and differentiates it from siblings.

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 this tool should be used instead of toggle-token-condition ('cannot set or read back') and notes important exclusions ('A condition granted by another one ... is removed with its source, not here'). It also flags persistent-damage's special requirement, giving an agent clear routing and limitation guidance.

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

ping-canvasPing a pointA

Show a ping at a token or a point to everyone viewing the scene, optionally pulling their views there. Needs "Allow Write Operations" and the drawn canvas in the Gamemaster's browser.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNox in pixels
yNoy in pixels
zoomNoZoom for pulled views
styleNoLook of the ping; default pulse
tokenIdNoPing this token: id or name
pullViewsNoAlso move every view on the scene there
sceneIdentifierNoOptional check: the scene the Gamemaster views must be this one (id or name), else nothing happens

TDQS

A4.2/5.0
Behavior4/5

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

Annotations provide readOnlyHint false and other hints false, so description must clarify behavior. It does: states it requires 'Allow Write Operations' and the Gamemaster's browser, and mentions optional pulling views. It does not disclose if the ping disappears after a few seconds or if it can be used without a token, but the essential constraints are covered.

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, both essential. The first states the action and scope, the second gives the critical prerequisite. No fluff or repetition.

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 7 optional parameters, it is a fairly complex tool, and the description covers the main functionality and constraints. However, it lacks an explanation of the relationship between tokenId and x/y (are they mutually exclusive?) and does not describe the return value or side effects. But output schema absence means description carries more weight, yet the essential aspects are clear.

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 has a clear description. The description adds overall purpose but does not add extra nuance beyond the schema, such as how to disambiguate tokenId vs x/y coordinates. 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?

Clear verb-action: 'Show a ping at a token or a point to everyone' describes a visually pointing to a location. It distinguishes from siblings like get-canvas-view or pan-camera by specifying the ping effect and optional view pulling.

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 the condition for use: 'to everyone viewing the scene' and notes the prerequisite of write permissions and the drawn canvas. However, does not explicitly list when not to use it or alternative tools for similar actions (e.g., pan-camera), 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.

refresh-scene-thumbRenew scene thumbnailA
Idempotent

Create the thumbnail of a scene anew. Needed after a background swap: Foundry keeps showing the old picture in the sidebar until then.

ParametersJSON Schema
NameRequiredDescriptionDefault
sceneIdentifierYesId or name of the scene. A name matches exactly, or in any case when only one scene has it.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already establish idempotentHint=true and destructiveHint=false. The description adds useful behavioral context by explaining that Foundry does not automatically refresh the sidebar thumbnail and that this tool is the way to force it.

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 the core action first and the reason immediately after. Every sentence contributes; no filler or schema repetition.

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

Completeness5/5

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

For a single-parameter, idempotent, non-destructive operation with no output schema, the description covers what, why, and when. Nothing needed to call it correctly is missing.

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

Parameters3/5

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

The input schema already documents sceneIdentifier fully with 100% coverage, so the description does not need to repeat parameter details. It adds no parameter-specific semantics, matching the baseline for well-covered schemas.

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 says exactly what the tool does — 'Create the thumbnail of a scene anew' — and anchors it to a recognizable use case (background swap). This clearly separates it from scene-update or scene-read operations such as get-scene-image.

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

Usage Guidelines4/5

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

Gives a concrete trigger: needed after a background swap because Foundry keeps showing the old picture in the sidebar. It does not explicitly enumerate alternatives or exclusions, but the intended context is unambiguous.

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

remove-actor-ownershipRemove actor ownershipA
DestructiveIdempotent

Remove the explicit permission a player has on an actor, so the default level of the actor applies again; the answer warns when that default still grants access. To hide an actor completely from a player, assign NONE with assign-actor-ownership instead. Needs confirmRemoval, and confirmBulkOperation when more than one actor or player is affected.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmRemovalNoMust be true, otherwise nothing is removed
actorIdentifierYesId of the actor, its exact name (case does not matter) or the id of one of its tokens, or one of the phrases of assign-actor-ownership
playerIdentifierYesThe player by id or exact name, the name of an actor a player owns, or "party"
confirmBulkOperationNoMust also be true when more than one actor or player is affected

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the description doesn't need to restate those. The description adds valuable behavioral context: the operation falls back to the default permission level, and the tool warns when that default still grants access. It also discloses the confirmation requirement, which is a behavioral gate. Minor gap: it doesn't describe the exact response shape, but no output schema exists and the core behavior is well covered.

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 earning its place: the core behavior, the alternative tool for a different intent, and the required confirmation flags. The most important information is front-loaded. No fluff or repetition.

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 destructive, idempotent mutation with no output schema, the description covers the essential context: what is removed, what happens next, when to use the sibling, and what confirmations are needed. It doesn't describe the response format, but the annotations and schema already cover the safety profile and parameters. A small gap is not explaining what 'the answer warns' means in terms of response structure, but this is minor.

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 schema already documents all four parameters. The description adds meaning by explaining the semantic effect of confirmRemoval and confirmBulkOperation (they are gates that must be true), and by clarifying the relationship between removing permission and falling back to defaults. It doesn't repeat parameter names unnecessarily, but it does add 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 states a specific verb ('Remove'), a specific resource ('explicit permission a player has on an actor'), and the consequence ('the default level of the actor applies again'). It also distinguishes itself from the sibling assign-actor-ownership by explaining when to use that tool instead. This is a clear, non-tautological 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 says when to use this tool (remove explicit permission) and when not to (to hide an actor completely, use assign-actor-ownership with NONE). It also states the required confirmation flags (confirmRemoval, and confirmBulkOperation for bulk operations), which is essential usage guidance.

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

remove-combatantsRemove combatantsA
DestructiveIdempotent

Remove combatants from a combat encounter, by combatant id or token id. Their initiative is lost; the tokens stay on the scene. One unknown id stops everything.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoOnly report what would happen and whether it is permitted; change nothing
combatIdNoId of the combat encounter, as list-combats shows it. Without it the active encounter is used.
tokenIdsNoIds of tokens whose combatants to remove
combatantIdsNoIds of combatants to remove

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already mark destructive=true, but the description adds genuinely important behavioral details: initiative is lost, tokens remain on the scene, and any unknown id aborts the entire operation. This goes well beyond the structured annotations and protects the agent from assuming physical token deletion or partial 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?

Three short sentences with no filler. The core action is front-loaded, followed by the two most decision-relevant consequences.

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 key behavioral consequences (initiative, tokens, all-or-nothing failure) and works with the rich schema and destructive/idempotent annotations. It does not describe the return value, but no output schema exists and the essential call semantics are 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 coverage is 100%, so the schema already documents all four parameters. The description reinforces that combatantIds and tokenIds are alternative ways to identify what to remove and that an unknown id blocks everything, but it does not add substantial detail beyond the 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?

States a specific verb ('remove') and resource ('combatants from a combat encounter'), and clarifies identification by combatant id or token id. This clearly distinguishes it from sibling tools like add-combatants, update-combatant, and change-combat-turn.

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 makes the removal use case obvious and explains core mechanics, but it never explicitly says when to prefer this over related tools such as add-combatants or update-combatant. Usage is implied rather than contrasted.

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

replace-journal-pageReplace the content of a pageA
DestructiveIdempotent

Replace the whole content of one text page, and optionally rename it, in one write. Content with HTML tags is stored exactly as sent. Plain text becomes paragraphs: a blank line starts a new paragraph, a single line break stays a break, and nothing is removed; Markdown is not converted, and the result says when the text looks like Markdown. Empty content is refused. The page is read back and compared; the result carries its length, not the content. To append instead, use journal-append-page. Needs the journal permission "create and change".

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesId of the text page, from list-journals.
journalIdYesId of the journal, from list-journals.
newContentYesThe new content: HTML, or plain text that becomes paragraphs.
newPageNameNoNew name of the page. Leave out to keep the name.

TDQS

A4.7/5.0
Behavior5/5

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

Despite annotations already covering readOnlyHint=false and destructiveHint=true, the description adds substantial behavioral context: HTML is stored exactly, plain text gets paragraph semantics, Markdown is not converted, empty content is refused, the page is read back and compared, and the result carries only length. It also discloses the required permission, which directly helps the agent assess feasibility.

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

Conciseness5/5

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

The description is dense but every clause earns its place: core operation, content transformation rules, refusal behavior, verification step, output shape, and a sibling pointer. The main action is front-loaded, and the prose stays tight without filler.

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 four parameters and no output schema, the description provides a complete picture: what is replaced, how content formatting behaves, what happens on empty input, what the result contains, and what permission is required. Nothing essential for correct invocation 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?

Schema description coverage is 100%, so the baseline is 3. The description goes beyond the schema by explaining how newContent is interpreted (HTML vs. plain text paragraph rules) and that empty content is rejected, which adds meaningful parameter semantics. It doesn't detail parameters in the same order, but the content transformation guidance is valuable.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Replace the whole content of one text page, and optionally rename it.' It clearly distinguishes this from sibling tools like journal-append-page and journal-rename by naming an alternative. The subject and scope are 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?

It gives clear usage context by noting when to use this tool ('Replace the whole content') and explicitly points to journal-append-page as the alternative for appending. It does not enumerate all sibling alternatives such as journal-rename or journal-set-page, but the main when-to-use instructions are present and clear.

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

request-player-rollsRequest a roll from a playerA

Put a roll button into the chat so a player rolls on their own device. Only that player and a Gamemaster can press it, and it rolls once. Whether the roll is PUBLIC (visible to all players) or PRIVATE (visible to the target player and the Gamemaster only) is a game decision: if the user did not say it, ask "Do you want this to be a PUBLIC roll or a PRIVATE roll?" and wait for the answer, then set isPublic and userConfirmedVisibility. targetPlayer is a player name or a character name. The formula comes from the adapter of the game system; without one, only rollType "custom" with a formula in rollTarget works. A player who is offline gets no request.

ParametersJSON Schema
NameRequiredDescriptionDefault
flavorNoThe occasion, shown as context in the chat
isPublicYestrue: everyone sees the roll; false: only the target player and the Gamemaster
rollTypeYesability, skill, save, attack, initiative or custom, as far as the game system offers them; custom takes a formula in rollTarget
rollTargetYesWhat is rolled: an ability like "dex", a skill like "perception", or the formula for custom like "1d100"
rollModifierNoAdded to the formula, e.g. "+2", "-1" or "+1d4"
targetPlayerYesName of the player or of their character
userConfirmedVisibilityYesMust be true: the user chose public or private, or was asked

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the sparse annotations, the description reveals important behavior: the button is interactive, only the target player and GM can press it, it rolls once, offline players get no request, and the visibility setting requires user confirmation. It also explains adapter limitations for formula-based rolls.

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?

Every sentence earns its place: main action is front-loaded, the visibility decision process is clearly specified, and the adapter/offline constraints are all relevant. The description is dense but not padded.

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 having no output schema, the description covers all required parameters, the forced visibility clarification, permission restrictions, adapter limitations, one-shot behavior, and offline handling. This is sufficient for an agent to select and invoke the tool correctly.

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

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, but the description adds essential semantics: targetPlayer can be a player or character name, userConfirmedVisibility must be set only after asking and waiting for an answer, and formula support depends on the game system adapter. This goes beyond the JSON schema's field 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 uses specific verb-resource language: it puts a roll button into chat so a player rolls on their own device. It distinguishes itself from sibling dice/roll tools by emphasizing the per-player device interaction and target/GM-only press permissions.

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

Usage Guidelines4/5

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

The description clearly indicates when to use this tool: when a player should roll on their own device and when a visibility decision must be resolved. It gives behavioral constraints such as offline players receiving no request weekends, but it does not explicitly name alternative sibling tools or state 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.

reset-card-stackReset a card stackA
DestructiveIdempotent

Reset a stack through Foundry: a deck takes back every card it gave out, from all hands and piles; a hand or pile returns its cards to their decks. Needs the write switch.

ParametersJSON Schema
NameRequiredDescriptionDefault
stackIdYesThe stack: id or exact name of the card stack
chatNotificationNoPost Foundry's chat message about the move (default false)

TDQS

A4/5.0
Behavior4/5

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

Annotations already mark the tool as readOnly=false and destructive=true, so the description adds value beyond annotations by clarifying that cards are returned rather than destroyed and that the write switch permission is required. This gives an agent useful operational context without contradicting the annotation hints.

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 with no filler. The action and permission requirement are front-loaded, and the second clause explains the differing behaviors for decks versus hands/piles without 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 the simple two-parameter schema and clear annotations, the description is nearly complete for correct invocation: it names what happens to cards, distinguishes stack types, and notes the required permission. A short note on the return shape would be a minor enhancement, especially since no output schema exists, but it is not essential for correct 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 description coverage is 100%, so the schema fully documents stackId and chatNotification. The description adds no parameter-level meaning beyond what the schema already states; the baseline of 3 applies because the schema carries the parameter documentation burden.

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 ('Reset a stack through Foundry') and specifies the exact behavior for decks versus hands/piles: a deck takes back every card it gave out, while a hand or pile returns cards to their decks. This distinguishes reset-card-stack from sibling tools like shuffle-card-stack, deal-cards, and delete-card-stack.

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

Usage Guidelines3/5

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

The description implies when to use the tool by explaining what a reset does, and it mentions the 'write switch' prerequisite. However, it does not explicitly say when not to use it or name alternatives such as delete-card-stack for permanently removing a stack, leaving usage guidance to inference rather than direct routing.

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

reset-roll-tableReturn drawn entries to a roll tableA
DestructiveIdempotent

Return every drawn entry of a roll table, so all entries can be drawn again.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableIdYesId or exact name of the table

TDQS

A4/5.0
Behavior4/5

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

The description adds behavioral meaning beyond the annotations by specifying that every previously drawn entry is returned to the drawable pool and that the table itself is not replaced. It complements destructiveHint and idempotentHint without contradicting them, though it does not discuss irreversibility or return value.

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

Conciseness5/5

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

One short sentence with no filler; the action is stated first and the purpose/clarifying consequence follows immediately. Every word 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 single-parameter tool with annotations covering safety and idempotency, the description conveys the state change and intended outcome completely. It is slightly short on usage context around what the tool returns or how it relates to draw-roll-table, but these are minor for correct 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?

The input schema already documents tableId with 100% coverage, and the description adds no parameter-specific meaning. Baseline 3 is appropriate because the schema carries the parameter documentation burden.

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 concrete action ('Return every drawn entry') tied to a clear resource (roll table) and explains the resulting state ('so all entries can be drawn again'). This differentiates it from siblings like draw-roll-table, get-roll-table, and update-roll-table.

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

Usage Guidelines3/5

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

The intended use is implied: call this after draws when the table's full pool should be available again. However, it does not explicitly name alternatives or state when not to use it, so an agent must infer the decision context from the tool name and siblings.

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

restore-sceneRestore sceneA

Recreate a scene from a JSON file in the Foundry data directory, for example one pulled out of a world backup, with its walls, tiles, lights, sounds, tokens and levels. The file travels as a file because a scene with walls is too large for the bridge. The scene always gets a new id unless keepId is set, is never active, and never overwrites an existing scene.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoA different name for the restored scene
indexNoEntry of the list to restore; needed when the list holds more than one
keepIdNoKeep the id of the backup. Only when the original scene is really gone.
jsonPathYesPath of the JSON file inside the Foundry data directory, e.g. "Bergung/szenen.json". One scene or a list.
folderPathNoFolder path, nested with "/"
navigationNoShow the scene in the navigation

TDQS

A4.2/5.0
Behavior5/5

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

The description discloses critical behavioral guarantees beyond the annotations: 'always gets a new id unless keepId is set, is never active, and never overwrites an existing scene.' It also explains the file-based transport rationale. These details are essential for safe invocation and are not present in the minimal annotations (readOnlyHint=false, destructiveHint=false), so the description carries the full burden and does exceptionally.

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 concise sentences, all relevant. It starts with the core purpose, then explains the file rationale, and ends with critical behavioral constraints. There is no redundancy or filler, and the information is front-loaded 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?

The description covers the essential operational context: data directory location, inclusion of scene elements, id handling, and non-overwrite behavior. It does not specify return values or error handling, but given the lack of an output schema, these are less critical. Minor gaps remain (e.g., what happens on invalid file), but overall it is sufficiently complete for an agent to 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 coverage is 100%, and each parameter has a clear description. The tool description adds minimal new information about parameters; it only reiterates the keepId behavior, which is already stated in the schema. With full schema coverage, the baseline of 3 is appropriate, and the description does not enhance parameter understanding beyond that.

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

Purpose5/5

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

The description states a clear and specific action: 'Recreate a scene from a JSON file in the Foundry data directory' with explicit mention of included elements (walls, tiles, lights, sounds, tokens, levels). It also notes that it never overwrites and always assigns a new id, distinguishing it from a simple create operation. This is sufficiently specific to avoid confusion with sibling tools like create-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 implies usage via the example 'one pulled out of a world backup', but does not explicitly state when to use this tool versus alternatives (e.g., create-scene) or when not to use it. There is no explicit contrast with siblings or exclusion criteria, so guidance is largely implied rather than direct.

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

roll-actor-checkRoll actor checkA

Roll a check of the game system for an actor, such as ability, skill, save or attack. The formula comes from the game system adapter; in a system without one the answer is SYSTEM_NOT_SUPPORTED and roll-dice rolls a free formula. To let a player roll, use request-player-rolls.

ParametersJSON Schema
NameRequiredDescriptionDefault
flavorNoText shown with a posted roll
toChatNoPost the roll to the chat. Default false: nothing is posted
actorIdYesActor id or exact name
rollModeNoWho sees a posted roll: publicroll everyone, gmroll Gamemasters (default), blindroll Gamemasters only and hidden from the roller, selfroll only the bridge user
rollTypeYesRoll type the adapter offers, e.g. ability, skill, save, attack
rollTargetNoWhat is rolled, e.g. "dex", "Perception" or a weapon name
rollModifierNoExtra modifier, e.g. "+2"

TDQS

A4.4/5.0
Behavior4/5

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

The description discloses that the formula comes from the game system adapter and that unsupported systems return SYSTEM_NOT_SUPPORTED, which is valuable behavior beyond the annotations. The annotations do not claim read-only or destructive behavior, and the description does not contradict them; it adds useful fallback context.

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

Conciseness5/5

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

The description is compact, front-loaded with the core purpose, and each sentence earns its place by covering the main action, the adapter fallback, and the player-roll alternative. There is no wasted wording.

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 roll action with a well-described 7-parameter schema and annotations, the description covers the key non-obvious behaviors: adapter-provided formula, SYSTEM_NOT_SUPPORTED fallback, and the request-player-rolls alternative. Without an output schema, a brief note on return shape would be ideal, but the description is still sufficient for correct 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 description coverage is 100%, so the schema already documents all parameters. The description adds a few helpful examples for rollType (ability, skill, save, attack) and explains the adapter source, but it does not substantially expand on the parameter meanings beyond what the schema 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 uses a specific verb ('Roll') with a specific resource ('a check of the game system for an actor') and gives concrete examples such as ability, skill, save, or attack. It also distinguishes itself from roll-dice and request-player-rolls, so an agent can tell it apart from nearby sibling tools.

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

Usage Guidelines5/5

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

It explicitly names the alternative tools and the conditions that select them: when the system has no adapter, roll-dice rolls a free formula; to let a player roll, use request-player-rolls. This is clear when-to-use versus 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.

roll-diceRoll diceA

Roll a free formula in Foundry, in any game system, e.g. "2d6+3" or "4d6kh3". Returns the total and every single die result. With actorId, @ references use that actor's roll data. Nothing is posted unless toChat is true.

ParametersJSON Schema
NameRequiredDescriptionDefault
flavorNoText shown with a posted roll
toChatNoPost the roll to the chat. Default false: nothing is posted
actorIdNoActor id or exact name whose roll data fills @ references
formulaYesFoundry roll formula
rollModeNoWho sees a posted roll: publicroll everyone, gmroll Gamemasters (default), blindroll Gamemasters only and hidden from the roller, selfroll only the bridge user

TDQS

A3.9/5.0
Behavior4/5

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

Beyond the annotations, the description discloses the return value (total and every die result), the @-reference resolution behavior, and the key side effect: nothing is posted unless toChat is true. This gives an agent a clear behavioral model despite the sparse 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?

Three short sentences pack the primary action, examples, return behavior, actorId behavior, and posting side effect with no filler. The most important information is front-loaded.

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

Completeness4/5

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

For a 5-parameter tool with full schema coverage and no output schema, the description covers formula syntax, return behavior, actor scoping, and chat side effect. It does not specify a structured return shape or enumerate all rollMode implications, but the schema covers the enum and the description is sufficient 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?

Input schema already documents all 5 parameters (100% coverage), so the baseline is 3. The description adds value by giving formula syntax examples and explaining how actorId affects @ references, which is not fully captured in the schema.

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

Purpose4/5

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

The description uses a specific verb and resource ('Roll a free formula in Foundry') with concrete examples ('2d6+3', '4d6kh3'), making the tool's action clear. It does not explicitly name sibling roll tools like roll-actor-check or roll-initiative, so it stops short of full differentiation.

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 establishes a general use case: rolling arbitrary formulas in any game system. The actorId conditional ('@ references use that actor's roll data') provides context but no explicit guidance about when to choose roll-dice over sibling roll tools 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.

roll-initiativeRoll initiativeA
Destructive

Roll initiative with the game system's formula: for all combatants, only non player characters, or the combatants named. By default only those without initiative roll. Rolls are posted to the chat only with toChat; a hidden combatant is never posted publicly.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoall (default) or npcs, combatants no player owns
toChatNoPost the roll to the chat. Default false: nothing is posted
formulaNoFormula instead of the system formula, e.g. "1d20+2"
combatIdNoId of the combat encounter, as list-combats shows it. Without it the active encounter is used.
rollModeNoWho sees a posted roll: publicroll everyone, gmroll Gamemasters (default), blindroll Gamemasters only and hidden from the roller, selfroll only the bridge user
onlyMissingNoOnly combatants without initiative (default true)
combatantIdsNoRoll exactly for these combatants; scope and onlyMissing do not apply then

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already flag destructiveHint and non-idempotent behavior, and the description adds meaningful behavioral detail: rolls are only posted to chat when toChat is enabled, and hidden combatants are never posted publicly. It also clarifies the default of rolling only for combatants missing initiative. No contradiction with annotations is 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?

Three short sentences, each adding distinct value: purpose and scope, default filtering behavior, and chat/privacy behavior. There is no filler, no repetition of schema field names, and the most important information is front-loaded.

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

Completeness4/5

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

For a 7-parameter tool, the description plus fully covered schema is sufficient: core behavior, scope defaults, and privacy constraints are disclosed. It doesn't describe return values, but there is no output schema, and the main calling decisions—scope, toChat, combatId, and rollMode—are covered either in the description or the input schema.

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%, which satisfies the baseline, and the description goes further by explaining the meaning of scope ('all', 'non player characters', 'combatants named'), onlyMissing ('only those without initiative roll'), and toChat ('posted to the chat only with toChat'). formula, combatId, and rollMode are left to the schema, which already documents them adequately.

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

Purpose4/5

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

The description names a specific action ('Roll initiative'), a target (combatants), and the source of the formula (the game system's formula), and it lays out scope variants: all, NPCs, or named combatants. It doesn't explicitly distinguish itself from sibling tools like roll-dice or roll-actor-check, but the combatant-and-initiative focus makes the purpose clear.

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 gives useful context for when this tool is relevant—initiative rolls in combat—and states defaults such as only rolling for combatants without initiative and not posting to chat unless toChat is set. It does not name alternatives or give explicit when-not-to-use guidance versus roll-dice/roll-actor-check, so usage guidance is implied rather than explicit.

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

search-character-itemsSearch character itemsA
Read-onlyIdempotent

Search inside one actor instead of loading all of it: items whose name or description contains the query, optionally of one item type or category, or actions and effects. Each match has id, name, type, a short plain description and the details the adapter of the game system adds (range, target, level, equipped and so on). Categories come from the adapter; without one there are none, and an unknown category is refused, never ignored.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoAn item type of the game system; "action" searches actions and "effect" effects instead of items
limitNoHow many matches to return, 20 when left out, 200 at most
queryNoPart of the name or description to look for, ignoring case; leave out to take every item
categoryNoA category the adapter of the game system defines, such as "prepared" or "equipped"; an unknown one is refused with the valid ones
characterIdentifierYesThe actor to search. Id of the actor, its exact name (case does not matter) or the id of one of its tokens

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint=false, so the safe read nature is clear. The description adds valuable behavioral details: it explains the return format (id, name, type, description, adapter details), behavior for categories (no categories -> none, unknown refused with valid ones), and case-insensitive query. This exceeds annotation coverage, so a 4 is warranted.

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 and front-loaded with purpose, followed by return details and category caveats. Each sentence serves a purpose, though it could be slightly tightened. No fluff or repetition.

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 search tool with 5 parameters and no output schema, the description covers essential aspects: search scope, return contents, type variants, category behavior, and query case-sensitivity. It does not specify pagination beyond the schema's limit, but the schema covers that. Overall, it is complete 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.

Parameters4/5

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

The schema has 100% coverage, so the baseline is 3. The description goes beyond by explaining the semantics of 'type' (how action/effect differ) and category behavior (refusal with valid ones), and clarifies that omitting query returns all items. This adds value above the schema, justifying 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 opens with a specific verb 'search' and resource 'character items', and immediately clarifies the scope ('inside one actor instead of loading all of it'). It clearly distinguishes the tool from generic list operations and mentions variants (actions/effects) that differentiate it from sibling tools like get-character or list-characters.

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 states when to use it ('when you need to find specific items within an actor without loading the entire entity') and implicitly contrasts with loading all items. It does not explicitly name alternatives or state when not to use it, but the context of siblings like get-character and list-characters is implied. A minor gap is lack of explicit exclusion for cases like searching across actors or compendiums.

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

search-compendiumSearch compendiumsA
Read-onlyIdempotent

Search the names of compendium entries across all compendiums except scene compendiums. Every word of the query has to occur in the name; descriptions are not searched. Exact name matches come first. Creature filters need the adapter of the active game system: with packType "Actor" and the creature index they check real values, otherwise they are an estimate from names, and filters the system does not know are reported as ignored. For accurate filtering use list-creatures-by-criteria, and inspect single entries with get-compendium-item.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many matches to return: 50 unless given, and never more
queryYesTwo or more characters. Every word must appear in the entry name; texts inside entries are not searched.
filtersNoCreature filters for actor compendiums, read by the adapter of the running game system. Together with packType "Actor" and a built creature index they test the real values; without the index the adapter can only judge by names. The answer lists every filter the running system cannot use. list-creatures-by-criteria is the reliable way to filter.
packTypeNoSearch only compendiums of this document type, for instance Item, Actor or JournalEntry

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations' read-only and non-destructive hints, the description reveals exact-name-first ordering, word-wise matching, and the nuanced behavior of creature filters: real values with packType Actor, estimates from names otherwise, and unknown filters being reported as ignored. This is useful behavioral context beyond structured metadata.

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 dense sentences that front-load the core search behavior, then layer the important caveats about matching and filtering reliability. Every sentence adds functional information with no filler.

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 read-only search tool with a rich schema and no output schema, the description covers scope, matching semantics, ordering, filter reliability limitations, and the preferred alternatives for more precise or detailed lookups. It is complete enough for an agent to call it 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?

The schema already has detailed parameter descriptions for all four parameters, so the baseline is high. The description adds extra meaning by adding exact-match ordering, scene-compendium exclusion, and clarifying the interplay between packType, filters, and adapter behavior, which nudges it above the baseline.

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

Purpose5/5

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

The description states a specific operation: searching compendium entry names across all compendiums except scene compendiums. It also clarifies the matching rule and ordering, so an agent can distinguish it from broader listing or individual lookup tools without opening the schema.

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

Usage Guidelines5/5

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

The description explicitly directs agents to list-creatures-by-criteria for accurate filtering and to get-compendium-item for inspecting single entries. It also states exclusions such as scene compendiums and the fact that descriptions are not searched, leaving little ambiguity about when this tool fits.

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

search-journalsSearch journalsA
Read-onlyIdempotent

Find journals by a text, ignoring case, in their names and in the HTML of their text pages. Each hit names the matching pages with a short excerpt, so the page can then be read with list-journals (journalId and pageId). The search runs inside Foundry, in one request.

ParametersJSON Schema
NameRequiredDescriptionDefault
searchTypeNoSearch the names, the page content, or both (default both).
searchQueryYesThe text to look for.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already establish readOnly, non-destructive, idempotent behavior. The description adds valuable non-obvious behavioral details: case-insensitive matching, searching raw HTML content, returning excerpts per hit, and executing in one request inside Foundry.

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 earning its place: what is searched, what results look like, and how to follow up. The core behavior is front-loaded and no words are wasted.

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 read-only search tool with rich annotations and fully documented parameters, the description covers what is searched, how results are presented, and what to do next. No critical information needed to invoke it correctly 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?

Schema coverage is 100% and both parameters are described, so the baseline is 3. The description adds meaning beyond the schema by specifying case-insensitivity and that 'content' means the HTML of text pages, which clarifies how searchQuery and searchType behave.

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

Purpose5/5

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

States a specific verb and resource: 'Find journals by a text' with clear scoping to names and HTML text pages, ignoring case. It also distinguishes itself from list-journals by framing list-journals as the follow-up read step rather than the search itself.

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?

Clearly implies when to use it: when you need to locate journal pages by text. It also points to list-journals as the next step with journalId and pageId, giving the agent a usage flow, though it does not explicitly enumerate alternatives like search-compendium.

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

send-chat-messageSend a chat messageA

Post a message to the Foundry chat as the Gamemaster, or as an actor or token. Without whisperTo and whisperToGamemasters everyone sees it. Recipients are user ids or exact names; an unknown or ambiguous name sends nothing. Content is HTML.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasNoName shown as the speaker; defaults to the token or actor name
styleNoIn character, out of character, emote or other; default ic with a speaker, else ooc
flavorNoOptional small text above the message
contentYesThe message, HTML allowed
sceneIdNoScene id or exact name that holds speakerToken, when the id is on several scenes
whisperToNoOnly these users see it: ids or exact names
speakerActorNoSpeak as this actor: its id or exact name
speakerTokenNoSpeak as this token: its uuid ("Scene.<id>.Token.<id>") or its id; never its name
whisperToGamemastersNoEvery Gamemaster sees it too; alone, only Gamemasters see it

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only indicate non-readOnly and non-idempotent, so the description carries the burden. It discloses that unknown or ambiguous names cause the message to be sent to nobody, that content is HTML (implying rendering), and that default speaker/behaviors are based on actor/token. This adds significant behavioral context beyond 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?

The description is concise, with two sentences that front-load the core function and the most critical caveat (visibility). It avoids redundancy and includes the HTML note efficiently. Every sentence provides 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?

With 9 parameters and no output schema, the description covers essential behavioral context like visibility rules, recipient failure, and content format. It doesn't explain return values, but that's minor since chat messages typically don't need complex return handling. The absence of output schema is compensated adequately.

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 includes 100% parameter descriptions, so baseline is 3. The description adds a few nuances (e.g., recipient resolution failure, exact name matching) but mostly reiterates schema details. It does not use the available space to further clarify edge cases like speakerToken UUID format 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 it posts a message to Foundry chat as the Gamemaster or as an actor/token, with specific behavioral details. It distinguishes this from related tools like list-chat-messages or update-chat-message by focusing on sending new messages.

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 condition for public vs private messages ('Without whisperTo and whisperToGamemasters everyone sees it'), and warns about potential failure ('an unknown or ambiguous name sends nothing'). While it doesn't name siblings, the clear scoping to chat sending is sufficient, and the warning about recipient resolution helps avoid errors.

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

send-notificationSend a notificationA

Show a short notification (plain text, at most 500 characters) in Foundry to everyone or to chosen users, with the Gamemaster named as sender. Users are matched by id or exact name. Users who are not logged in do not get it, and it is not stored. Needs the write switch.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNoHow it looks: info (default), warn or error
usersNoIds or exact names of the users; leave out for everyone
messageYesThe text to show

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description discloses key behavioral traits: it is not stored, offline users do not receive it, users are matched by id or exact name, and it requires the write switch. This is valuable operational context that annotations alone do not provide.

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 focused sentences deliver the essential information with no filler. The main purpose and constraints come first, followed by recipient-matching rules and edge-case behavior. 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 3-parameter tool with no output schema, the description covers what the tool does, how recipients are resolved, the 500-character limit, the persistence behavior, and the required permission. Nothing essential is missing for an agent to invoke it correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents all three parameters. The description adds meaningful semantics beyond the schema, such as the 500-character limit, exact-name/id matching for users, and the non-persistence and write-switch requirements, which enrich understanding of message and users.

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 action as showing a transient notification in Foundry, specifies the recipient scope (everyone or chosen users), and notes the sender (Gamemaster). It distinguishes itself from sibling chat tools by emphasizing 'notification', non-persistence, and the 500-character limit.

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 the tool (short notifications to all or selected users, with GM as sender), and explains important eligibility constraints such as offline users not receiving it. However, it does not explicitly name alternatives like send-chat-message or state 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.

set-compendium-lockLock or unlock compendiumA
Idempotent

Lock or unlock a compendium. Which ones may be touched follows the module settings: by default every compendium, or only the ones on the release list if it has been filled in.

ParametersJSON Schema
NameRequiredDescriptionDefault
lockedYestrue to lock it, false to unlock it
packIdYesId of the compendium

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover idempotency and non-destructiveness, and the description adds a meaningful behavioral constraint: which compendiums may be touched depends on module settings. It does not contradict any annotation and gives useful context beyond the structured fields.

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

Conciseness5/5

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

The description is two sentences with no filler. The primary action is front-loaded, and the important scope constraint is stated immediately after.

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 two-parameter mutation tool with full schema coverage and relevant annotations, the description is largely complete. It covers the purpose and the key eligibility constraint, though it does not state what happens when a disallowed packId is passed.

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 documents both parameters fully (packId as the compendium ID, locked as true/false). The description adds a relevant constraint about which packIds are eligible, but it does not add syntax, format, or detailed parameter-specific semantics 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 states a specific verb (lock/unlock) and a specific resource (compendium), and the action is clearly distinct from sibling tools like delete-compendium, create-compendium, or organize-compendium. The added module-settings constraint further clarifies scope beyond a bare restatement of the title.

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

Usage Guidelines4/5

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

The description gives clear context about when the tool is permitted to act: every compendium by default, or only those on the release list if configured. It does not name an alternative tool, but no sibling provides lock/unlock functionality, so the usage context is sufficient.

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

set-door-stateOpen, close or lock doorsA
Idempotent

Set doors (walls with door "door" or "secret") to open, closed or locked. Every id must be a door of the scene, else nothing changes. Players see the change at once. Needs the level "change" for scenes.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateYesThe new state
dryRunNoOnly check and report what would happen, including a refusal; change nothing
wallIdsYesIds of the door walls, 1 to 200
sceneIdentifierNoScene id or name; default the scene that is active for everyone

TDQS

A4.7/5.0
Behavior5/5

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

The description goes beyond annotations by revealing that players see changes immediately, that invalid ids cause a no-op, and that a scene permission level ('change') is required. These behaviors are not encoded in the annotations or schema, providing substantial added context.

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

Conciseness5/5

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

Three sentences, no filler, and the core action is stated first. The validity constraint and permission requirement are included without redundancy, and each sentence 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 4 parameters, 2 required, and no output schema, the description covers the action, constraints, permission requirements, and immediate effects. The schema fully documents parameters, so nothing essential is missing for an agent to call it 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 the baseline is 3. The description adds meaningful clarification by defining which wallIds qualify as doors ('door' or 'secret' types), which is essential to avoid invalid calls. It also implicitly aligns with the state enum. This extra value warrants 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 a specific verb ('set'), a resource ('doors'), and the possible outcomes ('open, closed or locked'). It also adds precision by defining doors as 'walls with door "door" or "secret"', which distinguishes this tool from generic wall manipulation tools in the sibling list.

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

Usage Guidelines4/5

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

The description gives clear context for when to use the tool: every id must be a door, otherwise nothing changes, and permission level 'change' is required. While it does not explicitly list alternative tools, no direct door-state sibling exists, so the conditional guidance and prerequisites are sufficient.

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

set-game-pausePause or resume the gameA
Idempotent

Pause (paused: true) or resume (paused: false) the game for everyone. Needs the write switch.

ParametersJSON Schema
NameRequiredDescriptionDefault
pausedYestrue pauses, false resumes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations indicate idempotentHint=true and destructiveHint=false, and the description adds meaningful context beyond those: the change affects everyone in the game and requires write permission. This helps an agent understand the global impact and authorization needs, which annotations alone do not convey.

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 that front-loads the operation and parameter behavior, followed by a short but essential authorization note. Every word earns its place, with no redundancy or filler.

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-boolean-parameter tool, the description plus schema and annotations cover all essentials: the action, the parameter meaning, the global scope, the permission requirement, and idempotency. No output schema exists, so return-value documentation is unnecessary.

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 single parameter fully: 'true pauses, false resumes.' The description repeats this exact semantic, adding no new information about the parameter. Since schema coverage is 100%, the 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 states a clear verb-resource pair: pause or resume the game. It also clarifies that the effect applies 'for everyone,' which distinguishes this from any user-local pause or per-user state. This is unambiguous and distinct from all sibling tools.

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

Usage Guidelines4/5

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

The description communicates the core usage context: use it to pause or resume the game globally. It also includes the required permission prerequisite ('Needs the write switch'), which is practical guidance. It does not explicitly name alternative tools, but no sibling appears to offer a comparable pause/resume function, so no exclusion is necessary.

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

set-scene-playlistLink a playlist to a sceneA
DestructiveIdempotent

Link a playlist, and optionally one specific sound, to a scene so it starts when the scene is activated. Pass an empty playlistName to remove the link. The playlist has to exist in the world; use import-from-compendium first if it only exists in a compendium. Names are matched exactly; a sound may also be given as part of its name, as long as only one sound matches.

ParametersJSON Schema
NameRequiredDescriptionDefault
soundNameNoOptional track of that playlist: id, name, or a unique part of the name
playlistNameNoId or exact name of the playlist; an empty text removes the link
sceneIdentifierYesId or exact name of the scene

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations, the description discloses several behavioral traits: empty playlistName removes the link, names are matched exactly, a sound may be given as a partial name only if one match exists, and the playlist must exist in the world. This meaningfully informs an agent about edge cases and prerequisites without contradicting the destructiveHint or idempotentHint 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?

Three sentences carry the full functional contract: the main action, the removal behavior, and the matching/compendium prerequisites. Every sentence earns its place and the key operation is front-loaded.

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

Completeness4/5

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

For a three-parameter tool with no output schema, the description covers the action, removal case, matching rules, and a prerequisite. It does not specify what happens to a previously linked playlist when a new one is linked, but the idempotentHint annotation partially covers repeatability, so the remaining gap is minor.

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 beyond the schema by clarifying exact matching behavior, the partial-name uniqueness rule for soundName, and the empty-string removal semantics for playlistName, all of which help an agent construct correct arguments.

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

Purpose5/5

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

The description states a specific verb and resource: link a playlist (and optionally a sound) to a scene, with the concrete effect that it starts when the scene is activated. It also covers the inverse operation via empty playlistName, making the tool's purpose unambiguous and distinct from generic playlist or scene 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 clearly explains when to use the tool: to attach a playlist to a scene for activation-triggered playback. It also gives an explicit alternative/prerequisite by instructing the agent to use import-from-compendium first if the playlist only exists in a compendium, which is practical routing guidance.

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

set-targetsSet the Gamemaster's targetsA
Idempotent

Replace the Gamemaster's targeted tokens on the viewed scene (ids or names); an empty list clears them. Players see the target marks, and later rolls use them. Needs "Allow Write Operations" and the drawn canvas.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenIdsYesTokens to target, up to 50; empty clears
sceneIdentifierNoOptional check: the scene the Gamemaster views must be this one (id or name), else nothing happens

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description discloses key behavioral traits: replace semantics, clearing behavior on empty lists, player-visible side effects, roll integration, and operational prerequisites. It aligns with the annotations (write operation, idempotent setting, non-destructive in the resource-deletion sense) and adds meaningful context about consequences.

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 carry all essential information, with the primary action front-loaded and supporting details (effects, prerequisites) following logically. No filler or redundant restatement of the title or schema.

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

Completeness5/5

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

For a two-parameter tool with full schema descriptions and annotations, the description covers prerequisites, side effects, clearing behavior, and downstream use in rolls. There is no output schema, but nothing critical for invoking the tool correctly 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?

Schema coverage is 100%, so the baseline is 3, but the description adds value by clarifying that tokenIds accept both ids and namescars, which the schema's 'Tokens to target' string description does not explicitly convey. The sceneIdentifier semantics are already well covered by the schema's optional-check explanation.

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

Purpose5/5

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

The description opens with a specific verb and resource ('Replace the Gamemaster's targeted tokens on the viewed scene'), clearly distinguishing it from sibling token tools like move-token, update-token, or toggle-token-condition. It also specifies the mechanism (ids or names) and the empty-list clearing behavior, leaving no ambiguity about 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 provides clear context: this is for replacing the GM's targets on the current scene, and it explains why it matters ('Players see the target marks, and later rolls use them'). It also states prerequisites ('Allow Write Operations' and the drawn canvas), though it does not explicitly name alternatives or when-not-to-use scenarios.

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

set-world-settingChange a world settingA
DestructiveIdempotent

Change a world setting that is on the list of settings the AI may change (list-settings names the list; it is empty until the Gamemaster decides). Only text, number and true/false settings; the value is checked against choices and range and read back. Needs the write switch.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesKey of the setting
valueYesThe new value: text, number or true/false
dryRunNoOnly check and report what would happen; nothing is written. Needs no write permission.
namespaceYesModule, system or "core"

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=false, destructiveHint=true, and idempotentHint=true. The description adds that the value is checked against choices and range and read back, which gives insight into validation and confirmation behavior. However, it doesn't explicitly state that changes are destructive or permanent, but the annotations cover that. It also mentions the write switch, which adds context about permissions 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?

The description is concise at three sentences and front-loads the most critical constraint (the list of allowed settings) and the permission requirement. It includes only essential information without redundancy, such as the validation behavior. Every sentence carries weight.

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

Completeness4/5

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

Given the tool's moderate complexity (4 params, no output schema) and rich annotations, the description covers the key context: the allowed settings list, the value types, the validation, and the write switch. The schema covers parameter details. The description doesn't mention the return format, but the 'read back' phrase suggests confirmation. An agent can correctly invoke this tool based on the description plus schema, with the only minor gap being the exact 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 description coverage is 100%, so all parameters are described in the schema. The description adds that values can be text, number, or true/false, which maps to the 'value' parameter's generic description but adds type enumeration. It also mentions the write switch, which is not a parameter but relates to dryRun (since dryRun needs no write permission). However, the description doesn't elaborate further on each parameter, 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 'Change' and the resource 'world setting', and importantly restricts it to a specific list of settings the AI may change, distinguishing it from generic setting tools. It also mentions the value types and validation, making the purpose specific and non-tautological. This differentiates it from siblings like list-settings and get-world-info.

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: only for settings on the list that list-settings names, and it notes that the list is empty until the Gamemaster decides. It also mentions the need for the write switch, implying permission requirements. It also implies when not to use it (settings not on the list) and points to list-settings as the alternative for seeing available settings.

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

shuffle-card-stackShuffle a card stackB

Shuffle the cards of a stack through Foundry. Needs the write switch.

ParametersJSON Schema
NameRequiredDescriptionDefault
stackIdYesThe stack: id or exact name of the card stack
chatNotificationNoPost Foundry's chat message about the move (default false)

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=false and destructiveHint=false, indicating a mutating but non-destructive operation. The description adds the 'write switch' requirement, which is helpful context beyond the annotation. It doesn't detail the effect on the stack's order or any random seed behavior, but the annotation coverage is reasonable.

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?

Two short sentences, front-loaded with the action and resource, and the additional 'write switch' note is important. No wasted 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?

With output schema absent and simple parameters, the description covers the essentials. It lacks details like the exact behavior of the shuffle or any side effects, but for a straightforward operation with full schema coverage, it's minimally adequate. More could be said about the stack's order randomization or the nature of the write switch.

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 both parameters (stackId and chatNotification) are fully described in the schema. The description adds no extra parameter-level detail beyond what the schema provides, so a baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states it shuffles a card stack via Foundry, with a specific resource type. While it could differentiate from sibling card-stack tools like deal-cards or draw-cards, the verb 'shuffle' is unambiguous enough for the main purpose.

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 implies usage for shuffling a stack but gives no guidance on when not to use it or alternatives. The requirement of the write switch is mentioned, but no explicit comparison to other card tools or conditions for selection.

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

start-combatStart combatA
Idempotent

Start a combat encounter in round 1 with the first combatant of the turn order. A running encounter is left as it is and the answer says so.

ParametersJSON Schema
NameRequiredDescriptionDefault
combatIdNoId of the combat encounter, as list-combats shows it. Without it the active encounter is used.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare idempotent and non-destructive, and the description adds meaningful context: that a running encounter is left as is and the response states so. This clarifies the tool's behavior beyond what annotations alone convey.

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 core action, then the caveat. Every sentence earns its place with zero 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?

For a simple tool with one optional parameter and no output schema, it covers the primary behavior and the key edge case (running encounter). It lacks explicit note on return format, but that's not required without an 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?

The schema covers the parameter fully (description of combatId and fallback to active encounter). The tool description repeats that info without adding new semantic meaning, so baseline 3 is appropriate given 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 states a precise action ('Start a combat encounter') with specific details (round 1, first combatant of turn order) and clearly differentiates from siblings like end-combat or change-combat-turn through its unique function.

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 implies usage for initiating a combat, but does not explicitly state when to choose this over alternatives (e.g., vs. roll-initiative or change-combat-turn). The note about running encounters is behavioral, not a usage guideline. No exclusions or alternative routing provided.

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

switch-sceneSwitch sceneA
Idempotent

Activate a scene for every player, by id or name. With optimize_view the view is centred on the map and zoomed so the whole map fits. Players see the switch at once, so this is a change to the world and needs writing to be allowed.

ParametersJSON Schema
NameRequiredDescriptionDefault
optimize_viewNoCentre and fit the view on the map afterwards
scene_identifierYesId or name of the scene to activate

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false. The description adds valuable behavioral context beyond that: 'Players see the switch at once' and that it is a world change requiring write permission. It does not contradict any annotation.

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

Conciseness5/5

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

The description is three focused sentences with no filler. The core action is front-loaded, then the optimize_view behavior and the world-change/write-permission consequence are each given one compact sentence.

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 low-complexity tool with two fully documented parameters, no output schema, and idempotentHint=true, the description covers the essential behavior, the view option, and the permission requirement. Nothing critical is missing for an agent to invoke it correctly.

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

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 mostly restates what the schema already says: scene_identifier is 'Id or name' and optimize_view centers the view. It adds little substantive 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 uses a specific verb and resource: 'Activate a scene for every player, by id or name.' It clearly distinguishes switching/activating a live scene from sibling operations like list-scenes, get-current-scene, create-scene, or update-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 conveys an important prerequisite: 'this is a change to the world and needs writing to be allowed.' It implies when the tool is applicable but does not explicitly contrast it with alternatives such as update-scene or get-current-scene, leaving some routing to inference.

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

toggle-token-conditionToggle token conditionA

Set or remove a condition (such as prone, poisoned, blinded) on the actor of a token. active true sets it, false removes it, and without active it toggles. conditionId is the id from get-available-conditions or the name. On a linked token the condition lands on the actor and shows on all its tokens; that also needs the actor permission. Removing takes only the effects of that condition. The state is read back. level sets a condition with levels, such as frightened 2 in Pathfinder 2e or pain level 2 in DSA5, and 0 removes it; it needs an adapter for the game system that knows the levels.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNoOptional level of a condition with levels, 0 removes it; leave out for a condition without levels
activeNotrue to set, false to remove; leave out to toggle
tokenIdYesId of the token on that scene, as get-current-scene lists it. Not a name, not an actor id.
conditionIdYesId of the condition, or its name in any case
sceneIdentifierNoScene of the token, by id or name. Without it the scene that is active for everyone is used; every answer names the scene.

TDQS

A4.2/5.0
Behavior5/5

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

The description extensively discloses behavior beyond the sparse annotations: the toggling semantics, side effects on linked tokens (lands on actor and shows on all tokens), required actor permission, that removal only removes that condition's effects, that state is read back, and that level-based conditions need a system adapter. This is rich, non-obvious behavioral context that helps an agent predict outcomes 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 dense and full of useful information, but it is a bit lengthy, covering many edge cases and examples. It is front-loaded with the primary action and then explains parameters and behaviors. While every sentence adds value, some redundancy with schema descriptions (e.g., 'active' semantics) could be trimmed. It is not overly verbose, but not as tight as it could be.

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 covers the main behavior, permissions, side effects, level handling, and state read-back. It is reasonably complete, though the exact nature of the returned state is vague ('The state is read back') and edge cases like invalid conditionId or unauthorized access are not addressed. Given the tool's complexity, the description provides solid coverage without being exhaustive.

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

Parameters4/5

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

Although the schema already covers all five parameters and has 100% description coverage, the tool description adds value with extra examples and nuances: 'frightened 2 in Pathfinder 2e or pain level 2 in DSA5' for level, and the requirement that 'it needs an adapter for the game system that knows the levels.' It also clarifies that conditionId can come from get-available-conditions, which is not in the schema description. This surpasses a baseline of 3.

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

Purpose4/5

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

The description clearly states the action ('Set or remove a condition') and the resource ('on the actor of a token'), with examples like prone, poisoned, blinded. It identifies the main toggle behavior with 'active true sets it, false removes it, and without active it toggles.' However, it does not explicitly contrast with sibling tools such as manage-effects or pf2e-manage-conditions, so it lacks an explicit sibling differentiation.

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

Usage Guidelines4/5

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

The description gives clear operational guidance: how to use the 'active' parameter, that conditionId can be an id or name from get-available-conditions, and that linked tokens require actor permission. It provides context for correct invocation (e.g., level behavior and adapter dependency) but does not explicitly specify when to prefer this tool over alternatives or list exclusions.

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

undo-changeUndo changesA
Destructive

Undo changes from the change log: one change (changeId), the changes of one tool call (callId, optionally only the last count of them), or without either the latest tool call that is not undone yet. Updates get their recorded fields back, created documents are removed (only if unchanged since), deleted documents are recreated with their old id. Refused as a whole, with the cause, when a change cannot be undone (chat messages, notifications, world time, pause, files, settings), when the permission level for the original change is missing, or when the documents changed since (force: true restores fields anyway, never removes). Every undo is itself logged; undo that entry to redo. Use dryRun first.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoWith callId or alone: only the last this many changes, 1 to 50
forceNoRestore changed fields even when the document changed since the entry; default false
callIdNoId of a tool call from list-changes; undoes its changes newest first
dryRunNoOnly check and show what would be undone; nothing is written
changeIdNoId of one change from list-changes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only indicate destructive/non-readonly/non-idempotent, but the description adds rich behavioral detail: updates get fields restored, created documents are removed only if unchanged, deleted documents are recreated with old ids, refusal causes, force semantics, and the fact that every undo is logged so undoing it redos. No contradiction with annotations.

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?

Dense and front-loaded with the core purpose, then modes, effects, refusal causes, redo behavior, and dryRun advice. Every sentence earns its place, though a bulleted structure would improve 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?

For a complex destructive tool with no output schema, it covers selection, effects, refusals, permissions, force behavior, and the dryRun safeguard. It does not describe the actual return/result payload, but the dryRun guidance partially compensates for that gap.

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 essential cross-parameter meaning: how changeId, callId, and count combine, the default behavior when neither is given, force's 'restores fields anyway, never removes' effect, and dryRun's no-write behavior. These semantics are not derivable from the individual 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?

States a specific verb ('undo') and a specific resource ('changes from the change log'), and immediately distinguishes the three selection modes: one change, one tool call, or the latest not-undone call. This clearly differentiates it from siblings like list-changes and the many mutation 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?

Gives clear operational context: selection modes, refusal conditions, and the explicit instruction to use dryRun first. It does not name alternatives, but the selection logic itself makes the intended use obvious, and the changeId/callId schema descriptions reference list-changes.

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

update-canvas-elementsChange walls, lights and other canvas elementsA
DestructiveIdempotent

Change up to 200 elements of one type on a scene: each entry is { id, changes }, with Foundry fields and dotted keys such as "config.dim". Wall words as in create-canvas-elements. Every id is checked first; one unknown id changes nothing. Fields already holding the value are not written. Needs the level "change" for scenes.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoOnly check and report what would happen, including a refusal; change nothing
updatesYesThe changes, 1 to 200: { id, changes }
elementTypeYesType of all elements in this call
sceneIdentifierNoScene id or name; default the scene that is active for everyone

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate destructive and idempotent behavior. The description adds specific guarantees: all IDs are checked first (one unknown ID changes nothing) and fields already holding the value are not written, which explains the idempotency. It also adds the 'change' scene permission requirement. This goes beyond the annotations without contradicting them.

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 action and limit, then provides format, atomicity, and permission details. It is compact and avoids redundancy with the schema, though it could be slightly more 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?

For a mutation tool without an output schema, the description covers key operational aspects: element type, update format, limits, atomic validation, permission, and behavior on unchanged fields. It does not describe the return value, but that is a minor gap given the rich annotations and the clarity of the 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%, so parameters are already documented. The description adds useful semantics: it clarifies the structure of the updates array as { id, changes }, gives an example of Foundry fields ('config.dim'), and references create-canvas-elements for wall format. This adds meaning beyond the schema's repetitive 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 states a specific verb ('Change') and resource ('up to 200 elements of one type on a scene'), and clarifies it updates existing elements. It is clearly distinct from sibling tools like create-canvas-elements or delete-canvas-elements based on the wording and scope.

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

Usage Guidelines3/5

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

The description implies usage by saying 'Wall words as in create-canvas-elements', referencing a sibling for format, and notes the required 'change' permission level. However, it does not explicitly state when to use this tool instead of alternatives or when not to use it, leaving some choice implicit.

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

update-chat-messageChange a chat messageA
DestructiveIdempotent

Change the content or flavor of a chat message written by the Gamemaster the bridge runs as. Who sees the message does not change; send a new message for other recipients.

ParametersJSON Schema
NameRequiredDescriptionDefault
flavorNoNew flavor; an empty text removes it
contentNoNew content, HTML allowed
messageIdYesId of the message

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already flag this as destructive and non-read-only, and the description adds an authorization boundary (only messages written by the Gamemaster the bridge runs as) and a visibility guarantee (recipients do not change). It doesn't spell out return behavior, but that is not essential for invocation.

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

Conciseness5/5

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

Two sentences, zero filler, with the core action and scope front-loaded before the alternative-recipient caveat. Every clause 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 simple 3-parameter, 1-required update with no output schema, the description plus annotations cover scope, mutation, destructive behavior, and alternative routing. No critical information for calling it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so parameter meaning is fully documented in the schema. The description only restates the content-or-flavor distinction, adding no syntax, constraints, or defaults 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 opens with a specific action ('Change'), a specific target ('chat message'), and a scope constraint ('written by the Gamemaster the bridge runs as'). It also names exactly what can change (content or flavor), which distinguishes it from send-chat-message and delete-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?

It explicitly gives the condition for use (editing an existing GM-authored message) and the when-not: 'Who sees the message does not change; send a new message for other recipients.' This routes the agent to the sibling send-chat-message without ambiguity.

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

update-combatantUpdate combatantA
DestructiveIdempotent

Set the initiative of a combatant (null clears it), hide it from players in the tracker, or mark it defeated. The acting combatant keeps its turn when the order changes. defeated is only the tracker flag; toggle-token-condition sets a condition.

ParametersJSON Schema
NameRequiredDescriptionDefault
hiddenNoHidden from players in the combat tracker
tokenIdNoOr the id of its token
combatIdNoId of the combat encounter, as list-combats shows it. Without it the active encounter is used.
defeatedNoDefeated
initiativeNoNew initiative, or null to clear it
combatantIdNoId of the combatant

TDQS

A4.4/5.0
Behavior4/5

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

Beyond annotations, the description discloses that the acting combatant keeps its turn when the order changes and that defeated is only a tracker flag rather than a condition. These are valuable behavioral details not inferable from schema or annotations, with no contradiction to the provided 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?

Three tight sentences front-load the core operations, then provide the turn-order nuance and the condition-flag distinction. No filler or redundancy; every sentence contributes.

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 six optional parameters and no output schema, the description covers the main update modes and the most important behavioral caveats. It leaves the combatantId-vs-tokenId identification and return value implicit, but the schema fully documents the identifiers and the annotations cover the safety profile, so it is reasonably complete for a targeted 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 description coverage is 100%, so the baseline is a 3. The description adds extra meaning by mapping the update modes to specific parameters and clarifying the defeated flag's semantics versus conditions, plus the null-clears-initiative behavior. This is modest added 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 names a specific action set—set initiative, hide, or mark defeated—on a clear resource (combatant). It distinguishes itself from the sibling toggle-token-condition by clarifying that 'defeated' is only a tracker flag, and it implies a different scope from roll-initiative/change-combat-turn.

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 an explicit when-not by directing condition-setting to toggle-token-condition, and it explains the turn-order behavior when initiative changes. It does not explicitly name alternatives like roll-initiative or change-combat-turn for their respective cases, so guidance is clear but not exhaustive.

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

update-documentChange a document of any typeA
DestructiveIdempotent

Generic fallback: change fields of one document of any type. changes follows Foundry's update rules: keys may be dotted paths, an object merges into the object that is there, lists and other values replace it. A list position in a key ("system.skills.2.value") changes only that entry. replace names keys of changes whose object replaces the stored object instead of merging; remove names paths to delete. The answer is the change as read back from Foundry, and what was stored differently. Ids, ownership, _stats, the type, embedded collections, the flags of this module and what a specialised tool guards (active scene, playback, chat recipients, macro commands) cannot be changed here. Use dryRun first. Prefer update-scene, manage-actors, journal-set-page, update-token, update-roll-table, manage-effects and the other specialised tools where they fit.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoId of the document, together with documentType
uuidNouuid of the document, e.g. "Actor.abc", "Scene.abc.Token.def", "Compendium.dnd5e.monsters.Actor.abc"
dryRunNoOnly check and preview; nothing is written. Recommended before the real call
removeNoField paths to delete: a key, or a list entry such as "system.skills.1"
changesNoChanges by field, e.g. { "system.attributes.hp.value": 7, "name": "Grok" }
replaceNoKeys of changes whose object replaces the stored object instead of merging
parentUuidNouuid of the document that holds an embedded one, e.g. "Actor.abc" for its items, "Scene.abc" for its walls
documentTypeNoFoundry document name, e.g. "Actor", "JournalEntryPage", "Combat", "Wall"; with id when no uuid is given

TDQS

A5/5.0
Behavior5/5

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

Beyond the annotations, the description thoroughly discloses mutation semantics: dotted-path keys, object merge vs. list replacement, replace and remove behavior, and the exact restricted fields (IDs, ownership, _stats, type, embedded collections, module flags). It also tells the agent what the response contains, compensating for the missing output schema. The description does not contradict the annotations; it aligns with destructiveHint and adds safety guidance.

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

Conciseness5/5

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

The description is long by necessity for a generic generic tool, but every sentence earns its place. It front-loads purpose and scope, then explains rules, restrictions, response, and selection 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?

For an 8-parameter generic fallback with no output schema, the description covers purpose, behavioral nuance, forbidden fields, safe-use workflow, response shape, and alternatives. An agent can decide when to use it and how to invoke it without needing to inspect sibling tool definitions.

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 behavior beyond the schema: it defines Foundry update rules for changes keys, when object values merge vs. replace, how list indices in dotted paths work, and what replace/remove mean. This converts otherwise ambiguous parameters into actionable semantics.

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

Purpose5/5

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

The description opens with a specific verb and resource: "change fields of one document of any type". It positions itself as the "Generic fallback" distinct from the many specialized siblings, and it tells the agent this is not one of the specialized document tools.

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

Usage Guidelines5/5

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

It explicitly names when to use the tool (generic fallback) and names the alternatives: "Prefer update-scene, manage-actors, journal-set-page, update-token, update-roll-table, manage-effects and the other specialised tools where they fit." It also gives a concrete operational rule: "Use dryRun first."

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

update-quest-journalUpdate a quest journalA

Write progress into a quest journal. Content that contains HTML tags is stored as sent; plain text is escaped and becomes paragraphs, with single line breaks kept. Markdown is not converted. Three ways:

  • Without pageId and newPageName: a section with a heading for the update type and today's date is added to the progress notes of the first text page (a completion as read-aloud text, everything else as a secret Gamemaster note). completion and failure also set the status in the overview to Completed or Failed.

  • With pageId: the content is appended to the end of that text page, without a heading.

  • With newPageName: a new page with a heading and the content as a secret note. Content with its own heading gets no generated one. Pass pageId or newPageName, not both. Every write is read back and compared in full before success is reported; the answer gives the lengths before and after, not the HTML.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdNoAppend to this text page instead of the first one. Page ids come from list-journals.
journalIdYesId of the quest journal, from list-journals.
newContentYesThe update, as HTML or plain text.
updateTypeYesKind of update.
newPageNameNoCreate a new page with this name instead of changing an existing one.

TDQS

A4.8/5.0
Behavior5/5

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

The description goes far beyond the sparse annotations, disclosing how HTML vs. plain text is stored, that Markdown is not converted, the side effects of completion/failure on status, the heading behavior, the mutual exclusivity of pageId/newPageName, and the read-back verification with the response format. This gives a complete behavioral model without any contradiction with 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?

The description is well-structured with a clear intro, three bullet-pointed modes, and a final note on constraints and behavior. Every sentence adds unique information, and the list format makes it easily scannable. Despite its length, it is concise relative to the complexity it covers.

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 five parameters, three modes, and multiple side effects, the description covers all critical aspects: parameter usage, status updates, formatting rules, constraint violations, and response contents. There are no significant gaps that would prevent an agent from calling it 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?

Although the input schema already describes all parameters, the description adds significant meaning: how newContent is interpreted, the conditional effects of pageId and newPageName, the semantic distinction between update types (e.g., completion sets status), and the relationship between parameters. This enriches the bare schema definitions and helps the agent use each parameter 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 opens with a specific verb and resource ('Write progress into a quest journal') and then details three distinct modes of operation, clearly distinguishing this tool from siblings like journal-append-page or journal-set-page. The purpose is unambiguous and immediately conveys 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 provides explicit usage context by detailing when to use each of the three modes (without pageId/newPageName, with pageId, with newPageName) and the constraint 'Pass pageId or newPageName, not both.' However, it does not explicitly compare this tool against alternatives (e.g., journal-append-page), so an agent might not know when to prefer this over others, though the specific behaviors make its primary use clear.

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

update-roll-tableChange a roll tableA
Destructive

Change the settings and entries of a roll table: name, description, formula, replacement (false means drawn entries do not come again), displayRoll, change entries by id, add entries, remove entries by id. The whole result is checked before anything is written: overlapping ranges are refused, gaps are warnings. Removing entries needs the roll table permission set to full. Entry ids come from get-roll-table.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name
formulaNoNew dice formula, e.g. "1d8"
resultsNoChanges to existing entries
tableIdYesId or exact name of the table
addResultsNoNew entries; a missing range follows the highest one
descriptionNoNew description; an empty text removes it
displayRollNoShow the roll in the chat message of a draw
replacementNotrue: drawn entries stay in the table; false: they are marked and skipped
removeResultsNoIds of entries to remove

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the broad destructiveHint annotation, it discloses atomic validation (whole result checked before anything is written), specific validation rules (overlapping ranges refused, gaps warnings), and the permission needed for removal. This is substantial behavioral context that an agent cannot infer from annotations alone.

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?

Three sentences convey scope, validation, and prerequisites without excess. The long list in the first sentence is dense but not redundant; it earns its place. Some could be structured more cleanly, but overall it's 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?

For a 9-parameter mutable operation with no output schema, the description covers essential operational details: what changes are possible, atomic validation, permission requirements, and where ids come from. It doesn't mention return values, but that's not required when no output schema exists.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds minor extra meaning (e.g., explaining replacement semantics and that addResults range follows highest one), but these are already present in the schema. It relies appropriately on 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?

States a specific verb 'Change' and resource 'roll table', and enumerates exactly which settings and entry operations are supported. This clearly distinguishes it from sibling tools like get-roll-table, create-roll-table, and reset-roll-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?

Provides a prerequisite by stating that entry ids come from get-roll-table, and notes a permission requirement for removals. It doesn't explicitly name alternatives or say 'use this instead of X', but the context of modifying an existing table is clear.

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

update-sceneUpdate sceneA
DestructiveIdempotent

Change an existing scene: name, navigation label, background image or video, background colour, size, folder, navigation, or the linked scene journal. A new background without width and height is measured and the scene takes its size. An empty journalIdentifier removes the link. Every change is read back.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name; the navigation label follows unless navName is given
widthNo
heightNo
navNameNoNew label in the navigation
backgroundNoNew background path inside the Foundry data directory
folderPathNoMove into this folder path; empty for no folder
navigationNo
backgroundColorNoColour around the artwork, as hex like "#000000"
journalPageNameNoPage of that journal to open, by id or exact name
sceneIdentifierYesId or name of the scene. A name matches exactly, or in any case when only one scene has it.
journalIdentifierNoJournal linked as the scene journal (shown by Foundry for the scene, unlike a note on the map), by id or name. An empty string removes the link.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the description doesn't need to restate those. It adds valuable behavioral context beyond the schema: a new background without width/height is measured and the scene takes its size, an empty journalIdentifier removes the link, and every change is read back. These are non-obvious side effects that an agent needs to know before calling.

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 carrying distinct information: what can be changed, the background measurement side effect, and the journal link removal behavior. The final sentence 'Every change is read back' is a compact way to signal confirmation behavior. No filler or repetition of the schema.

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 an 11-parameter mutation tool with no output schema, the description covers the key non-obvious behaviors: background sizing, journal link removal, and read-back confirmation. It doesn't mention error conditions (e.g., what happens if the scene identifier matches multiple scenes) or whether the update is atomic, but the schema's sceneIdentifier description already covers the matching rule. The destructiveHint annotation covers the risk profile, so the description is reasonably 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 73%, so the schema already documents most parameters. The description adds meaning by grouping the parameters into a coherent update operation and by explaining the interaction between name and navName ('the navigation label follows unless navName is given'). It also clarifies the journalIdentifier empty-string behavior, which the schema mentions but the description reinforces. The remaining uncovered parameters (width, height, navigation) are self-explanatory from their names and types.

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

Purpose5/5

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

The description opens with a specific verb and resource ('Change an existing scene') and enumerates the exact attributes that can be modified, which clearly distinguishes it from sibling tools like create-scene, delete-scene, or switch-scene. It also names the linked journal behavior, which is a distinctive capability not shared by the generic update-document tool.

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 context by listing the editable fields and special behaviors (background measurement, journal link removal), but it does not explicitly state when to prefer this over update-document or create-scene. The sibling list contains both update-document and create-scene, so an explicit exclusion would have been stronger, but the field-level detail gives enough context for an agent to select it for scene-specific updates.

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

update-scene-musicSet the music of a sceneA
DestructiveIdempotent

Set or clear the playlist and the single track a scene plays when it is activated. A parameter left out keeps that field; null or an empty text clears it. playlist_sound alone picks a track of the playlist the scene already has. A new playlist keeps the track only when it belongs to it, otherwise the track is cleared and the result says so; the scene never points at a track outside its playlist. Scene, playlist and track are found by id or exact name (case ignored when unique). Needs the scene permission "create and change".

ParametersJSON Schema
NameRequiredDescriptionDefault
playlistNoId or name of the playlist; null or empty clears it. Leave out to keep it.
playlist_soundNoId or name of a track in that playlist; null or empty clears it.
scene_identifierYesId or name of the scene.

TDQS

A4.8/5.0
Behavior5/5

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

The description goes well beyond annotations by disclosing idempotent-keep behavior (left-out parameters retain the field), destructive-clear behavior (null/empty clears), the ownership rule that a scene never points at a track outside its playlist, identifier resolution rules, the required permission, and that the result reports when a track is cleared.

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?

Every sentence earns its place: the main action is front-loaded, followed by precise behavioral rules, identifier resolution, and permission requirements. There is no redundancy or filler.

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 mutation tool with only three parameters, no nested objects, and no output schema, the description is highly complete. It covers all parameter semantics, edge cases (null, empty, omitted, track ownership), identifier matching, and required permissions, leaving little for an agent to infer.

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 crucial semantics: 'playlist_sound alone picks a track of the playlist the scene already has' and 'a new playlist keeps the track only when it belongs to it.' This explains the interdependency between playlist and playlist_sound beyond the schema's simple field 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 states a specific verb and resource: 'Set or clear the playlist and the single track a scene plays when it is activated.' This clearly scopes the tool to per-scene music assignment and distinguishes it from siblings like set-scene-playlist or manage-playlists, which handle playlist-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 Guidelines4/5

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

The description gives a clear context for use—configuring what music a scene plays upon activation—and explains the effect of omitted, null, or empty parameters. It does not explicitly name alternative tools or when-not-to-use conditions, but the intended context is unambiguous.

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

update-tokenUpdate tokenA
DestructiveIdempotent

Change properties of a token on the map (not of its actor): position, size in grid spaces, rotation, hidden, disposition (-2 secret, -1 hostile, 0 neutral, 1 friendly), displayed name, elevation, rotation lock. Other fields are refused with their names. Every change is read back; values Foundry stored differently come as warnings.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenIdYesId of the token on that scene, as get-current-scene lists it. Not a name, not an actor id.
updatesYesThe properties to change
sceneIdentifierNoScene of the token, by id or name. Without it the scene that is active for everyone is used; every answer names the scene.

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the annotations, the description discloses meaningful behavior: unknown fields are refused with their names, every change is read back, and values Foundry stores differently come as warnings. This gives an agent concrete expectations about error handling and response behavior without contradicting the 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 carry a complete description: the first defines the action and field set, the second covers error behavior and read-back semantics. There is no filler, and the most important scoping statement ('not of its actor') is front-loaded.

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

Completeness5/5

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

For a mutation tool with a detailed input schema and annotations, the description covers the allowed fields, the refusal of other fields, and the read-back/warning behavior. Nothing essential for calling it correctly is missing, and the output behavior is sufficiently disclosed even without an 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 description coverage is 100%, so the schema already documents every parameter. The description mostly repeats the field list rather than adding new parameter semantics, though it does reinforce scope by emphasizing token properties and grid-space sizing.

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 starts with a specific verb and resource: 'Change properties of a token on the map', and immediately distinguishes it from the actor ('not of its actor'). It enumerates the exact fields and states what is refused, making the tool's scope unmistakable against siblings like move-token or actor-set-token.

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 gives clear context that this is for map-token properties, not actor properties, and lists what is allowed. However, it never explicitly names an alternative or states when to prefer another sibling tool, so the routing guidance is implied rather than explicit.

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

upload-fileUpload a small fileA
DestructiveIdempotent

Write a small file (at most 512 KiB) into an existing folder of Foundry's data storage, from text or from base64. An existing file is only replaced with overwrite: true. Scripts and HTML are never written, and Foundry accepts only its upload types. Never inside modules, systems or another world. Needs the write switch. Foundry cannot delete files; there is no tool for that.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFile name with extension, such as "letter.md"
pathYesThe folder, such as "worlds/<world>/handouts"; it must exist (create-directory)
textNoContent of a text file, written as UTF-8
base64NoContent as base64 (a data: URL prefix is accepted); give text or base64
dryRunNoOnly check and report what would happen; nothing is written. Needs no write permission.
overwriteNoReplace a file of the same name

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true and idempotentHint=true, but the description adds crucial context: overwrite only happens when overwrite:true, certain file types (scripts/HTML) are refused, and Foundry cannot delete files. It also discloses the write-permission dependency. This goes beyond annotations and helps an agent anticipate non-obvious 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 three sentences, efficient and front-loaded with the core action and size/format constraints. Each sentence adds information: the action, the overwrite rule, and the safe-usage boundaries (types, locations, permissions, deletion limitation). No fluff or repetition.

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

Completeness5/5

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

For a 6-parameter tool with 100% schema coverage and no output schema, the description covers all critical aspects: size limit, content sources, overwrite semantics, forbidden types, location restrictions, permission requirement, and the lack of deletion capability. An agent has enough context to call the tool correctly and avoid common mistakes.

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 enriches several parameters: it clarifies that text and base64 are alternative content sources, explains that overwrite controls replacement, and notes that dryRun requires no write permission. These additions help an agent choose and set parameters correctly beyond the raw 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 states a specific verb ('Write'), a clear resource ('a small file into an existing folder of Foundry's data storage'), and includes explicit constraints (max 512 KiB, from text or base64). This distinguishes it from siblings like create-directory, copy-file, and browse-files without needing to inspect the schema.

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

Usage 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: writing files, with conditions like only replacing with overwrite:true, and restrictions on content types and locations (never modules/systems/worlds). It also notes the write switch requirement. While it doesn't explicitly name alternative tools for other file operations, the guidance is substantial and actionable.

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

use-itemUse itemA

Start the use of an item of an actor (a spell, an ability, a consumable) in Foundry and return at once, without waiting for a dialog the Gamemaster may have to confirm. Targets are tokens of the active scene; if one cannot be found exactly, nothing is used. The adapter of the game system decides how the item is used and how consume and spellLevel apply; without one the usual item methods are tried, and failing those a plain chat message is posted. The answer says what was verified (targets, whether the use finished) and what was not (consumption).

ParametersJSON Schema
NameRequiredDescriptionDefault
consumeNoLet the game system spend uses, resources or slots; true when left out
targetsNoTokens of the active scene to target, by token id, token name or actor name; "self" is the token of the actor. Leave out to keep the targets the Gamemaster has selected
spellLevelNoCast at this higher level, where the game system knows spell levels
itemIdentifierYesId or exact name of the item on that actor
actorIdentifierYesThe actor that uses the item. Id of the actor, its exact name (case does not matter) or the id of one of its tokens

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=false, so the description doesn't need to restate those. It adds valuable behavioral context: the tool returns immediately without waiting for a GM dialog, targets must be found exactly or nothing is used, and the answer reports what was verified (targets, whether the use finished) and what was not (consumption). This goes beyond the annotations.

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 behavior and then explains fallback and return-value semantics. It is efficient and every sentence adds information. Slightly long, but justified given the complexity of the tool.

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

Completeness4/5

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

Given the tool's complexity (5 params, no output schema, no enums), the description covers the key behavioral aspects: immediate return, target resolution, adapter behavior, fallback, and what the answer reports. It doesn't describe the exact return format, but the description explicitly says what the answer says, which is sufficient for an agent to know what to expect.

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 schema already documents all five parameters. The description adds meaning by explaining the overall flow (how consume and spellLevel apply via the adapter, how targets are resolved, and what 'self' means). It doesn't repeat parameter details but provides context that helps an agent understand the semantics of the parameters in action.

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

Purpose5/5

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

The description states a specific verb ('Start the use of an item'), the resource ('an item of an actor'), and the domain ('in Foundry'), and it distinguishes itself from sibling tools by clarifying it returns immediately without waiting for a GM dialog. It also names the game-system adapter behavior, which separates it from generic document/actor 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 explains when to use this tool: to start an item use and return immediately, without waiting for a GM confirmation dialog. It also gives fallback behavior when no adapter exists, and clarifies target resolution ('targets are tokens of the active scene; if one cannot be found exactly, nothing is used'). This is strong contextual guidance.

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

wfrp4e-add-itemsAdd WFRP4e itemsA

[WFRP4e only] Add skills, talents, traits, trappings, careers, weapons, spells and other items to an existing wfrp4e actor. Each name is looked up whole, ignoring case, in the item compendiums, wfrp4e-core first, and the entry is copied in full with a link to it. A specialised skill such as "Entertain (Taunt)" comes from its template "Entertain ()". A name that exists as several types is skipped with all candidates until "type" chooses; "pack" limits the search to compendiums whose id contains it. A name in no compendium becomes a blank item of "type" (trapping without it) and is listed in notFound. "advances" works for skills, "quantity" for gear, "setCurrent" for careers; elsewhere it is ignored with a warning. A skill or career the actor has already is skipped. Everything is read back. Change existing values with wfrp4e-update-actor.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorYesId or exact name of the actor (a token id works too)
itemsYesThe items to add, at least one.

TDQS

A5/5.0
Behavior5/5

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

The annotations only provide coarse flags (readOnlyHint false, idempotentHint false, etc.); the description adds the real behavioral thread: whole-name, case-insensitive lookup, template handling, type and pack disambiguation, blank-item fallback with before the notFound list, per-type parameter behavior, and duplicate-skips. This goes well beyond what structured metadata already 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 dense and front-loaded: main purpose, then lookup strategy, then edge-case disambiguation, then fallback behavior, then alternative tool. Every sentence carries a distinct fact; nothing is filler despite the volume.

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 this many edge cases and no output schema, the description covers the important fallbacks (blank items, notFound list, skipped existing skills/careers, ignored parameters) and states that the result is read back. The exact response shape is not spelled out, but the return information is enough for an agent to act 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?

Even though the schema covers 100% of parameters with descriptions, the tool description adds deeper meaning: 'pack' is a compendium id partial match, 'type' disambiguates and decides blank-item behavior, 'advances/quantity/setCurrent' have field-specific effect and are ignored with a warning elsewhere. This is exactly the extra value schemas cannot convey.

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

Purpose5/5

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

The description opens with a specific verb and resource list: 'Add skills, talents, traits, trappings, careers, weapons, spells and other items to an existing wfrp4e actor.' It also distinguishes itself from the sibling by ending with 'Change existing values with wfrp4e-update-actor', making the add-versus-update boundary explicit.

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 scopes the tool to '[WFRP4e only]' and directly recommends wfrp4e-update-actor for the alternative use case of changing existing values. The description of lookup and fallback behavior also makes it clear when this tool is the right choice for adding fresh items to an actor.

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

wfrp4e-update-actorUpdate a WFRP4e stat blockA
Idempotent

[WFRP4e only] Change the stat block of an existing wfrp4e actor: initial, advances and modifier of characteristics, current and maximum wounds, advances of skills the actor already has, which career is current, movement and biography. Only given fields change; value, bonus and skill totals are recomputed by wfrp4e. Skills and careers match by name ignoring case; one that is missing or there twice is skipped and named in warnings, never guessed. Every value is read back; the answer lists old and new values, the new characteristic totals and anything stored differently. New skills, talents, trappings or careers: wfrp4e-add-items. A new actor: create-actor-from-compendium.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorYesId or exact name of the actor (a token id works too)
careerNoName of a career item on the actor that becomes the current one; every other career stops being current.
skillsNoAdvances for skills the actor has already; new skills come with wfrp4e-add-items.
woundsNoCurrent and maximum wounds.
movementNoMovement value (system.details.move.value).
biographyNoNew biography, replacing the old one; HTML is allowed.
characteristicsNoChanges per characteristic, keys ws, bs, s, t, i, ag, dex, int, wp, fel; each sets initial, advances and/or modifier. Value and bonus follow by themselves.

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations (idempotent, non-destructive, non-read-only), the description discloses meaningful runtime behavior: value/bonus/skill totals are recomputed, duplicate or missing skills/careers are skipped and reported in warnings rather than guessed, and every value is read back and echoed as old/new values. No contradiction with annotations exists.

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

Conciseness5/5

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

The description is dense but well-organized: purpose first, then behavioral guarantees, then explicit alternatives. Every sentence adds necessary information, and there is no filler or repetition of the schema.

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 mutation tool with no output schema, the description adequately covers what the agent needs: what can be changed, how matching works, what is recomputed, what the response will contain, and which sibling tools cover adjacent operations. It is 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 description coverage is 100%, so the baseline is 3, but the description adds real semantic value: it explains that characteristic totals follow automatically, that skills advances apply only to already-owned skills, that careers are matched by name, and that biography replaces the old one. These details go beyond the bare 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 uses a specific verb and resource: 'Change the stat block of an existing wfrp4e actor' and enumerates exactly which fields are affected. It also distinguishes itself from sibling tools by naming wfrp4e-add-items and create-actor-from-compendium for adjacent 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 explicitly states what this tool is for and gives clear routing guidance: use wfrp4e-add-items for new skills/talents/trappings/careers and create-actor-from-compendium for a new actor. It also clarifies that only given fields change and that matches are by name ignoring case, so an agent knows when this tool applies.

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

world-rewrite-pathsMove a path in the whole worldA
Destructive

After moving files on disk, replace their old path prefix in every document of the world in one step: scenes with tokens, tiles, drawings, notes, sounds, walls, lights and regions; actors with items and effects; items; journals with pages (image pages and images in text); playlists; roll tables; cards; macros. A prefix only matches where a path begins and up to a path boundary, so "Bilder/Token" never touches "Bilder/Tokenringe", and percent-encoded spellings are found too. Runs inside Foundry. Checks the permission of every kind it would change before writing anything. Always run dryRun first and read the report.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesNew path prefix, e.g. "Bilder/Portraits".
fromYesOld path prefix relative to the data directory, at least 3 characters, e.g. "Bilder/Avatare".
dryRunNoOnly report what would change, without writing (default false). Run this first.
collectionsNoOnly these collections. Omit for all of them, which is recommended: a partial move leaves broken references.

TDQS

A4.1/5.0
Behavior4/5

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

The description adds meaningful behavioral details beyond the destructiveHint annotation: it checks permissions before writing, runs inside Foundry, matches path boundaries, and handles percent-encoded spellings. This informs the agent about safety and matching semantics that annotations alone do not convey.

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, each earning its place: purpose and scope, matching semantics, runtime context, and safety guidance. The potentially long enumeration of document types is necessary for clarity and is front-loaded after the core 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 complex, destructive bulk operation with no output schema, the description covers the workflow (dryRun first), safety (permission checks), and matching behavior, which is largely sufficient. The one gap is that it tells the agent to 'read the report' without describing what the report contains or how to interpret it, leaving some uncertainty for an agent navigating the result.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by explaining how the 'from' prefix matches ('up to a path boundary', percent-encoded spellings) and warns that partial collections cause broken references, which goes beyond the schema's simple parameter descriptions.

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

Purpose4/5

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

The description states a specific action ('replace their old path prefix') on a specific resource ('every document of the world') and enumerates all affected document types, making the purpose unmistakable. It does not explicitly name a sibling tool to distinguish itself, so it misses the top score by the rubric's letter, though the enumerated scope effectively differentiates it from tools like 'find-file-references' or 'journal-rewrite-images'.

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

Usage Guidelines4/5

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

The description gives clear usage context: use it after moving files on disk, and it strongly advises running dryRun first and reading the report. It does not mention when not to use it or alternatives (e.g., find-file-references for locating references without rewriting), so it lacks explicit exclusions or alternative routing.

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. 152 tool updatesv14.2609.4
    • First observedactor-refresh-from-source
    • First observedactor-set-token
    • First observedadd-combatants
    • First observedadvance-world-time
    • First observedassign-actor-ownership
    • First observedbrowse-files
    • First observedchange-combat-turn
    • First observedcheck-wall-collision
    • First observedcontrol-playlist
    • First observedcopy-file
    • First observedcreate-actor-from-compendium
    • First observedcreate-campaign-dashboard
    • First observedcreate-canvas-elements
    • First observedcreate-card-deck
    • First observedcreate-combat
    • First observedcreate-compendium
    • First observedcreate-directory
    • First observedcreate-document
    • First observedcreate-dsa5-character-from-archetype
    • First observedcreate-macro
    • First observedcreate-quest-journal
    • First observedcreate-roll-table
    • First observedcreate-scene
    • First observedcreate-scene-note
    • First observeddeal-cards
    • First observeddelete-canvas-elements
    • First observeddelete-card-stack
    • First observeddelete-chat-message
    • First observeddelete-compendium
    • First observeddelete-compendium-entries
    • First observeddelete-document
    • First observeddelete-playlist
    • First observeddelete-roll-table
    • First observeddelete-scene
    • First observeddelete-tokens
    • First observeddescribe-document-type
    • First observeddnd5e-add-feature
    • First observeddnd5e-add-features-from-compendium
    • First observeddnd5e-create-npc
    • First observeddraw-cards
    • First observeddraw-roll-table
    • First observedend-combat
    • First observedexecute-macro
    • First observedexport-to-compendium
    • First observedfind-file-references
    • First observedfind-missing-files
    • First observedfind-path
    • First observedfind-tokens-in-range
    • First observedfolder-delete
    • First observedfolder-rename
    • First observedget-available-conditions
    • First observedget-canvas-view
    • First observedget-card-stack
    • First observedget-character
    • First observedget-character-entity
    • First observedget-combat
    • First observedget-compendium-entry-full
    • First observedget-compendium-item
    • First observedget-current-scene
    • First observedget-document
    • First observedget-permissions
    • First observedget-roll-table
    • First observedget-scene-image
    • First observedget-token-details
    • First observedget-world-info
    • First observedget-world-time
    • First observedimport-from-compendium
    • First observedjournal-add-page
    • First observedjournal-append-page
    • First observedjournal-create
    • First observedjournal-delete
    • First observedjournal-delete-page
    • First observedjournal-link-tags
    • First observedjournal-page-from-file
    • First observedjournal-rename
    • First observedjournal-rewrite-images
    • First observedjournal-set-page
    • First observedjournal-split-page
    • First observedlink-quest-to-npc
    • First observedlist-actor-ownership
    • First observedlist-canvas-elements
    • First observedlist-card-stacks
    • First observedlist-changes
    • First observedlist-characters
    • First observedlist-chat-messages
    • First observedlist-combats
    • First observedlist-compendium-entries
    • First observedlist-compendium-packs
    • First observedlist-compendiums
    • First observedlist-creatures-by-criteria
    • First observedlist-documents
    • First observedlist-dsa5-archetypes
    • First observedlist-journals
    • First observedlist-macros
    • First observedlist-playlists
    • First observedlist-roll-tables
    • First observedlist-scene-folders
    • First observedlist-scenes
    • First observedlist-settings
    • First observedlist-users
    • First observedmanage-actors
    • First observedmanage-effects
    • First observedmanage-playlists
    • First observedmanage-world-items
    • First observedmeasure-distance
    • First observedmove-token
    • First observedorganize-compendium
    • First observedpan-camera
    • First observedpass-cards
    • First observedpf2e-manage-conditions
    • First observedping-canvas
    • First observedrefresh-scene-thumb
    • First observedremove-actor-ownership
    • First observedremove-combatants
    • First observedreplace-journal-page
    • First observedrequest-player-rolls
    • First observedreset-card-stack
    • First observedreset-roll-table
    • First observedrestore-scene
    • First observedroll-actor-check
    • First observedroll-dice
    • First observedroll-initiative
    • First observedsearch-character-items
    • First observedsearch-compendium
    • First observedsearch-journals
    • First observedsend-chat-message
    • First observedsend-notification
    • First observedset-compendium-lock
    • First observedset-door-state
    • First observedset-game-pause
    • First observedset-scene-playlist
    • First observedset-targets
    • First observedset-world-setting
    • First observedshuffle-card-stack
    • First observedstart-combat
    • First observedswitch-scene
    • First observedtoggle-token-condition
    • First observedundo-change
    • First observedupdate-canvas-elements
    • First observedupdate-chat-message
    • First observedupdate-combatant
    • First observedupdate-document
    • First observedupdate-quest-journal
    • First observedupdate-roll-table
    • First observedupdate-scene
    • First observedupdate-scene-music
    • First observedupdate-token
    • First observedupload-file
    • First observeduse-item
    • First observedwfrp4e-add-items
    • First observedwfrp4e-update-actor
    • First observedworld-rewrite-paths

TDQS

A3.7/5.0

Scored across 152 tools

Disambiguation3/5

The descriptions are unusually explicit and often point to the preferred specialized tool, but the set contains several close clusters (list-compendiums/list-compendium-packs/list-compendium-entries, get-compendium-item/get-compendium-entry-full, set-scene-playlist/update-scene-music/control-playlist) and generic CRUD fallbacks that overlap with nearly every specialized tool. An agent can usually disambiguate, but misselection is a real risk.

Naming Consistency3/5

Most tools follow snake_case verb_noun patterns, but there are notable inconsistencies: the journal family is noun-first (journal-create, journal-delete) while scene and roll-table tools are verb-first, and system-specific tools mix prefixes (dnd5e-create-npc) with mid-name system markers (create-dsa5-character-from-archetype). Still readable, but not a single predictable convention.

Tool Count2/5

152 tools is a very heavy surface. The Foundry domain is broad, but generic CRUD fallbacks, multiple compendium-listing variants, and system-specific duplicates inflate the count well beyond what an agent can comfortably navigate.

Completeness5/5

The surface covers nearly every Foundry subsystem with full lifecycles: scenes, journals, actors, items, combat, chat, cards, roll tables, playlists, compendiums, canvas elements, tokens, and files. Residual gaps such as macro update/delete or folder creation are covered by generic document tools, so there are no dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers