Skip to main content
Glama

Server Details

Connect any AI to your Foundry VTT world: actors, combat, dice, journals, tokens, compendiums.

Ownership verified
Status
Healthy
Uptime
94.7% over 14 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.7/5.0

Scored across 121 tools

Disambiguation2/5

Many tools have heavily overlapping purposes, such as dnd5e-item-use vs dnd5e-item-activate, dnd5e-roll-attack/damage, and several compendium search/browse/filter variants. The descriptions try to differentiate them, but the sheer volume and near-duplicates (e.g., roll-perception explicitly duplicating dnd5e-roll-skill) make misselection likely. An agent has to wade through dozens of similar actions to find the right one.

Naming Consistency4/5

Most tools follow a clear verb_noun pattern, often prefixed by system (dnd5e-, pf2e-) or domain (world-, compendium-, roll-table-), which is predictable. Minor deviations exist: 'world-info' lacks a verb, 'game-pause-get' mixes pause as noun and verb, and generic tools like roll-perception/roll-dice break the system-prefix convention. Overall, the naming is largely consistent and readable.

Tool Count1/5

At 121 tools, this is an extreme count that exceeds even the 'too many' threshold of 25 and the 50+ extreme-mismatch calibration. While Foundry VTT is a broad platform, this many tools makes the surface overwhelming and forces an agent to choose from dozens of highly similar operations. A more focused set of 40-60 consolidated tools would be far more usable.

Completeness4/5

The tool surface is unusually comprehensive for the domain: actors, items (world/actor/compendium), journals, chat, combat, scenes, tokens, effects, folders, game state, time, and roll tables all have CRUD or lifecycle coverage. Notable gaps exist, such as no scene create/update/delete, no compendium write operations, and no pf2e world-actor structured filter, but these are workable. The coverage is strong enough that most DM workflows can be accomplished.

Available Tools

121 tools
actor-createAInspect

Create a new actor from scratch (custom NPCs, characters, creatures). type must be valid for the world's game system — dnd5e: character, npc, vehicle, group; pf2e: character, npc, hazard, loot, familiar, party, vehicle, army. To import a monster from a compendium use actor-create-from-compendium. system is deep-merged over the system defaults.

ParametersJSON Schema
NameRequiredDescriptionDefault
imgNoOptional image path for the actor token/portrait
nameYesName of the actor
typeYesActor type for the world's game system (dnd5e: "character", "npc", "vehicle", "group")
folderNoOptional folder ID to place the actor in
systemNoOptional system-specific data (e.g., D&D 5e attributes, HP, abilities)

TDQS

A4.6/5.0
Behavior4/5

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

Annotations only indicate create semantics (not read-only, not idempotent, not destructive), so the description carries the burden of behavioral detail. It adds valuable context: game-system-specific type validation and the fact that the system object is deep-merged over system defaults. No annotation 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 short sentences, each earning its place: scope, type constraints, alternative tool, and merge behavior. The purpose is front-loaded and there is no filler or restatement of schema fields.

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 a nested system object and no output schema, the description covers the required inputs, valid type values, and the main alternative path. It is slightly incomplete in that it does not mention return values or what the agent receives after creation, which would be useful when no output schema is provided.

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 listing pf2e type values that the schema's type property omits, and by clarifying how the nested system parameter behaves ('deep-merged over the system defaults').

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 a new actor') and adds the qualifier 'from scratch', which clearly differentiates it from sibling actor-create-from-compendium. Listing custom NPCs, characters, and creatures as the intended use further disambiguates 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 Guidelines5/5

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

Explicitly directs compendium imports to actor-create-from-compendium, giving the agent a concrete decision rule. It also tells the agent that type must be valid for the world's game system and enumerates the valid values for dnd5e and pf2e, so the agent knows the constraint before invoking.

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

actor-create-from-compendiumAInspect

Import an actor (monster, NPC) from a compendium pack into the world. Pass either uuid — the "Compendium...Actor." value returned by dnd5e-compendium-filter-actors, pf2e-compendium-filter-actors and compendium-search — or packId + actorId from compendium-browse.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional custom name for the created actor (uses compendium name if not specified)
uuidNoCompendium UUID "Compendium.<scope>.<pack>.Actor.<id>". Replaces packId + actorId.
folderNoOptional folder ID to place the actor in
packIdNoCompendium pack ID (e.g., "dnd5e.monsters"). Required unless uuid is given.
actorIdNoActor ID within the pack (from compendium-browse). Required unless uuid is given.

TDQS

A3.7/5.0
Behavior2/5

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

Annotations already signal that this is a write operation (readOnlyHint=false) and not idempotent, and the description does not add behavioral context beyond 'Import... into the world.' It does not disclose whether repeated imports create duplicates, whether the imported actor is a copy or a reference, or any permission requirements. With no additional behavioral disclosure, the description does not enrich what annotations already 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 redundant wording. The core purpose is front-loaded, followed immediately by the essential identifier-mode guidance. 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?

The description thoroughly explains how to specify the compendium source and mentions the optional name and folder parameters are covered by the schema. However, with no output schema, it does not describe the return value or how the agent can confirm success. It also omits any note about duplicate-import behavior. This is adequate for making a valid call but leaves some post-invocation context unclear.

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 covers each parameter, and the description adds relational semantics by explaining the two mutually exclusive identifier modes: uuid (with exact format and source tools) versus packId + actorId (from compendium-browse). This clarifies that packId/actorId are required only when uuid is absent, adding meaning beyond the individual property 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: 'Import an actor (monster, NPC) from a compendium pack into the world.' This clearly distinguishes it from sibling tools like actor-create by specifying the source (compendium) and the destination (world). The mention of 'monster, NPC' further disambiguates the actor type.

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 guidance on how to identify the target: either via uuid from filter/search tools or packId + actorId from compendium-browse. However, it does not explicitly contrast this tool with alternatives like actor-create or explain when to prefer this over creating an actor from scratch. Usage is implied rather than explicitly stated.

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

actor-deleteA
Destructive
Inspect

Delete an actor from the world. This action cannot be undone!

ParametersJSON Schema
NameRequiredDescriptionDefault
actorIdYesThe actor ID to delete

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds the irreversibility warning ('cannot be undone'), which is more specific than the generic destructive flag and provides useful behavioral context. It doesn't discuss cascading effects or permissions, but for a simple delete with annotations present, this is sufficient.

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

Conciseness5/5

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

The description is two short sentences with zero redundancy. The core action is stated first, and the irreversibility warning follows immediately. Every word adds value; there is 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 single-parameter destructive operation with no output schema, the description covers the essential facts: what it does and its irreversible nature. It could mention what happens if the actorId is invalid or non-existent, but for a simple delete that is a minor gap. The description is adequate 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 fully documents the sole parameter (actorId) with its purpose and type. The description does not add any extra meaning about the parameter, such as format or required semantics beyond what the schema states. Baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('delete'), a specific resource ('actor'), and the scope ('from the world'). It clearly distinguishes from siblings like actor-update, actor-create, and actor-get. There is 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 Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, conditions, or exclusions. While the verb 'delete' implicitly suggests a lifecycle action, the description does not explicitly contrast with actor-update or other actor operations, leaving the agent to infer usage.

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

actor-filterA
Read-onlyIdempotent
Inspect

Search WORLD actors with D&D 5e structured filters (dnd5e worlds only). Returns paginated {id, name} entries; call actor-get for full stats. Filters combine with AND, values inside one array with OR. Use for "undead with CR 1-5", "PCs in the party", "dragons with AC 18+", "NPCs in folder Chapter 7". For every actor unfiltered use actor-list; compendiums are NOT searched (use dnd5e-compendium-filter-actors).

CRITICAL DATA FORMATS

  • CR is a NUMBER from the exact set 0, 0.125, 0.25, 0.5, 1..30 ("1/4" -> 0.25; 0.7 is rejected).

  • Sizes are SHORT codes: tiny, sm, med, lg, huge, grg ("small" is rejected).

  • creatureType: the 14 lowercase SRD types only; subtypes ("demon") are rejected, use the base type ("fiend").

  • Ranges are {min?, max?}, inclusive; min = max for an exact match. Actors lacking a filtered field are silently excluded (PCs have no CR, vehicles no abilities, root-level actors no folder).

  • Pagination: limit 1..200 (default 50), offset; the response has total and hasMore.

EXAMPLES { "cr": { "min": 0.25, "max": 0.25 }, "type": ["npc"] } { "creatureType": ["undead"], "folder": { "name": "Chapter 3", "recursive": true } }

ParametersJSON Schema
NameRequiredDescriptionDefault
acNoArmor Class range.
crNoChallenge Rating range (numbers from the valid CR set). NPCs only.
nameNoSubstring of actor name, case-insensitive.
sizeNoSize short codes (OR).
typeNoActor types (OR).
levelNoCharacter level range. PCs only.
limitNoPage size, default 50, max 200.
maxHpNoMax HP range.
folderNoFolder by id or name; recursive includes subfolders.
offsetNoSkip first N results.
abilitiesNoPer-ability score ranges.
currentHpNoCurrent HP range ("find wounded actors").
dispositionNoPrototype token disposition (OR).
creatureTypeNoSRD creature types (OR), NPCs only. No subtypes: "demon" -> "fiend".
hasPlayerOwnerNotrue = actor has at least one player owner (typically PCs).

TDQS

A5/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=true, idempotentHint=true), the description discloses key behavioral traits: returns paginated {id, name} entries, filters combine with AND/OR, ranges are inclusive, actors lacking a filtered field are silently excluded, and pagination uses limit/offset with total/hasMore. It also details critical value constraints (CR is a number from an exact set, sizes are short codes, creatureType only SRD types) and that compendiums are not searched. This is substantial behavioral context that 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 well-structured and front-loaded: a one-sentence purpose, then usage examples, then critical data formats, then pagination details. Every sentence adds value; there is no filler or redundancy. Despite its length, it is concise relative to the complexity of 15 parameters and nested objects, and it is easy to scan due to clear section headers (CRITICAL DATA FORMATS, EXAMPLES).

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 (15 optional parameters, nested ranges, pagination) and the absence of an output schema, the description is remarkably complete. It explains filter combination, value constraints, edge cases (silent exclusion of actors lacking fields), pagination behavior, and directs the agent to actor-get for full stats. It also distinguishes from sibling tools. The only minor gap is behavior when no filters are provided, but the explicit note to use actor-list for unfiltered retrieval covers that context.

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

Parameters5/5

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

Although the schema covers 100% of parameters with basic descriptions, the tool description adds critical semantic meaning: it explains that CR values must be from the exact set (rejecting '1/4' and '0.7'), sizes use short codes ('small' rejected), creatureType only accepts the 14 SRD base types (subtypes like 'demon' map to 'fiend'), ranges are inclusive, and missing fields are silently excluded. It also clarifies AND/OR semantics across filters. This goes far beyond the schema's per-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 opens with a precise verb+resource: 'Search WORLD actors with D&D 5e structured filters (dnd5e worlds only).' It explicitly distinguishes from actor-list (unfiltered) and dnd5e-compendium-filter-actors (compendiums), so the agent knows exactly what this tool does and what it is not. The examples ('undead with CR 1-5', 'PCs in the party') further ground 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 Guidelines5/5

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

The description gives explicit usage guidance: 'Use for ...' with concrete examples, and clearly states when NOT to use it: 'For every actor unfiltered use actor-list; compendiums are NOT searched (use dnd5e-compendium-filter-actors).' It names the alternative tools and the conditions that select them, leaving no ambiguity.

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

actor-getA
Read-onlyIdempotent
Inspect

Get full actor details: HP, AC, abilities, skills, speed, proficiency, inventory with item IDs. Use actor-list or actor-filter FIRST to find actorId. Item IDs from here are needed for dnd5e-roll-attack, dnd5e-roll-damage, dnd5e-item-use. The statblock layout follows the dnd5e data model; in other systems sections such as skills or currency stay empty — use uuid-resolve with "Actor." for the raw document.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorIdYesActor ID (from actor-list or actor-filter)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already carry readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds valuable behavioral context beyond annotations: cross-system behavior (non-dnd5e sections such as skills or currency stay empty) and the fallback to uuid-resolve for the raw document. 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?

Four dense sentences with zero filler: purpose is front-loaded with the content list, followed by prerequisite sequencing, downstream consumers, and the cross-system caveat. 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?

For a one-parameter read-only tool with rich safety annotations and no output schema, the description fully covers output contents, ID prerequisites, downstream tool dependencies, and system-specific behavior. Nothing an agent needs 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% — actorId is already documented as 'Actor ID (from actor-list or actor-filter)'. The description reinforces where the ID comes from and its downstream use, but adds no format, syntax, or example detail beyond the schema. Baseline 3 for high schema coverage 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 ('Get full actor details') and enumerates the content (HP, AC, abilities, skills, speed, proficiency, inventory with item IDs). This clearly distinguishes it from siblings actor-list and actor-filter, which are the ID-finding tools referenced in the same sentence.

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

Usage Guidelines4/5

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

Provides explicit sequencing ('Use actor-list or actor-filter FIRST to find actorId'), names downstream consumers of the item IDs (dnd5e-roll-attack, dnd5e-roll-damage, dnd5e-item-use), and points to uuid-resolve as the alternative for raw document access. Lacks an explicit 'do not use when X' exclusion, but the routing guidance is strong.

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

actor-listA
Read-onlyIdempotent
Inspect

List actors in the world (name, type, ID), at most 200 rows. For anything beyond a plain listing — by name, CR, creature type, size, folder, HP, AC — use actor-filter, which also paginates. Actor IDs are needed for rolls, combat, items, and effects.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by type: "character", "npc", "vehicle", or system-specific types

TDQS

A4.7/5.0
Behavior5/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 valuable behavioral context beyond that: the row limit ('at most 200 rows') and the scope ('in the world'). It also implies the limitation that only name, type, and ID are returned, which is useful for downstream 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?

The description is two sentences, each earning its place. The first sentence front-loads the core purpose and row limit. The second sentence gives usage guidance and a practical note about actor IDs. 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 listing tool with one optional parameter and no output schema, the description covers all essential aspects: what it returns, the row limit, the alternative tool, and why the results matter (actor IDs for rolls, combat, items, effects). 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.

Parameters3/5

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

Schema description coverage is 100% for the single optional 'type' parameter, so the schema already explains its meaning and allowed values. The description does not add any parameter-specific detail, but it doesn't need to since the schema fully documents it. The baseline of 3 applies: the description neither enhances nor detracts from 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 states a specific verb ('List'), a clear resource ('actors in the world'), and the returned fields (name, type, ID). It also explicitly differentiates itself from actor-filter by naming exactly what actor-filter handles ('by name, CR, creature type, size, folder, HP, AC'). This is a precise, unambiguous purpose statement.

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

Usage Guidelines5/5

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

The description gives explicit guidance: 'For anything beyond a plain listing — by name, CR, creature type, size, folder, HP, AC — use actor-filter, which also paginates.' This names the alternative and the exact conditions for selecting it, leaving no ambiguity about when to use this tool versus its sibling.

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

actor-updateAInspect

Update an actor's name, image, folder, or system data (HP, XP, abilities...). system is DEEP-MERGED into the existing data: pass only the paths you change, e.g. {"attributes": {"hp": {"value": 25}}} sets current HP and leaves everything else intact; arrays are replaced whole. Common dnd5e paths: attributes.hp.value, details.xp.value.

ParametersJSON Schema
NameRequiredDescriptionDefault
imgNoNew image path for the actor
nameNoNew name for the actor
folderNoNew folder ID to move the actor to
systemNoSystem-specific data to update (e.g., {"attributes": {"hp": {"value": 25}}} to set HP to 25)
actorIdYesThe actor ID to update

TDQS

A4.1/5.0
Behavior4/5

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

The description goes beyond the annotations by disclosing that system data is DEEP-MERGEDholistically: untouched paths remain intact but arrays are replaced entirely. This is useful behavioral context that the schema and annotations alone do not provide. It does not mention permissions or errors, but the core mutation behavior is well disclosed.

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

Conciseness5/5

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

The description is two sentences that front-load the operation and resource, follow with critical merge semantics, and end with a practical example. There is no filler or redundancy; 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?

With all parameters documented in the schema and the description covering the complex nested-object merge behavior, an agent has enough information to make a correct call. The absence of an output schema and no statement about the return value or error behavior is a minor gap, but it does not block successful invocation.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning beyond the schema by explaining the deep-merge behavior and providing a concrete dnd5e path example. The common-path listing also helps agents construct valid system inputs, which the schema alone only hints at.

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 verb ('Update'), the resource ('an actor'), and the specific fields affected (name, image, folder, system data). It does not explicitly name sibling alternatives like actor-create or actor-delete, but the 'update' verb conveys the operation distinctly enough.

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 this tool to mutate an existing actor's top-level fields or system data, with explicit guidance to pass only changed paths. It does not explicitly say when not to use it or name alternatives, so it lacks 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.

canvas-panA
Idempotent
Inspect

Pan and/or zoom the canvas to scene-pixel coordinates (canvas.animatePan), for everyone's view. All fields optional — omit x/y to keep the current centre, omit scale to keep the current zoom. Coordinates are scene pixels, not grid squares. Use canvas-ping to draw attention to a spot instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoScene-pixel X to centre on. Omit to keep current.
yNoScene-pixel Y to centre on. Omit to keep current.
scaleNoZoom level (1 = 100%). Omit to keep current.
durationNoAnimation duration in ms.

TDQS

A4.9/5.0
Behavior5/5

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

The description adds meaningful behavioral context beyond the annotations: the view change affects 'everyone's view,' coordinates are scene pixels rather than grid squares, and omitted fields preserve current settings. It also reveals the animation mechanism via canvas.animatePan. This is more than the 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?

Three sentences with no filler. The primary action and key constraints are front-loaded, the coordinate system clarification is prominent, and the sibling alternative is a single clear sentence at the end.

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, fully-optional-parameter tool with no output schema, the description covers everything needed to invoke it correctly: action, coordinate system, optionality, effect scope, and the alternative sibling. No important gap remains.

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 each parameter with 100% coverage, so the bar is lower, but the description still adds value by emphasizing 'scene pixels, not grid squares' and explicitly stating that all fields are optional. This reinforces the coordinate system and partial-update semantics beyond the individual parameter descriptions.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Pan and/or zoom the canvas to scene-pixel coordinates' and names the underlying API method. It clearly distinguishes this from canvas-ping by stating the different purpose and explicitly naming the 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 provides explicit guidance on when to use this tool versus the alternative: 'Use canvas-ping to draw attention to a spot instead.' It also clarifies field optionality so an agent knows it can partially update the view without supplying all parameters.

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

canvas-pingAInspect

Drop a ping marker on the canvas at scene-pixel coordinates (canvas.ping), visible to all clients. Use to draw players' attention to a spot. x and y are REQUIRED (scene pixels, not grid squares).

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesScene-pixel X.
yYesScene-pixel Y.
colorNoCSS colour string for the ping (e.g. "#ff0000").
styleNoPing animation: pulse (default), arrow, alert, chevron.
durationNoDuration in ms.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false, so the description doesn't need to justify the write nature. The description adds valuable context beyond annotations: the ping is visible to all clients (broadcast behavior) and stresses that x/y are scene-pixel coordinates, not grid squares. This clarifies important behavioral expectations that annotations do not cover. 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 three concise sentences with zero filler. The core purpose is front-loaded, then usage context, then a crucial parameter requirement. Each sentence earns its place, and the structure is easily scannable.

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 adequate for a tool with 5 parameters (2 required) and no output schema. All parameters are documented in the schema, and the description adds the coordinate-system clarification and the broadcast visibility. It does not explain default values for style/duration, but those are derivable from the schema descriptions. The absence of output schema means no need to describe return values. Overall, 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.

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 crucial clarification that x and y are REQUIRED and are in scene pixels (not grid squares), which directly impacts how an agent constructs valid calls. It also reiterates the purpose of these parameters. This added value justifies a 4 rather than a baseline 3.

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

Purpose5/5

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

The description states a specific verb ('drop'), a specific resource ('ping marker'), and the coordinate system (scene-pixel). It also names the effect ('visible to all clients') and the intended use ('draw players' attention to a spot'), clearly distinguishing it from sibling tools like canvas-pan (which moves the view) and ui-notify (which sends notifications).

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

Usage Guidelines4/5

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

The description explicitly states when to use this tool ('Use to draw players' attention to a spot'), giving clear context. It does not explicitly name alternatives or exclude other tools, but the purpose is specific enough that an agent could infer the appropriate scenario. The absence of an explicit 'instead of X' 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.

chat-clearA
Destructive
Inspect

Delete ALL chat messages. This action is IRREVERSIBLE. Use ONLY when the user explicitly asks to clear the entire chat log.

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 destructiveHint=true, and the description reinforces this with 'IRREVERSIBLE.' It also specifies what gets destroyed ('ALL chat messages'), adding useful context beyond the annotation. 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, each carrying essential information: the action, its irreversibility, and the strict usage condition. 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 zero-parameter destructive tool, the description covers the scope, the risk, and the only acceptable trigger condition. It is complete enough for an agent to invoke this tool safely and avoid misuse.

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 does not need to elaborate on parameters, and the schema confirms none exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ALL chat messages.' The use of 'ALL' and 'entire chat log' clearly distinguishes this from the sibling chat-delete tool, which presumably targets individual messages. The scope is unambiguous.

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

Usage Guidelines4/5

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

The description explicitly states when to use the tool: 'Use ONLY when the user explicitly asks to clear the entire chat log.' This is a clear condition with an implicit exclusion, though it does not name chat-delete as the alternative for deleting individual messages.

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

chat-deleteA
Destructive
Inspect

Delete a specific chat message by ID. Use to remove erroneous messages or clean up chat. Use chat-list FIRST to find the message ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageIdYesID of the message to delete. Get from chat-list.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the destructive nature is known. The description adds minimal extra context—it only says 'Delete a specific chat message', which doesn't go beyond the annotations. It could have mentioned permanence or that only that message is affected, but those are already implicit. Thus it adds little beyond what structured data 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 efficient: three short sentences that front-load the action, then give usage context and the prerequisite. Every sentence earns its place with no fluff, making it easy 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?

For a simple single-parameter tool with annotations covering destructiveness and no output schema, the description covers the action, usage context, and how to obtain the ID. It does not discuss error handling or return values, but those are not critical given the tool's simplicity and absence of an output schema. Overall, it is complete enough 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 schema already describes the messageId parameter and says to get it from chat-list. The description repeats this instruction, adding no new semantic meaning beyond what the schema provides. Since schema coverage is 100%, the baseline of 3 applies, and the description does not significantly enhance parameter understanding.

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

Purpose5/5

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

The description clearly states the action (delete), the resource (chat message), and the specificity (by ID). It also conveys the use case (remove erroneous messages, clean up chat), which distinguishes it from siblings like chat-clear or chat-update without explicitly 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?

It provides clear context for when to use the tool ('remove erroneous messages or clean up chat') and gives a prerequisite ('Use chat-list FIRST to find the message ID'). However, it does not explicitly state when not to use it (e.g., for bulk deletion use chat-clear), so exclusions are only implied.

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

chat-exportA
Read-onlyIdempotent
Inspect

Export the full chat log as text or JSON. Use for session summaries, recapping what happened, or saving chat history. Text format: "[Speaker] Content" per line. JSON format: array of message objects with id, timestamp, author, speaker, content, flavor, isRoll.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoExport format. "text" (default) = readable log, "json" = structured data.

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, so the safety profile is clear. The description adds meaningful behavioral detail by specifying the exact output structure for both text and JSON formats, which goes beyond the schema. No contradictions.

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

Conciseness5/5

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

The description is two sentences with no filler. The purpose and use cases are front-loaded, followed by concise format examples. Every sentence adds useful 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 simple read-only export tool with one parameter and no output schema, the description fully covers what it does, when to use it, and what the output looks like. Nothing an agent needs to correctly invoke it 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 single parameter 'format' is already fully described in the schema (enum with 'text' default and 'json' for structured data), so schema coverage is 100%. The description adds extra value by detailing what each format contains (e.g., '[Speaker] Content' lines and message object fields like id, timestamp, author, etc.), which is not 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?

States a specific verb (export) and resource (full chat log), and specifies the two output formats (text/JSON). It clearly separates itself from siblings like chat-list and chat-get by emphasizing 'full chat log' and 'export' rather than listing or retrieving individual 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?

Provides explicit use cases ('session summaries, recapping what happened, saving chat history') which helps an agent decide when to invoke it. However, it does not name alternative tools or state when not to use it, leaving some inference required given the many chat-related siblings.

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

chat-listA
Read-onlyIdempotent
Inspect

Read recent chat messages from Foundry VTT. Use to see what players are discussing, check roll results, or review combat narration. Returns plain text (HTML stripped). Use since param with a message ID to poll for new messages since last check. Filters: authorId, actorId, type (ic/ooc/emote/roll), search text. Messages are returned in chronological order (oldest first).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by message type: "ic" = in-character, "ooc" = out-of-character, "emote" = action, "roll" = dice roll.
limitNoNumber of messages to return. Default: 20, max: 100.
sinceNoReturn messages AFTER this message ID. Use for polling new messages.
beforeNoReturn messages BEFORE this message ID. Use for scrolling back.
searchNoCase-insensitive text search across message content.
actorIdNoFilter by actor ID (speaker.actor). Use to see what a specific character said.
authorIdNoFilter by Foundry user ID of the message author.
includeRollsNoInclude roll data (formula + total) in results. Default: false.

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 and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral details beyond that: 'Returns plain text (HTML stripped)' and 'Messages are returned in chronological order (oldest first)'. It also explains the polling semantics. This adds meaningful context 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?

The description is four sentences, each with a distinct purpose: core function, use cases, return format, polling, filters, and ordering. It is front-loaded with the core purpose and avoids redundancy. Every sentence earns its place, making it highly 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 read-only list tool with no output schema and comprehensive annotations, the description covers all essential aspects: purpose, use cases, return format, ordering, polling, and filters. It does not mention edge cases like empty results or error behavior, but these are minor for a read operation. The description is complete enough for an agent to call it correctly without further ambiguity.

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 each parameter already has a description. The description adds usage context for the `since` parameter (polling) and groups the filters (authorId, actorId, type, search) as a coherent set. It doesn't repeat schema details but highlights the intended use of specific parameters, which is helpful. Baseline is 3 due to full coverage, and the added polling guidance 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 ('Read') and resource ('chat messages from Foundry VTT'), then lists concrete use cases ('see what players are discussing, check roll results, or review combat narration'). This clearly distinguishes it from sibling write tools like chat-send, chat-update, and chat-delete by framing it as a read operation. The purpose is unambiguous and actionable for an agent.

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

Usage Guidelines4/5

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

The description gives clear usage scenarios ('Use to see what players are discussing...') and provides a specific polling pattern ('Use since param with a message ID to poll for new messages'). It does not explicitly name alternatives or state when not to use it, but the context of siblings and the explicit read-only framing make the appropriate use clear. Missing an explicit 'instead of chat-export' or similar, but overall guidance is strong.

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

chat-sendAInspect

Send a message to the Foundry VTT chat log. Use for narration, NPC dialogue, combat descriptions, and out-of-character communication with the player. Supports HTML formatting. Pass actorId to speak as an NPC (shows their portrait). Use flavor for context subtitles like "Narration", "The Tavern", "Combat". Players watching Foundry only see what is posted here. You can insert document links in content using @UUID[Actor.actorId]{Name}, @UUID[Item.itemId]{Sword}, @UUID[JournalEntry.journalId]{Quest} — Foundry renders them as clickable links.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoMessage style: "ic" = in character (NPC speech), "ooc" = out of character (meta), "emote" = action description.
flavorNoSubheading above the message. E.g. "Narration", "The Rusty Dragon Inn", "Combat".
actorIdNoActor ID to speak as — shows their portrait and uses their name. Use for NPC dialogue.
contentYesMessage content. Supports HTML: <p>, <strong>, <em>, <blockquote>, <ul>, <li>. Use @UUID[DocumentType.id]{Label} for clickable document links. Must not be empty.
speakerNoDisplay name of the sender. Defaults to "Gamemaster". Overridden by actorId if both provided.
whisperToNoUser IDs to whisper to. Message visible only to these users and GM.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only carry minimal flags (readOnlyHint=false, destructiveHint=false) and do not disclose behavioral nuances. The description adds valuable context that players see what is posted, explains that actorId shows a portrait, and that flavor acts as a subheading. No contradictions with annotations; both treat this as a mutable, non-destructive write operation.

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

Conciseness5/5

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

The description is four sentences, each earning its place: purpose, use cases, parameter guidance, and a critical visibility note. It is front-loaded with the core action and packs dense, useful information without 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 chat-send tool with 6 parameters all fully described in the schema, the description covers usage scenarios, formatting capabilities, parameter behaviors, and player visibility. It does not mention persistence or message length limits, but those are minor for correct invocation. The lack of an output schema is acceptable since the tool's return value is not critical to calling 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% with descriptions on every parameter, so the baseline is 3. The description exceeds this by providing concrete examples for flavor ('Narration', 'The Tavern'), explaining the @UUID link syntax, and clarifying that actorId overrides speaker and shows a portrait. This adds practical meaning beyond the raw schema.

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

Purpose5/5

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

The description opens with 'Send a message to the Foundry VTT chat log,' clearly stating the verb and resource. It then lists distinct use cases (narration, NPC dialogue, combat descriptions, out-of-character communication) which differentiates it from sibling chat tools like chat-list, chat-update, and chat-delete that manage existing 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 description explicitly states when to use the tool: 'Use for narration, NPC dialogue, combat descriptions, and out-of-character communication with the player.' It provides clear context but does not name alternatives or exclusion criteria, so it stops short of a perfect 5.

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

chat-updateAInspect

Edit content or flavor of an existing chat message. Use to fix typos in DM narration or update descriptions. Use chat-list FIRST to find the message ID. At least one of content or flavor must be provided.

ParametersJSON Schema
NameRequiredDescriptionDefault
flavorNoNew flavor text (subheading above message).
contentNoNew message content (HTML). Replaces existing content.
messageIdYesID of the message to update. Get from chat-list.

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, indicating a mutating, non-idempotent operation. The description's 'Edit' aligns with this but adds no new behavioral detail beyond the prerequisite of chat-list. It doesn't clarify what happens when both content and flavor are provided (likely both are updated), but that's not a major gap given the schema covers the parameters.

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

Conciseness5/5

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

The description is concise (two sentences) and front-loaded with the purpose. Every sentence earns its place: it states the action, gives concrete use cases, provides a necessary prerequisite, and states a key constraint. No fluff or redundancy.

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

Completeness4/5

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

For a simple update tool with three parameters (one required) and no output schema, the description covers the essentials: what it does, how to obtain the required ID, and a usage constraint. It doesn't mention the return value or error behavior, but these are not critical for a basic mutation. It could clarify that both fields can be updated simultaneously, but that's a minor omission.

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 all three parameters are documented. The description adds value by specifying that at least one of content or flavor must be provided—a constraint not enforced by the schema (only messageId is required). It also points to chat-list as the source for messageId, which is useful. This exceeds the baseline 3 for full coverage.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Edit content or flavor of an existing chat message.' It distinguishes from siblings like chat-send (creating new messages) and chat-delete (removing), and even gives specific use cases ('fix typos in DM narration or update descriptions'), making it easy for an agent to know when this tool applies.

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 prerequisite: 'Use chat-list FIRST to find the message ID.' It also states a necessary constraint: 'At least one of content or flavor must be provided.' However, it does not explicitly mention when NOT to use it (e.g., for new messages use chat-send), though this is implied by the sibling names and context.

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

combat-add-combatantAInspect

Add actor to combat. Use actor-list or actor-filter FIRST to find actorId. After adding all combatants, use combat-roll-all-initiative before combat-start.

ParametersJSON Schema
NameRequiredDescriptionDefault
hiddenNoHide from players (for surprise/ambush)
actorIdYesActor ID to add (use actor-list to find)
tokenIdNoSpecific token ID if actor has multiple tokens
combatIdNoCombat ID (uses active combat if omitted)
initiativeNoPre-set initiative value (otherwise roll later)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only indicate this is a non-read-only, non-destructive call. The description adds behavioral context by revealing that the tool does not automatically roll initiative or start combat, and that actorId must be resolved beforehand. It does not address edge cases like duplicate actors, but the key sequencing behavior is disclosed.

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

Conciseness5/5

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

Two sentences convey both the operation and the full prerequisite/follow-up workflow. There is no filler 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 simple mutation tool with full schema coverage and an explicit workflow, the description is largely complete. It omits return-value details, but no output schema exists and the core invocation path is fully specified.

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 directing the agent to use actor-list or actor-filter FIRST to obtain the required actorId, which directly supports correct invocation.

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

Purpose5/5

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

The description opens with 'Add actor to combat', a concrete verb-resource pair that clearly distinguishes it from sibling tools like combat-remove-combatant or combat-set-initiative. The operation is unambiguous.

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

Usage Guidelines4/5

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

The description gives an explicit workflow: use actor-list or actor-filter FIRST to find actorId, then add combatants, then call combat-roll-all-initiative before combat-start. It does not list explicit 'when not to use' conditions, but the sequential context is clear and actionable.

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

combat-createAInspect

Create new combat encounter. First step in combat workflow. After creating: use combat-add-combatant to add actors, then combat-roll-all-initiative, then combat-start.

ParametersJSON Schema
NameRequiredDescriptionDefault
sceneIdNoScene ID (uses active scene if omitted)
activateNoActivate combat immediately (default: true)

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the description doesn't need to repeat those. It adds the workflow context but does not disclose any additional behavioral traits, such as what happens if a combat already exists or how the 'activate' parameter affects the result. The description is consistent with annotations but adds minimal behavioral detail beyond creation.

Agents need to know what a tool does to the world before 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 states the core action, the second provides the workflow context. It is front-loaded with the purpose and wastes no words. Every sentence earns its place, making it efficient 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?

For a simple create tool with two optional parameters and no output schema, the description covers the essential usage context through the workflow sequence. It doesn't explain edge cases like what happens if a combat already exists, but that is a minor gap given the tool's simplicity and the schema's parameter documentation. Overall, the 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?

The input schema provides 100% coverage for both parameters (sceneId and activate) with clear descriptions. The description does not add any extra meaning to the parameters, nor does it need to given the schema's thoroughness. Baseline of 3 is appropriate because 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 'Create new combat encounter' – a specific verb and resource. It also positions itself as the 'First step in combat workflow', which distinguishes it from sibling tools like combat-add-combatant or combat-start. The purpose is unambiguous and well-scoped.

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 provides the workflow sequence: 'After creating: use combat-add-combatant to add actors, then combat-roll-all-initiative, then combat-start.' This tells the agent exactly when to use this tool and what to do next, leaving no ambiguity about its role in the combat lifecycle.

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

combat-deleteA
Destructive
Inspect

Delete combat encounter immediately without confirmation. Use when combat is over or cancelled.

ParametersJSON Schema
NameRequiredDescriptionDefault
combatIdNoCombat ID (uses active combat if omitted)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, so the destructive nature is known. The description adds the key behavioral detail 'without confirmation', which is not in the annotations. This informs the agent that no user confirmation step will occur, which is valuable beyond the structured hints. 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?

Two concise sentences with no filler. The primary action is front-loaded, followed by the usage condition. Every word earns its place, and the description is easily scannable for an agent.

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 destructive action with one optional parameter and no output schema, the description covers the purpose, the usage context, and the behavioral nuance (no confirmation). Nothing essential is missing for an agent to correctly invoke this tool.

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

Parameters3/5

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

The schema description for combatId states 'Combat ID (uses active combat if omitted)', covering the parameter's meaning and optionality. The tool description does not add any additional parameter guidance, so with 100% schema coverage, the baseline score of 3 applies. The parameter is adequately documented in the schema itself.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 verb 'Delete', the resource 'combat encounter', and adds 'immediately without confirmation' for precision. It clearly distinguishes from other combat tools like combat-create or combat-get, and its specificity leaves 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 an explicit condition: 'Use when combat is over or cancelled.' This tells the agent when to invoke the tool, though it doesn't mention explicit alternatives or when not to use it. Given the sibling set includes many combat tools, the guidance is adequate but not exhaustive.

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

combat-getA
Read-onlyIdempotent
Inspect

Get combat state: combatants, round, turn, whose turn it is. Call FIRST to check if combat exists before other combat operations. Returns combatant IDs needed for combat-roll-initiative, combat-set-combatant-defeated, etc. combatId selects a specific encounter; omit it for the active combat.

ParametersJSON Schema
NameRequiredDescriptionDefault
combatIdNoCombat ID (uses active combat if omitted)

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, destructiveHint=false, idempotentHint=true, so the description doesn't need to repeat those. It adds behavioral context about the return value (combatant IDs needed for other operations) and the sequencing instruction. It doesn't specify behavior when no combat exists, but the 'check if combat exists' phrasing adequately implies that case.

Agents need to know what a tool does to the world before 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, front-loaded with the core purpose, then usage guidance and parameter clarification. No wasted words; 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 simple getter with one optional parameter and no output schema, the description covers the return contents and how to use it in a workflow. It's sufficient for an agent to call correctly, especially given the strong annotation coverage.

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 documents combatId with a description 'Combat ID (uses active combat if omitted)'. The tool description adds a slightly richer phrasing 'selects a specific encounter; omit it for the active combat' but essentially repeats the schema. Since schema coverage is 100%, baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool retrieves combat state including combatants, round, turn, and whose turn it is. It distinguishes itself from sibling combat tools by being the getter and explicitly positions it as the first call before other combat operations.

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

Usage Guidelines5/5

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

It explicitly instructs to call first to check if combat exists before other operations, and explains how to select a specific encounter via combatId or use active combat by omitting it. This is clear when-to-use guidance that differentiates from alternatives.

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

combat-next-turnAInspect

Advance to next combatant's turn. Auto-advances round when all have acted. includeContext (default true) appends the tactical context: current combatant position, nearby enemies with distances and line of sight, ASCII map; set false on routine turns to save context.

ParametersJSON Schema
NameRequiredDescriptionDefault
combatIdNoCombat ID (uses active combat if omitted)
includeContextNoAppend tactical context (default true).

TDQS

A4.4/5.0
Behavior4/5

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

The description discloses key behaviors beyond annotations: auto-advancing rounds and the optional tactical context (position, enemies, distances, line of sight, ASCII map). Annotations indicate this is not read-only, which is consistent. The description adds meaningful state-change details that an agent needs to set 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?

Two sentences, front-loaded with the main action, then key behavioral notes. Every word earns its place; 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 simple two-optional-param tool, the description covers the primary action, round advancement, and context options. It does not elaborate on edge cases (e.g., invalid combatId, combat already ended), but those are likely handled by the system and not critical for an agent to decide to call the tool. The description is sufficient for a competent 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?

Schema coverage is 100%, so the baseline is 3. However, the description adds significant value for includeContext by detailing exactly what the tactical context includes and when it is advisable to turn it off. For combatId, it relies on the schema's 'uses active combat if omitted', which is already clear. Overall, the description enriches 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 states a specific verb ('advance') and resource ('next combatant's turn'), and explicitly mentions auto-advancing rounds. This clearly distinguishes it from sibling tools like combat-previous-turn (previous turn) and combat-set-turn (explicit turn selection). No ambiguity remains 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 gives clear context about the tool's behavior (auto-advance round) and provides guidance on when to set includeContext false ('routine turns to save context'). It does not explicitly name alternatives or exclusions, but the context is sufficient for an agent to infer when to use this tool versus others in the combat family. Lacks explicit 'when not to use' but is clear enough.

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

combat-previous-turnAInspect

Go back to previous combatant's turn. Use to undo an accidental combat-next-turn.

ParametersJSON Schema
NameRequiredDescriptionDefault
combatIdNoCombat ID (uses active combat if omitted)

TDQS

A4/5.0
Behavior3/5

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

Annotations already convey that this is a non-read-only, non-idempotent mutation that isn't destructive. The description adds the precise effect (moving to the previous combatant), but doesn't disclose edge behavior such as what happens when already at the first combatant or whether it wraps around. 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 two short sentences with zero wasted words. The core action is front-loaded, and the use-case clarification follows immediately, making it easy 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?

For a one-parameter tool whose schema and annotations already cover the safety profile and the optional combatId, the description is nearly complete. It explains what the tool does and when to use it; only niche edge behavior (e.g., starting position) is omitted, which is unlikely to affect 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?

There is only one optional parameter, combatId, and the schema description covers it 100% ('Combat ID (uses active combat if omitted)'). The tool description does not add parameter-level detail, but with full schema coverage and a clearly named parameter, no additional explanation is necessary.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 uses a specific verb and resource: 'Go back to previous combatant's turn', immediately followed by the intended use case 'undo an accidental combat-next-turn'. This clearly differentiates it from combat-next-turn and from more generic combat-set-turn, so an agent can distinguish it 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 Guidelines4/5

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

The description explicitly names the situation where it should be used: after an accidental combat-next-turn. It does not mention alternatives such as combat-set-turn for jumping multiple turns, but the primary use case is clearly scoped, which is sufficient for a simple tool.

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

combat-remove-combatantAInspect

Remove combatant from combat. Use combat-get to find combatantId (not same as actorId). Use when creature flees or is removed from encounter.

ParametersJSON Schema
NameRequiredDescriptionDefault
combatIdNoCombat ID (uses active combat if omitted)
combatantIdYesCombatant ID (from combat-get, NOT actorId)

TDQS

A4.2/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=false, so the description doesn't need to restate those. The description adds useful context about the combatantId being distinct from actorId, but doesn't disclose what happens to the combatant's token, whether the combatant is permanently deleted or just removed from the current combat, or whether the combat must be active. With annotations covering the basic safety profile, a 3 is appropriate.

Agents need to know what a tool does to the world before 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 zero waste. The core action is front-loaded, the critical identifier warning is second, and the usage condition is third. 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 two-parameter removal tool with full schema coverage and annotations, the description is nearly complete. It covers the action, the key parameter source, and the usage scenario. The only minor gap is not describing what happens after removal (e.g., is the combatant deleted or just removed from the encounter?), but this is a small omission for a straightforward 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 schema already documents both parameters. The description reinforces that combatantId comes from combat-get and is NOT actorId, which adds practical meaning beyond the schema. However, it doesn't add detail about combatId's 'active combat if omitted' behavior beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Remove combatant from combat') and immediately distinguishes the key identifier from a common confusion ('not same as actorId'). It clearly differentiates from sibling tools like combat-set-combatant-defeated and combat-toggle-combatant-visibility by focusing on removal from 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?

The description explicitly says when to use this tool ('when creature flees or is removed from encounter') and tells the agent to use combat-get to find the correct combatantId. This provides clear context and a direct alternative/helper tool reference.

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

combat-roll-all-initiativeAInspect

Roll initiative for all combatants at once. Call AFTER combat-add-combatant, BEFORE combat-start. Use npcsOnly=true to let players roll their own.

ParametersJSON Schema
NameRequiredDescriptionDefault
formulaNoCustom formula for all (uses each character's default if omitted)
combatIdNoCombat ID (uses active combat if omitted)
npcsOnlyNoOnly roll for NPCs, skip player characters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false, destructiveHint=false, and idempotentHint=false. The description confirms it's a mutation (rolling initiative) but doesn't elaborate on side effects like overwriting existing initiative values or setting turn order. Since annotations are minimal, the description carries some burden but only partially fulfills 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 sentences, zero wasted words. The primary purpose is front-loaded, followed by ordering guidance and a flag hint. 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?

The description covers the essential usage: what it does, when to call it, and the key flag. It doesn't describe the return value, but no output schema exists and the tool is simple enough that this isn't critical. The schema handles parameter details like combatId defaulting. Adequate for the tool's complexity.

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

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 value by explaining the npcsOnly flag's rationale ('to let players roll their own'), which goes slightly beyond the schema's 'Only roll for NPCs, skip player characters'. This practical context justifies a score 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?

The description clearly states a specific verb and resource: 'Roll initiative for all combatants at once.' It distinguishes itself from the sibling combat-roll-initiative (singular) by emphasizing 'all at once', making the tool's purpose unambiguous.

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

Usage Guidelines4/5

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

It provides explicit ordering context ('Call AFTER combat-add-combatant, BEFORE combat-start') and explains the npcsOnly flag's purpose. While it doesn't explicitly mention the singular combat-roll-initiative as an alternative, the 'all at once' phrasing and naming make the distinction clear. Slight deduction for not naming the alternative directly.

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

combat-roll-initiativeAInspect

Roll initiative for specific combatants. Use combat-get to find combatantIds. For rolling all at once, use combat-roll-all-initiative instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
formulaNoCustom formula like "1d20+5" (uses character's default if omitted)
combatIdNoCombat ID (uses active combat if omitted)
combatantIdsYesCombatant IDs to roll for (from combat-get)

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already convey that this is a non-read-only, non-idempotent operation, so the description does not need to restate the safety profile. However, it adds no behavioral context beyond the act of rolling—such as whether existing initiative values are overwritten or whether the roll affects combat state. The lack of contradiction keeps it at an adequate 3.

Agents need to know what a tool does to the world before 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 purposeful sentences: the core purpose is front-loaded, the ID lookup hint is included, and the sibling alternative is stated without extra detail. No word is wasted.

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?

Everything needed to select and invoke the tool correctly is present: the target combatant IDs, how to obtain them, a sibling disambiguation, and optional parameters are covered by the schema. The only minor gap is that no return/result behavior is described, but the tool is simple and the invocation path is 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%, and the schema already documents combatantIds from combat-get, optional formula syntax, and default active combat. The description's mention of combat-get adds no meaning beyond what the parameter schema already states, so baseline 3 applies.

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

Purpose5/5

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

The description states a specific verb and object—'Roll initiative for specific combatants'—and immediately distinguishes it from the sibling combat-roll-all-initiative. An agent can tell exactly what resource and scope this tool targets.

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 a concrete prerequisite ('Use combat-get to find combatantIds') and an explicit alternative for the when-not-to-use case ('For rolling all at once, use combat-roll-all-initiative instead'). This leaves no ambiguity about which situation selects this tool.

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

combat-set-combatant-defeatedA
Idempotent
Inspect

Mark combatant as defeated (shows skull icon, skips their turn). Use when creature reaches 0 HP or is otherwise eliminated.

ParametersJSON Schema
NameRequiredDescriptionDefault
combatIdNoCombat ID (uses active combat if omitted)
defeatedYestrue = defeated, false = not defeated
combatantIdYesCombatant ID (from combat-get)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true and destructiveHint=false; the description adds useful behavioral context by mentioning the skull icon and that defeated combatants skip their turn. 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?

Two short sentences with the main action first and a when-to-use clause second. 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 boolean setter with full schema coverage and idempotency annotation, the description plus schema fully covers what the tool does, when to use it, and how the optional combatId behaves. An output schema is not essential for this mutation.

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

Parameters3/5

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

Schema coverage is 100%, with descriptions for combatantId, defeated, and optional combatId including the active-combat fallback. The description does not add parameter-specific meaning beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb ('Mark') and resource ('combatant') and adds observable outcomes (skull icon, skipped turn), making it distinct from sibling combat-set-initiative, combat-set-turn, and combat-toggle-combatant-visibility.

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 gives a trigger condition: 'Use when creature reaches 0 HP or is otherwise eliminated.' It doesn't name alternatives or exclusions, but the context is clear enough for selecting among combat siblings.

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

combat-set-initiativeA
Idempotent
Inspect

Manually set initiative value. Use for readied actions, special circumstances, or fixing rolls.

ParametersJSON Schema
NameRequiredDescriptionDefault
combatIdNoCombat ID (uses active combat if omitted)
initiativeYesInitiative value to set
combatantIdYesCombatant ID (from combat-get)

TDQS

A4/5.0
Behavior3/5

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

Annotations already convey readOnlyHint=false and destructiveHint=false. The description consistently implies a write operation but adds no behavioral detail beyond purpose — it doesn't mention overwriting behavior, permissions, or side effects. It doesn't contradict the annotations, but also doesn't significantly enrich behavioral understanding beyond what structured data 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?

Two short sentences with no filler. The action is front-loaded, and the use-case sentence earns its place by guiding selection. Every word is purposeful.

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 setter with full schema coverage and no output schema, the description plus annotations cover the essential information. It could briefly mention that setting overwrites the existing value, but that is strongly implied by 'set' and the idempotentHint. Minor gap, but overall complete enough.

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 mentions 'initiative value' but adds no parameter-level detail (e.g., range, format) or relationships between parameters. Baseline 3 applies because the schema carries the full 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?

Description clearly states 'Manually set initiative value' and differentiates from the rolling siblings by naming specific scenarios ('readied actions, special circumstances, or fixing rolls'). The verb-resource pair is specific and the tool's role among combat tools is unambiguous.

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

Usage Guidelines4/5

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

The description gives explicit context for when to use the tool ('Use for readied actions, special circumstances, or fixing rolls'), which implies the alternative is rolling initiative. However, it does not explicitly name the alternative tools (e.g., combat-roll-initiative) or provide 'when not to use' exclusions.

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

combat-set-turnA
Idempotent
Inspect

Jump directly to a specific combatant's turn in combat. Does NOT cycle through intermediate turns or increment the round. Use this instead of repeated combat-next-turn calls to avoid triggering round-based effects (Rage expiry, concentration checks, condition durations). Get combatant IDs from combat-get. includeContext (default true) appends the tactical context for the new current combatant.

ParametersJSON Schema
NameRequiredDescriptionDefault
combatIdNoCombat ID (uses active combat if omitted)
combatantIdYesCombatant ID to set as current turn (from combat-get)
includeContextNoAppend tactical context (default true).

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations (idempotentHint=true, destructiveHint=false), the description discloses critical behavioral details: it does not increment the round, avoids round-based effects like Rage expiry and concentration checks, and that includeContext defaults to true appending tactical context. These are substantive and not implied by 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 tightly constructed sentences: the first states the core action, the second explains the key distinction and why to use it, and the third covers source of IDs and the includeContext parameter. No filler or redundancy; information is front-loaded and efficient.

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

Completeness5/5

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

For a tool with only three parameters (one required) and no output schema, the description covers the purpose, usage context, behavioral impact, and parameter provenance. There is no missing information an agent needs to correctly invoke this 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 input schema already provides full descriptions for all three parameters (100% coverage), giving a baseline of 3. The description adds marginal value by explicitly stating the purpose of includeContext ('appends the tactical context') and reminding the agent to obtain combatant IDs from combat-get, which reinforces schema content without contradicting 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 states a specific verb ('Jump directly to'), a specific resource ('a specific combatant's turn'), and explicitly differentiates from sibling tools by noting it does NOT cycle through intermediate turns or increment the round. This makes its purpose unmistakable and distinct from combat-next-turn.

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 directs when to use this tool over alternatives: 'Use this instead of repeated combat-next-turn calls to avoid triggering round-based effects.' It also names the source of required IDs ('Get combatant IDs from combat-get'). Clear and actionable guidance.

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

combat-startAInspect

Begin combat (round 1, turn 0). Call AFTER adding combatants and rolling initiative. Returns the combat state; includeContext (default true) appends the tactical context: current combatant position, nearby enemies with distances and line of sight, ASCII map.

ParametersJSON Schema
NameRequiredDescriptionDefault
combatIdNoCombat ID (uses active combat if omitted)
includeContextNoAppend tactical context (default true).

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate this is not read-only and not destructive. The description adds behavioral detail by stating it sets round 1, turn 0, returns the combat state, and that includeContext appends tactical context (combatant position, nearby enemies, line of sight, ASCII map). This goes beyond the schema and gives agents a clear picture of the tool's 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, front-loaded with the core action and prerequisites, and every clause adds useful information. No filler or redundant restatement 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?

The description covers the essential usage prerequisite, the initial state, and return behavior. With no output schema, the note about returning combat state and tactical context is valuable. A minor gap is that it doesn't mention what happens if combatId is omitted and no active combat exists, but the schema already covers the fallback behavior.

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 elaborating on includeContext: it explains the default (true) and exactly what tactical context is appended. It also reinforces that combatId can be omitted to use the active combat, matching the schema's description.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Begin combat (round 1, turn 0).' It clarifies the initial state and the ordering prerequisite ('Call AFTER adding combatants and rolling initiative'), which clearly distinguishes this from sibling tools like combat-create, combat-add-combatant, and combat-roll-all-initiative.

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

Usage Guidelines4/5

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

Explicit sequencing is provided: 'Call AFTER adding combatants and rolling initiative.' This gives a clear condition for when to use the tool. It does not name specific alternatives or explain when not to use it, but the prerequisite is strong context.

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

combat-toggle-combatant-visibilityAInspect

Set or toggle a combatant's visibility to players (hidden enemies, invisible creatures, surprise). Pass hidden to set the state explicitly; omit it to flip the current state.

ParametersJSON Schema
NameRequiredDescriptionDefault
hiddenNotrue = hide from players, false = reveal. Omit to toggle.
combatIdNoCombat ID (uses active combat if omitted)
combatantIdYesCombatant ID (from combat-get)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate this is not read-only and not idempotent, and the description adds useful behavioral nuance: passing hidden sets the state explicitly, while omitting it flips the current state. This clarifies the non-idempotent toggle behavior beyond the bare 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.

Conciseness5/5

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

Two front-loaded sentences convey the action, purpose, and the critical set-vs-toggle distinction with no wasted words. 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 three-parameter tool with no output schema, the description plus schema covers the required combatantId, optional hidden semantics, and combatId fallback described in the schema. It could add a note about the return value, but nothing essential is missing 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 all three parameters are already documented in the schema. The description restates the hidden/toggle behavior rather than adding new parameter-level meaning, which matches the baseline for 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 the specific verb pair 'Set or toggle' with the clear resource 'a combatant's visibility to players', then grounds it with concrete use cases (hidden enemies, invisible creatures, surprise). No sibling tool covers this visibility behavior, so it is readily distinguishable from the combat sibling set.

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 context: use this to hide or reveal combatants to players, with examples of when that matters. It does not name explicit alternatives or exclusions, but there is no closely competing sibling tool for this action, so 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.

compendium-browseA
Read-onlyIdempotent
Inspect

Browse the contents of a compendium pack. Lists documents (monsters, items, spells, etc.) in the compendium. Use compendium-list first to find the packId. Use types to select only given subtypes (e.g. ["spell"]), and ids to BATCH-fetch specific documents in one call — e.g. every item a class grants, taken from uuid-resolve output — instead of N compendium-document-get calls. types+ids combine with AND. On bridge module 8.11.0+ the selection happens inside Foundry; on older modules the full pack is fetched and the same selection is applied gateway-side. Paginate with limit (default 50, max 200) and offset. For structured stat filters (CR, level, rarity, traits, price...) prefer dnd5e-compendium-filter-* / pf2e-compendium-filter-* instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoOnly documents with these _id values — batch selection. Omit for all.
limitNoPage size, default 50, max 200.
typesNoOnly documents of these SUBtypes, e.g. ["spell"] or ["weapon","armor"]. Omit for all.
offsetNoSkip the first N matching documents.
packIdYesThe compendium pack ID (e.g., "dnd5e.monsters", "dnd5e.items")
searchNoOptional search query to filter documents by name (case-insensitive)

TDQS

A5/5.0
Behavior5/5

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

Annotations already mark this as read-only and idempotent, and the description adds useful behavior beyond that: version-dependent execution ('On bridge module 8.11.0+ the selection happens inside Foundry; on older modules the full pack is fetched'), pagination behavior, and the AND combination of types and ids. 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?

Every sentence earns its place: purpose, prerequisite, parameter semantics, version behavior, pagination, and alternative routing. The most important usage facts are front-loaded, and there is 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 read-only browsing tool with no output schema, the description covers all six parameters, pagination, filtering, batching, version-dependent behavior, and sibling-tool distinctions. Nothing essential to 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.

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 meaning not present in the schema: 'types+ids combine with AND,' ids are for batch-fetching in one call, and it gives a concrete example ('every item a class grants, taken from uuid-resolve output'). This materially helps an agent construct correct calls.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'Browse the contents of a compendium pack. Lists documents (monsters, items, spells, etc.).' It also differentiates itself from nearby siblings by explicitly pointing to compendium-list for pack discovery, compendium-document-get for single-document fetching, and the dnd5e/pf2e filter tools for structured stat filters.

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 explicit routing guidance: 'Use compendium-list first to find the packId,' 'instead of N compendium-document-get calls,' and 'For structured stat filters... prefer dnd5e-compendium-filter-* / pf2e-compendium-filter-* instead.' This tells the agent when to use this tool and when to choose a clear alternative.

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

compendium-document-getA
Read-onlyIdempotent
Inspect

Get a compendium document as a readable summary: actors come back as a statblock (HP, AC, abilities, attacks), other types as core fields plus system data. For the complete raw JSON use compendium-document-get-raw, or uuid-resolve when you already hold the document UUID (what the filter tools return). Use compendium-browse to find document IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
packIdYesThe compendium pack ID (e.g., "dnd5e.monsters")
documentIdYesThe document ID within the compendium

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 false, so the safety profile is covered. The description adds the key behavioral detail that actors are transformed into statblocks while other types return core fields plus system data, which is meaningful 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?

Three sentences with no filler: the first states purpose and output behavior, the second routes to alternatives, and the third tells how to find the required ID. 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.

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 well-documented parameters, the description fully covers what the agent needs: what the tool returns, how it formats different document types, and how to find inputs. No output schema exists, but the description compensates by describing the return shape.

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 packId and documentId. The description adds value by telling the agent how to source document IDs via compendium-browse and clarifying that filter tools return UUIDs, which helps populate parameters correctly.

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

Purpose5/5

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

The description names a specific verb and resource ('Get a compendium document') and immediately clarifies it returns a readable summary rather than raw data. It distinguishes itself from compendium-document-get-raw and uuid-resolve, so an agent can tell them apart without opening schemas.

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

Usage Guidelines5/5

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

The description gives explicit routing guidance: use this tool for readable summaries, use compendium-document-get-raw for complete raw JSON, use uuid-resolve when already holding a UUID, and use compendium-browse to find document IDs. This fully covers when to use the tool versus its alternatives.

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

compendium-document-get-rawA
Read-onlyIdempotent
Inspect

Get the complete raw JSON data of a compendium document including all system fields. Use this when you need the full statblock data for calculations or detailed information.

ParametersJSON Schema
NameRequiredDescriptionDefault
packIdYesThe compendium pack ID
documentIdYesThe document ID within the compendium

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 and destructiveHint=false, but the description adds valuable context beyond that: it specifies that the tool returns complete raw JSON, including all system fields, which informs the agent about the response's nature and completeness. 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 two sentences with no redundancy. The core purpose ('Get the complete raw JSON data') is front-loaded, followed by a concise usage guideline. 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 retrieval tool with two clearly documented parameters and annotations covering safety, the description is nearly complete. It clearly states what the tool returns and when to use it. The only minor omission is the lack of mention of potential errors or size concerns, but these are not critical for agent selection and invocation.

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

Parameters3/5

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

Schema description coverage is 100%: both packId and documentId have clear descriptions in the input schema. The tool description does not add any additional parameter semantics beyond what the schema provides, which matches 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 clearly states the action ('Get the complete raw JSON data') and the resource ('compendium document'), explicitly mentioning 'including all system fields'. It differentiates from the sibling compendium-document-get by the word 'raw', making the tool's specific purpose unambiguous.

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

Usage 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 use the tool: 'Use this when you need the full statblock data for calculations or detailed information.' This gives clear context but does not explicitly mention alternatives or when not to use it, though the sibling compendium-document-get is implied as the more structured alternative.

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

compendium-listA
Read-onlyIdempotent
Inspect

List all available compendium packs. Compendiums contain pre-made content like monsters, items, spells, etc. Use this to discover what compendiums are available, then use compendium-browse to see their contents.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOnly packs holding this document type.

TDQS

A4.4/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 context about the purpose and the discovery flow, but does not mention the optional type filtering or that the listing can be scoped by document type. Still, it adds value beyond 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 with no wasted words. The purpose is front-loaded, followed by a brief explanation and a clear next-step pointer. Highly 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 simple list tool with one optional parameter and no output schema, the description is largely complete. It covers the main use case and routing. A minor gap is the lack of mention that the 'type' parameter can filter results, though the schema documents this. The description could also state what the response contains (e.g., pack names and IDs), but that is not critical.

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

Parameters3/5

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

Schema coverage is 100% for the single optional 'type' parameter, which has an enum and description. The description does not add any additional parameter meaning 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.

Purpose5/5

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

Description clearly states the verb 'List' and the resource 'compendium packs', and explicitly contrasts with compendium-browse ('use compendium-browse to see their contents'), making the tool's role unambiguous among many compendium-related 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?

Provides explicit guidance: 'Use this to discover what compendiums are available, then use compendium-browse to see their contents.' This tells the agent exactly when to use this tool and points to the next appropriate action.

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

dnd5e-compendium-filter-actorsA
Read-onlyIdempotent
Inspect

Search COMPENDIUM packs for actors with D&D 5e structured filters (dnd5e worlds only). Compendium counterpart of actor-filter, which searches world actors; for a plain name lookup use compendium-search.

CRITICAL DATA FORMATS

  • CR is a NUMBER from the exact set 0, 0.125, 0.25, 0.5, 1..30 ("1/4" -> 0.25; 0.3 is rejected).

  • Sizes are SHORT codes: tiny, sm, med, lg, huge, grg. creatureType: the 14 lowercase SRD types, no subtypes ("demon" -> "fiend").

  • level applies only to type "character" (NPCs have CR). World-only filters (folder, hasPlayerOwner, currentHp) do not exist here.

SEMANTICS: filters combine with AND, values inside one array with OR. Ranges are {min?, max?}, inclusive (min = max for exact). Documents lacking a filtered field are silently excluded. limit 1..200 (default 50), offset; the response has total and hasMore. Results are {name, uuid} entries: follow up with uuid-resolve, or compendium-browse with ids to batch-load. Requires bridge module 8.11.0+.

EXAMPLES { "type": ["npc"], "cr": { "min": 0.25, "max": 0.25 } } { "packIds": ["dnd5e.monsters"], "creatureType": ["dragon"], "size": ["huge", "grg"] }

ParametersJSON Schema
NameRequiredDescriptionDefault
acNoArmor Class range.
crNoChallenge Rating range (numbers from the valid CR set). NPCs only.
nameNoSubstring of document name, case-insensitive.
sizeNoSize short codes (OR).
typeNoActor types (OR).
levelNoCharacter level range; type "character" only.
limitNoPage size 1..200, default 50.
maxHpNoMax HP range.
offsetNoSkip first N results.
packIdsNoRestrict to these Actor packs; omit for all.
abilitiesNoPer-ability score ranges.
dispositionNoPrototype token disposition (OR).
creatureTypeNoSRD creature types (OR), NPCs only. No subtypes: "demon" -> "fiend".

TDQS

A5/5.0
Behavior5/5

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

Even with readOnlyHint and idempotentHint already set, the description adds substantial behavior: documents lacking a filtered field are silently excluded, pagination semantics (limit, offset, total, hasMore), result shape ({name, uuid}), and follow-up tools (uuid-resolve, compendium-browse). It also discloses the module version requirement. 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 long but tightly organized into CRITICAL DATA FORMATS, SEMANTICS, RESULTS, and EXAMPLES, with the core purpose front-loaded. Every section supplies necessary operational detail rather than padding, and the examples concretely demonstrate valid filter shapes.

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 13-parameter filter tool with no output schema, the description covers what is needed to call it correctly: filter semantics, edge cases, pagination behavior, return shape, and follow-up resolution. The annotations already cover the safety profile, and the description fills the remaining operational gaps completely.

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 schema has 100% parameter coverage, the description adds critical meaning beyond it: the exact valid CR set including the '1/4' -> 0.25 conversion and rejection of 0.3, size short codes, level applying only to type 'character', and the exclusion of world-only filters. It also explains range inclusivity and AND/OR combination, which the schema alone does not fully 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 states a specific verb ('Search COMPENDIUM packs'), a clear resource (actors), and the D&D 5e structured-filter scope. It explicitly distinguishes itself from actor-filter (world actors) and compendium-search (plain name lookup), so an agent can separate it from near-names without inspecting schemas.

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

Usage Guidelines5/5

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

It gives explicit usage boundaries: dnd5e worlds only, compendium packs only, and names the alternatives for other cases ('Compendium counterpart of actor-filter', 'for a plain name lookup use compendium-search'). It also states the semantic model (AND/OR, ranges, limits) that governs correct use.

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

dnd5e-compendium-filter-itemsA
Read-onlyIdempotent
Inspect

Search COMPENDIUM packs for items with D&D 5e structured filters (dnd5e worlds only): gear, spells, feats, class features and other Item documents. Compendium counterpart of world-item-filter.

CRITICAL DATA FORMATS

  • rarity is camelCase: veryRare (not "very rare"). spellSchool is the full word (evocation, not "evo").

  • spellLevel 0..9 (0 = cantrip) only affects type "spell"; other types are silently excluded by it.

  • price in GP (denominations normalized), weight in lb, decimals allowed.

SEMANTICS: filters combine with AND, values inside one array with OR. Ranges are {min?, max?}, inclusive (min = max for exact). Documents lacking a filtered field are silently excluded. limit 1..200 (default 50), offset; the response has total and hasMore. Results are {name, uuid} entries: follow up with uuid-resolve, or compendium-browse with ids to batch-load. Requires bridge module 8.11.0+.

EXAMPLES { "type": ["spell"], "spellLevel": { "min": 0, "max": 0 }, "spellSchool": ["evocation", "illusion"] } { "requiresAttunement": true, "price": { "max": 5000 }, "rarity": ["rare", "veryRare"] }

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoSubstring of document name, case-insensitive.
typeNoItem types (OR).
limitNoPage size 1..200, default 50.
priceNoPrice range in gp.
offsetNoSkip first N results.
rarityNoRarity (OR), camelCase: veryRare.
weightNoWeight range in lb.
packIdsNoRestrict to these Item packs; omit for all.
identifiedNoFilter by the identified flag.
spellLevelNoSpell level 0..9 (0 = cantrip); spells only.
isContainerNoOnly containers.
spellSchoolNoSpell schools (OR), full words.
hasActivitiesNoOnly items with usable activities.
requiresAttunementNoOnly items that require attunement.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations include readOnlyHint and idempotentHint, which are consistent with the description. The description adds critical details like rarity casing, spellLevel semantics, price/weight formats, and the exclusion of documents lacking filtered fields. It also mentions limit/offset and the response structure. 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.

Conciseness4/5

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

Well-structured with clear sections for critical data formats, semantics, and examples. A bit long but dense with essential information. The examples are particularly useful.

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

Completeness5/5

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

Despite no output schema, the description explains the response format ({name, uuid} entries, total, hasMore) and provides follow-up tool suggestions. It also notes the bridge module requirement. For a complex filter tool with 14 parameters, this is complete.

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

Parameters5/5

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

Schema description coverage is 100%, but the description significantly adds value by explaining filter combination (AND/OR), range inclusivity, and the special note that spellLevel only affects spells. It also provides examples that clarify parameter usage beyond the bare 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 searches compendium packs for items with structured filters, specifying it's the compendium counterpart of world-item-filter. It lists the types of items covered (gear, spells, feats, class features) and distinguishes it from other 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?

Provides clear context on when to use (searching compendium items) and mentions the compendium counterpart relationship. Does not explicitly list alternatives or when-not-to-use, but the scope is clear enough.

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

dnd5e-item-activateAInspect

Activate an item with full Foundry automation — triggers Midi-QOL and other automation module hooks. Use for combat actions: melee/ranged attacks, spell casting, abilities. Pass targetTokenIds for attacks — Midi-QOL will auto-roll attack, check AC, roll damage, apply HP loss. For AoE spells pass templatePosition. Circle AoE (Fireball): x,y = center of effect (avg target positions). Cone/Line AoE (Cone of Cold, Lightning Bolt): x,y = caster token position, direction = angle toward targets (direction = atan2(targetY - casterY, targetX - casterX) * 180 / PI, add 360 if negative). Pixel coords: pixel = gridCoord * gridSize + gridSize / 2. Unlike dnd5e-item-use, this does NOT suppress hooks or dialogs, so automation modules work fully. Use scene-get to find target token IDs and grid info, item-list to find item IDs. Prefer this over dnd5e-item-use when targets, templates or automation matter.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesItem ID to activate (from item-list)
actorIdYesActor ID performing the action
activityIdNoSpecific activity ID if item has multiple
spellLevelNoSpell slot level for casting. Enables upcasting (e.g. Fireball at 5th level = 10d6). Skips slot selection dialog. If omitted, uses spell base level.
activityTypeNoActivity type: "attack", "damage", "save", "heal", "check", "utility"
targetTokenIdsNoToken IDs of targets on the scene. Required for attacks — Midi-QOL needs targets to auto-resolve hits and damage
templatePositionNoAoE template placement. Circle spells: x,y = center of effect. Cone/line spells: x,y = caster position, direction = angle toward targets.

TDQS

A5/5.0
Behavior5/5

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

Annotations are all false, so the description carries the full burden, and it delivers: it discloses that automation hooks run, dialogs are not suppressed, Midi-QOL auto-resolves attacks/AC/damage, and HP loss is applied. This goes well beyond annotations and warns about the observable side effects of activation.

Agents need to know what a tool does to the world before 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 adds distinct information and the most important purpose/contrast is front-loaded. The length is justified by the complex spatial/AoE instructions; nothing reads as 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 high-complexity combat tool with no output schema, the description covers purpose, prerequisites, coordinate math, target requirements, and sibling selection. An agent has enough to invoke it correctly and understand expected in-world effects.

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 already 100%, so baseline is 3, but the description adds crucial usage semantics: targetTokenIds are required for attacks, templatePosition has different meanings for circle vs cone/line, and provides concrete formulas for direction and pixel coordinates. It also clarifies spellLevel upcasting with an example, which is not 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?

Open with 'Activate an item with full Foundry automation' and immediately names Midi-QOL hooks, making the action and resource clear. It explicitly distinguishes itself from sibling dnd5e-item-use by noting that this version does not suppress hooks or dialogs. This is a specific verb+resource with clear differentiation.

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?

States when to use it: 'Use for combat actions' and 'Prefer this over dnd5e-item-use when targets, templates or automation matter.' It also names the alternative and gives the deciding condition, plus points to scene-get and item-list for prerequisites. No ambiguity remains about selection.

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

dnd5e-item-useAInspect

Use an item from an actor's inventory via item.use() with dialogs suppressed: consumables (potions, scrolls), spells, weapons, features. Returns the raw use result as JSON. CHOOSING: this tool for quick, dialog-free usage without targets; dnd5e-item-activate when targets, AoE templates, or automation modules (Midi-QOL) matter.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesThe item ID to use. Use item-list to find item IDs.
actorIdYesThe actor ID that owns the item
consumeNoWhether to consume the item (default: true for consumables)
scalingNoSpell slot level for scaling spells
activityIdNoSpecific activity ID to use if the item has multiple activities
showInChatNoWhether to show the result in chat (default: true)
activityTypeNoActivity type to use (e.g., "attack", "save", "heal", "utility")

TDQS

A4.2/5.0
Behavior3/5

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

The description discloses that dialogs are suppressed and that it returns the raw use result as JSON, which are behavioral traits. However, it does not explicitly state the side effects of using an item, such as whether consumables are actually consumed or spell slots are expended. Since all annotations are false (readOnlyHint, destructiveHint, idempotentHint), the description carries the full burden, and it only partially covers the behavioral implications. It mentions the consume parameter indirectly through the schema but not in the description itself. This is a moderate gap.

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

Conciseness5/5

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

The description is two sentences plus the differentiation clause, all front-loaded with the purpose and usage guidance. There is zero wasted text; every sentence earns its place by either stating what the tool does or when to use it. The structure is efficient and scannable.

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 7 parameters and no output schema, the description covers the essential contextual information: what it does, when to use it, and what it returns. It does not explain error cases or prerequisites (e.g., the actor must own the item), but these are fairly obvious from the domain. The differentiation from the sibling and the note about 'without targets' covers the main usage constraints. Given the complexity, this is reasonably complete, though it could mention that using an item may have permanent game-state effects.

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

Parameters3/5

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

The schema has 100% description coverage for all 7 parameters, so the schema already documents each parameter's meaning. The description adds minimal additional parameter semantics—it mentions the item types supported and the 'dialog-free' nature, but does not clarify parameter interactions or provide examples. This is exactly the baseline where the schema does the heavy lifting, so a score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's action (use an item via item.use()), the resource (actor's inventory), and the scope (consumables, spells, weapons, features). It also explicitly differentiates from the sibling dnd5e-item-activate by naming the alternative and the conditions that select it. This makes the purpose unambiguous and distinct from 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?

The description provides explicit usage guidance by stating 'CHOOSING: this tool for quick, dialog-free usage without targets; dnd5e-item-activate when targets, AoE templates, or automation modules (Midi-QOL) matter.' This tells the agent exactly when to use this tool versus the alternative, and also implies when not to use it. This is explicit and actionable.

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

dnd5e-roll-abilityAInspect

Roll raw D&D 5e ability check (no skill proficiency). Use for contested checks or when no skill applies. Results appear in Foundry chat.

ParametersJSON Schema
NameRequiredDescriptionDefault
abilityYesAbility code: str=Strength, dex=Dexterity, con=Constitution, int=Intelligence, wis=Wisdom, cha=Charisma
actorIdYesActor ID (from actor-list/actor-filter)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations provide only negative hints (readOnly=false, etc.), so the description adds needed behavior: it is a raw check without skill proficiency)Skip and results appear in Foundry chat. It does not detail the full roll formula, but the key output modality is disclosed.

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

Conciseness5/5

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

Three short sentences cover the action, use case, and output location with no redundancy or filler. Every sentence earns its place and the core identity 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 simple 2-parameter roll tool with a complete schema and no output schema, the description adequately covers what is rolled, when to use it, and where results are displayed. Together with sibling names, an agent has enough context 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?

The schema already documents both parameters completely: ability enum with code expansions and actorId source. The description adds no additional parameter detail beyond what the schema provides, 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 states a specific verb and resource: 'Roll raw D&D 5e ability check' with the qualifier '(no skill proficiency)'. It clearly differentiates from skill-based rolls and related siblings by noting when no skill applies.

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 explicitly provides usage conditions: 'Use for contested checks or when no skill applies.' The exclusion of skill proficiency implies when not to use it, but it does not name an alternative tool such as dnd5e-roll-skill directly.

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

dnd5e-roll-attackAInspect

Roll attack with a weapon/spell. Use actor-get FIRST to find itemId. For full attack sequence (roll + damage if hit), consider dnd5e-item-use instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesItem ID of weapon/spell (from actor-get items list)
actorIdYesActor ID making the attack

TDQS

A4.2/5.0
Behavior3/5

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

Annotations provide no positive safety signals: readOnlyHint=false, no idempotency or destructivity hints, so the description carries the behavioral burden. It usefully scopes this tool to the attack roll only, but it does not say what the call returns, whether it posts to chat, or which game rules such as advantage and modifiers are applied.

Agents need to know what a tool does to the world before 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, prerequisite, and alternative routing with no filler. The most important information 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?

For a simple two-parameter tool, the description plus schema is nearly sufficient: it explains the prerequisite and the boundary between attack and damage. It is slightly incomplete because there is no output schema and the description does not say what the agent should expect after the roll resolves.

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 both parameters already have clear descriptions, so the baseline is 3. The description reinforces that itemId comes from actor-get, but adds no genuinely new meaning beyond what the schema already states.

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

Purpose5/5

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

The description opens with a specific action and resource: 'Roll attack with a weapon/spell'. It also distinguishes this tool from dnd5e-item-use by noting that the full sequence (roll + damage if hit) belongs to that sibling, so an agent can tell them apart immediately.

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 an explicit prerequisite: 'Use actor-get FIRST to find itemId'. It also states the exact condition that should route an agent to dnd5e-item-use: 'For full attack sequence (roll + damage if hit)'. This is actionable and unambiguous about when this tool is the right choice.

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

dnd5e-roll-damageAInspect

Roll damage for a weapon/spell. Use actor-get FIRST to find itemId. Call after dnd5e-roll-attack confirms a hit, or set critical=true for crits.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesItem ID of weapon/spell (from actor-get items list)
actorIdYesActor ID dealing damage
criticalNoRoll critical damage (double dice)

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already mark the tool as non-read-only and non-idempotent, and the description consistently says it performs a damage roll. However, it does not disclose side effects such as chat output, resource consumption, or whether a result is returned, so it adds only modest 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 tightly written sentences with the purpose front-loaded and the usage sequence following immediately. There is 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 three-parameter roll tool with no output schema, the description covers the required prerequisite, the triggering condition, and the critical-case behavior. An agent has enough information to call it at the correct point in the attack flow.

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 describes all three parameters with 100% coverage, establishing a baseline of 3. The description goes further by explaining how to obtain itemId via actor-get and by clarifying the critical parameter's role in a crit flow, adding 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 the exact verb and resource ('Roll damage for a weapon/spell') and ties the action to the attack-then-damage flow. This clearly distinguishes it from dnd5e-roll-attack and other roll 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?

It explicitly says to call after dnd5e-roll-attack confirms a hit, and gives the critical alternative ('set critical=true for crits'). It also provides a prerequisite ('Use actor-get FIRST to find itemId'), though it does not contrast with other item-usage tools like dnd5e-item-use.

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

dnd5e-roll-saveAInspect

Roll D&D 5e saving throw. Use when resisting spells, traps, or effects. Results appear in Foundry chat. Use actor-list first to find actorId.

ParametersJSON Schema
NameRequiredDescriptionDefault
abilityYesAbility code: str=Strength, dex=Dexterity, con=Constitution, int=Intelligence, wis=Wisdom, cha=Charisma
actorIdYesActor ID (from actor-list/actor-filter)

TDQS

A4.2/5.0
Behavior4/5

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

The annotations are all false/neutral, so they do not disclose much about side effects. The description adds useful behavioral context by stating that results appear in Foundry chat, which tells the agent the tool produces visible game-state output rather than just returning a value. This is meaningful 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?

Three short sentences, each earning its place: the first states the core action, the second gives the triggering use case, and the third gives a necessary prerequisite. No filler or redundant 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 simple two-parameter roll tool with no output schema, the description covers the action, when to use it, a key prerequisite, and where results go. It is sufficiently complete for an agent to invoke it correctly; a minor gap is that it does not describe what happens on invalid actor IDs or whether the save is automated against a DC, but that is not essential for selection and invocation.

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

Parameters3/5

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

Schema coverage is 100%, and the ability parameter already includes a full enum with expanded descriptions. The description adds workflow guidance ('Use actor-list first to find actorId') but does not enrich parameter semantics beyond what the schema already 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?

The description opens with a specific verb-resource pair, 'Roll D&D 5e saving throw,' and clarifies the domain enough to distinguish it from siblings like pf2e-roll-save, dnd5e-roll-ability, and dnd5e-roll-skill. The phrase 'resisting spells, traps, or effects' also helps identify saving throws versus ability checks or attacks.

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

Usage Guidelines4/5

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

The description explicitly states when to use the tool: 'Use when resisting spells, traps, or effects.' It also gives a practical prerequisite, 'Use actor-list first to find actorId.' However, it does not explicitly say when not to use it or name an alternative roll tool, so it stops 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.

dnd5e-roll-skillAInspect

Roll D&D 5e skill check. Use for ability checks with proficiency (Stealth, Perception, etc). Results appear in Foundry chat. Use actor-list first to find actorId.

ParametersJSON Schema
NameRequiredDescriptionDefault
skillYesSkill code: acr=Acrobatics, ani=AnimalHandling, arc=Arcana, ath=Athletics, dec=Deception, his=History, ins=Insight, itm=Intimidation, inv=Investigation, med=Medicine, nat=Nature, prc=Perception, prf=Performance, per=Persuasion, rel=Religion, slt=SleightOfHand, ste=Stealth, sur=Survival
actorIdYesActor ID (from actor-list/actor-filter)

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate it is not read-only and not destructive. The description adds that results appear in Foundry chat and that actorId must be obtained from actor-list, providing useful behavioral context beyond what annotations supply.

Agents need to know what a tool does to the world before 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, front-loading the purpose and including essential usage and output details. No redundant or vague language.

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, it covers the purpose, output location, and prerequisite. Everything an agent needs to invoke it correctly is present.

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 fully documents both parameters with descriptions and enums. The description adds a specific instruction for obtaining actorId (use actor-list), which goes beyond the schema and adds value.

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

Purpose5/5

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

States a specific verb (roll) and resource (D&D 5e skill check), clarifies it is for ability checks with proficiency, and mentions the output location (Foundry chat). This clearly distinguishes it from sibling tools like dnd5e-roll-ability and dnd5e-roll-save.

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 an explicit condition for use ('ability checks with proficiency') and a prerequisite ('Use actor-list first to find actorId'). While it doesn't name alternative tools directly, the context implies when not to use it, making it sufficiently clear.

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

effect-createAInspect

Add a custom active effect to an actor (buff, debuff, custom condition). Each change targets a data path with a mode; values are strings. EXAMPLE changes: [{"key": "system.attributes.ac.bonus", "value": "2", "mode": 2}] adds +2 AC. Paths are dnd5e; other systems differ.

ParametersJSON Schema
NameRequiredDescriptionDefault
imgNoIcon path for the effect
nameYesName of the effect (e.g., "Bless", "Shield of Faith", "Temporary Buff")
originNoUUID of the source (item, spell, etc.) that created this effect
actorIdYesThe actor ID to add the effect to
changesNoArray of attribute changes this effect applies
disabledNoIf true, effect is added but disabled
durationNoEffect duration (combat or time-based)
statusesNoArray of status IDs this effect applies (e.g., ["blinded", "deafened"])

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate this is a write operation and not idempotent, so the description does not need to restate that. It adds useful behavioral nuance by noting that 'values are strings' and that 'paths are dnd5e; other systems differ', which helps an agent anticipate system-specific failures or path-format issues. The worked example also clarifies the change-mode semantics.

Agents need to know what a tool does to the world before 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: two sentences plus a thin JSON example. It front-loads the core action, then provides a detailed illustrative example that anchors the parameter semantics. No words are wasted, and the system-specific caveat is packed into the final clause without bloat.

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 8 parameters, nested objects, and no output schema, the description gives enough context to invoke it correctly: it explains what the tool does, provides a realistic changes payload, and warns about system-specific path differences. It does not describe the return value or error behavior, but those are less critical for a create operation and the schema already documents all parameters.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value beyond the schema by giving a concrete example of the changes array structure, clarifying that mode 2 in the example means a +2 AC bonus, and warning that data paths are dnd5e-specific. This practical elaboration helps an agent construct valid parameters without merely restating 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: 'Add a custom active effect to an actor', immediately distinguishing it from sibling tools like effect-update, effect-delete, and effect-list. It further clarifies scope with 'buff, debuff, custom condition' and gives a concrete dnd5e example that leaves 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 establishes clear context: this tool is for creating custom active effects on actors, which separates it from effect-update and effect-delete. It does not explicitly name sibling tools or give when-not-to-use guidance, but the 'custom' qualifier and the create-versus-update phrasing imply the appropriate use case.

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

effect-deleteA
Destructive
Inspect

Remove an active effect from an actor. Use effect-list first to find effect IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorIdYesThe actor ID to remove the effect from
effectIdYesThe effect ID to remove. Use effect-list to find IDs.

TDQS

A4.1/5.0
Behavior3/5

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

The annotations already declare destructiveHint=true, readOnly=false, and idempotent=false, so the safety profile is carried by structured data. The description adds the 'active effect' scoping but does not disclose additional behavioral details such as permanence or behavior with inactive effects. 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?

Two short sentences with no wasted words. The core purpose is front-loaded, and the necessary prerequisite is stated immediately after. 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?

This is a simple deletion tool with two fully documented parameters, annotations covering destructive behavior, and no output schema needed. The description provides the necessary workflow prerequisite, making it 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.

Parameters3/5

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

Schema description coverage is 100%, and both parameters are clearly documented with names and descriptions. The description reinforces the effect-list prerequisite but does not add significant meaning beyond the schema, so a 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 action ('Remove an active effect') and the target resource ('an actor'), making the tool's purpose immediately clear. It also names the prerequisite workflow with effect-list, which helps distinguish it from effect-update or effect-toggle-status.

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 the agent to use effect-list first to find effect IDs, giving concrete workflow guidance. It does not explicitly contrast this with effect-update or effect-toggle-status, but the removal purpose and prerequisite are clear 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.

effect-listA
Read-onlyIdempotent
Inspect

Get all active effects on an actor, including conditions, buffs, debuffs, and custom effects. Effects modify actor stats, grant abilities, or apply conditions.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorIdYesThe actor ID to get effects from

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, covering the safety profile. The description adds the 'active effects' scoping and explains what effects do in general, but it does not disclose additional behavioral details such as error behavior (e.g., missing actor) or return structure. With annotations in place, this is a reasonable middle score.

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

Conciseness5/5

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

Two sentences with no filler. The first sentence front-loads the primary action and scope; the second adds useful conceptual context about effects. 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 read-only tool with annotations carrying the safety profile, the description is adequate. It defines the return scope ('all active effects') and gives examples of effect types. It lacks an explicit return format, but no output schema exists and the simplicity of the tool makes this a minor 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 actorId parameter is already fully documented. The description does not add extra semantic detail beyond what the schema provides, which matches the baseline expectation for high coverage.

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

Purpose5/5

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

The description states a specific verb ('Get') and resource ('all active effects on an actor'), and enumerates the kinds of effects returned (conditions, buffs, debuffs, custom). This clearly distinguishes it from sibling mutation tools like effect-create, effect-delete, effect-update, and effect-toggle-status, which all alter effects rather than list 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 clearly implies when to use this tool: any time you need to see all active effects on an actor. It does not explicitly name alternatives or add exclusions, but the scope is unambiguous and read-only intent is clear, so an agent can infer the correct context without confusion.

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

effect-toggle-statusAInspect

Toggle a D&D 5e condition/status on an actor (dnd5e worlds only; in PF2e worlds use pf2e-set-condition / pf2e-remove-condition). Adds or removes conditions like blinded, poisoned, prone.

Core D&D 5e status IDs: blinded, charmed, deafened, exhaustion, frightened, grappled, incapacitated, invisible, paralyzed, petrified, poisoned, prone, restrained, stunned, unconscious.

ParametersJSON Schema
NameRequiredDescriptionDefault
activeNoExplicitly set active state (true = add, false = remove). If not specified, toggles current state.
actorIdYesThe actor ID to toggle status on
overlayNoIf true, shows as large overlay icon on token
statusIdYesThe status/condition ID (e.g., "blinded", "poisoned", "prone")

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already signal a non-read-only, non-destructive mutation, and the description adds the key dnd5e-only restriction plus the concrete add/remove semantics and a list of core status IDs. There is no contradiction, and the extra behavioral context is useful but not exhaustive.

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

Conciseness5/5

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

The most important selection criteria (system restriction and PF2e alternatives) are front-loaded in the first sentence. The status ID list is the only substantial addition and is directly useful for invocation, 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 simple toggle tool with four well-documented parameters, the description supplies the system scoping, alternative routing, and valid status IDs needed to call it correctly. No output schema exists, but the operation's return value is not essential for selection or invocation.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents all parameters. The description adds value by enumerating the core D&D 5e statusIds and giving examples, which is especially helpful because no enum is defined in the schema.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Toggle a D&D 5e condition/status on an actor.' It also disambiguates from PF2e sibling tools by naming pf2e-set-condition and pf2e-remove-condition, so an agent can distinguish this from the large 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 Guidelines5/5

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

It gives an explicit system constraint ('dnd5e worlds only') and explicit direction for PF2e worlds, naming the correct alternative tools. This leaves no ambiguity about when this tool should be selected over its closest siblings.

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

effect-updateAInspect

Update an existing active effect on an actor. Can modify name, icon, disabled state, or changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
imgNoNew icon path
nameNoNew name for the effect
actorIdYesThe actor ID that has the effect
changesNoNew array of attribute changes (replaces existing changes)
disabledNoEnable/disable the effect
durationNoNew effect duration
effectIdYesThe effect ID to update. Use effect-list to find IDs.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate this is a write operation (readOnlyHint=false) and not destructive (destructiveHint=false). The description adds the constraint that it updates 'active' effects, which is useful context. However, it omits important behavioral details such as the fact that the 'changes' array replaces existing changes (only in the schema) and that duration is also updatable, which is not mentioned in the description.

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

Conciseness4/5

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

The description is a single, concise sentence that is front-loaded with the core action and scope ('Update an existing active effect on an actor'). It lists the key modifiable fields without redundancy, 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.

Completeness3/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, nested objects, and no output schema, the description is quite brief. It does not mention that duration can be updated, nor does it explain that the changes array replaces existing changes (a potentially surprising behavior). The agent would need to read the schema to fully understand the tool's semantics, so the description is only partially complete for this complexity level.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all parameters. The description provides a high-level summary of what can be modified but omits duration and does not add per-parameter meaning beyond the schema. It also does not explain the replacement semantics for 'changes', which is described in the schema but not reinforced.

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

Purpose5/5

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

The description clearly states the tool updates an existing active effect on an actor and lists the modifiable fields (name, icon, disabled state, changes). This distinguishes it from siblings like effect-create, effect-delete, effect-list, and effect-toggle-status, which have different purposes.

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

Usage Guidelines3/5

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

The description implies the tool is for updating existing effects but does not explicitly contrast with alternatives or state when not to use it. It does not mention effect-toggle-status for toggling disabled state or effect-create for new effects, leaving the agent to infer the appropriate context from the schema and tool names.

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

folder-createAInspect

Create a folder of the given document type. Foundry keeps a separate folder tree per type (Actor folders only hold Actors, etc.). parentId nests it inside another folder; omit for root level.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFolder display name
sortNoSort order within parent. Foundry assigns one if omitted.
typeYesFoundry document type the folder organises
colorNoHex color string (e.g. "#abcdef").
parentIdNoParent folder ID. Omit for root.
descriptionNoFree-form description

TDQS

A4.4/5.0
Behavior4/5

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

Beyond the mutation implied by readOnlyHint=false, the description adds the key behavioral invariant that Foundry maintains separate folder trees per document type, and it defines parentId's nesting/root semantics. It doesn't describe return value or failure modes, but annotations already signal non-read-only behavior, lowering the burden.

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

Conciseness5/5

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

Two sentences: the first states the core action and object; the second explains the two contextual behaviors that matter for correct invocation. 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?

Given six parameters fully described in the schema and no nested objects, the description supplies the missing system-level context (type separation, nesting, root omission) needed to call the tool confidently. The only notable omission is the response/return behavior, which is not covered because no output schema exists, but the call itself is fully specified.

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 all six parameters. The description adds non-redundant meaning for type (separate tree per type) and parentId (nests inside another folder; omit for root), helping the agent map those fields 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 states a precise action – 'Create a folder of the given document type' – and differentiates from sibling folder-delete/get/list/update by naming the creation operation. The per-type folder-tree note further clarifies what a folder creation means in Foundry.

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 makes the invocation context clear: use when creating a new folder of a known document type, including the root-vs-nested choice via parentId. It does not explicitly name alternatives like folder-update, but no competing create tool exists among siblings, so the lack of exclusion is not a real gap.

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

folder-deleteA
Destructive
Inspect

Permanently delete a folder. Cascade behaviour for sub-folders and contained documents is controlled by two flags. Both default false — sub-folders and documents are orphaned to the parent (or root) when this folder is deleted.

deleteSubfolders: true recursively deletes child folders. deleteContents: true also deletes the documents inside the folder. Both true with a populated folder tree wipes a lot of data — confirm with the user first.

ParametersJSON Schema
NameRequiredDescriptionDefault
folderIdYesFolder ID to delete
deleteContentsNoAlso delete documents inside the folder. Default false (orphan to root).
deleteSubfoldersNoRecursively delete child folders. Default false (orphan to parent).

TDQS

A4.7/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 disclosing irreversibility ('Permanently delete'), cascade defaults, orphan-to-parent/root behavior, and the dangerous combination of both flags. The destructiveHint=true annotation is consistent and the description adds meaningful behavioral detail about what gets destroyed.

Agents need to know what a tool does to the world before 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 core action first, then explains flags and defaults, and ends with a high-visibility warning. Every sentence earns its place, and the bold warning is appropriately emphasized without bloat.

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, this description fully covers what an agent needs to know: audacity of the operation, default behavior for sub-folders and documents, how to opt into recursive deletion, and a safety warning. FolderId is already documented in the schema, so no critical context 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 value beyond the schema by explaining how the two boolean flags interact as a pair, including the combined consequence of both being true. It also reinforces default behavior and the warning about data loss, which the schema descriptions only hint at individually.

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

Purpose5/5

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

The description opens with a specific action and resource: 'Permanently delete a folder.' It clearly differentiates from sibling folder tools (folder-create, folder-get, folder-list, folder-update) by focusing on deletion and cascade behavior. The two flags and their roles are explicit.

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 conveys when this tool applies: when a folder needs permanent deletion. It does not explicitly compare against alternatives, but it does give important usage context by explaining default orphan behavior and cautioning that setting both flags can wipe a lot of data. This is clear context though not a formal when/when-not statement.

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

folder-getA
Read-onlyIdempotent
Inspect

Get a single folder. includeSubfolders=true returns the full subfolder tree; includeContents=true lists the ids of documents directly inside this folder (not inside subfolders: fetch each subfolder for its own contents). Both default false.

ParametersJSON Schema
NameRequiredDescriptionDefault
folderIdYesFolder ID (from folder-list).
includeContentsNoList document ids directly inside THIS folder (not nested).
includeSubfoldersNoRecursively include the subfolder tree.

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, it discloses that both flags default to false and, crucially, that includeContents is not recursive despite the subfolder option. The parenthetical 'fetch each subfolder for its own contents' exposes a non-obvious behavior an agent must know before invoking.

Agents need to know what a tool does to the world before 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 the essential operation, flag semantics, defaults, and the nested-content caveat with no filler. The headline verb/resource appears first, and each 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 single-folder fetch, this covers the required folderId, both optional behaviors, defaults, and the non-nested nuance. It does not describe the shape of the base folder object or not-found behavior, but with no output schema those are minor gaps for this small 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 schema already documents all three parameters, so the baseline is 3. The description adds the default-false behavior for both booleans and explains how the two flags interact, which goes beyond the field-level schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 'Get a single folder', which names a specific verb and resource and distinguishes it from folder-list and folder-create. It also clarifies the scope of the two optional include flags, so an agent immediately knows this returns one folder, optionally with its subfolder tree or direct document IDs.

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 conditional guidance: includeSubfolders=true returns the full tree, includeContents=true only direct document IDs, and it explicitly tells the agent to fetch each subfolder when nested contents are needed. It stops short of naming sibling alternatives such as folder-list for retrieving multiple folders, so it is not a full 5.

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

folder-listA
Read-onlyIdempotent
Inspect

List folders in the world (id, name, type, parent), optionally one document type. No tree or contents: for subfolders and contents use folder-get.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoDocument type filter. Folders are typed: Actor folders hold Actors, Item folders hold Items, etc. Omit to list all 9 types interleaved.

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, covering the safety profile. The description adds valuable behavioral context by naming the output fields, stating the optional document type filter, and explicitly excluding tree structure and contents. This goes beyond what the annotations provide, though it does not discuss pagination or ordering.

Agents need to know what a tool does to the world before 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 tightly written sentences, with the core purpose and output shape front-loaded. The second sentence efficiently states exclusions and routes to the relevant sibling tool. Every phrase earns its place without 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 endpoint with one optional enum parameter and no output schema, the description gives enough to invoke it correctly: what it lists, what fields are returned, the optional filter, and what it intentionally omits. The annotations cover safety, and the schema covers parameter semantics, leaving no critical gap.

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

Parameters3/5

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

The sole parameter is fully documented in the schema with an enum and a detailed description of what each type represents and what omitting it does. The tool description merely paraphrases "optionally one document type" without adding new semantic information. 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 uses the specific verb "List" with resource "folders in the world" and states the returned fields (id, name, type, parent). It explicitly distinguishes itself from folder-get by noting it does not return a tree or contents. This is unambiguous and differentiates from sibling folder 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 clearly states when to use this tool versus folder-get: for a flat folder listing, not subfolders or contents. It also explains the optional type filter, directing agents toward the right invocation. No competing list tool is named, but the primary routing decision is fully covered.

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

folder-updateAInspect

Update a folder — name, parent, color, description, or sort. Parent is TRI-STATE: omit both parentId and clearParent to leave it alone; parentId = string sets a new parent; parentId = null or clearParent: true moves the folder to root. A string parentId together with clearParent: true is rejected.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name. Omit to leave unchanged.
sortNoNew sort position. Omit to leave unchanged.
colorNoNew hex color string. Omit to leave unchanged.
folderIdYesFolder ID to update
parentIdNoTri-state: omit = leave alone, string = set new parent ID, null = move to root.
clearParentNoAlternative move-to-root signal for clients that cannot send literal JSON null. When true, overrides any parentId.
descriptionNoNew description. Omit to leave unchanged.

TDQS

A4.4/5.0
Behavior4/5

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

The description goes beyond the annotations by detailing a nuanced tri-state behavior for parentId, explaining what happens when parentId is omitted, set to a string, or null. It also discloses that a string parentId combined with clearParent: true is rejected, which is exactly the kind of behavioral edge case 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?

The description is compact and front-loaded: the first clause states the tool's purposeaving, and the remainder focuses entirely on the one genuinely tricky parameter interaction. Every sentence earns its place, with no padding 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?

All seven parameters are already documented in the schema, and the description resolves the only ambiguous behavior around parent reassignment. It does not mention return values or error handling, but given the absence of an output schema and the schema's complete parameter coverage, this is sufficient 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.

Parameters4/5

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

Even though schema coverage is 100%, the description adds meaningful parameter semantics by clarifying the interaction between parentId and clearParent特效 — specifically that omitting both leaves the parent unchanged and that string+true is invalid. This is extra value beyond the schema's property-level 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 'Update a folder' and immediately enumerates the mutable fields: name, parent, color, description, or sort. This clearly identifies the verb and resource, and the sibling list contains folder-create/delete/get/list, so there is no ambiguity about which operation this tool performs.

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?

Though it does not explicitly name alternatives like folder-create or folder-delete, the usage context is unambiguous: this tool modifies an existing folder. The tri-state explanation also provides clear guidance on how to leave the parent unchanged versus moving to root.

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

game-pauseA
Idempotent
Inspect

Pause the game for all connected clients (freezes the session pause indicator). Use game-resume to unpause.

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 idempotentHint=true and destructiveHint=false. The description adds context about the scope (all connected clients) and the specific effect on the session pause indicator, which goes beyond the annotations. No contradictions.

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

Conciseness5/5

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

Two concise sentences with zero fluff. The primary action and scope are front-loaded, followed by the alternative. Every word earns its place.

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

Completeness5/5

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

For a zero-parameter tool with annotations covering safety and idempotency, the description fully equips an agent to call it correctly. It states what happens, to whom, and how to reverse it. No output schema is present, so return-value details are unnecessary.

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 baseline is 4. The description adds no parameter-specific information because there are none; it correctly focuses on the action and 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?

States the exact verb 'pause' and resource 'game', specifies scope 'all connected clients', and clarifies the effect 'freezes the session pause indicator'. Clearly distinguishes from the sibling 'game-resume' which reverses the action.

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 names the complementary tool 'game-resume' and the condition for using it ('to unpause'), providing clear guidance on when to use this tool vs the alternative.

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

game-pause-getA
Read-onlyIdempotent
Inspect

Check whether the game is currently paused (game.paused). Returns paused: true/false.

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 and idempotentHint, so the safety profile is covered. The description adds value by naming the underlying property (game.paused) and specifying the return format (paused: true/false), giving the agent more behavioral context than the annotation 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?

Two short sentences deliver all essential information with no fluff. The action, target field, and return value are each present and front-loaded.

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

Completeness5/5

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

For a zero-parameter, read-only status tool, this description is fully complete. It covers what the tool does, the relevant state field, and the exact returned value, while the annotations cover side-effect safety. There is nothing an agent needs to know to call it correctly that 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 accepts zero parameters, so there are no parameter semantics to clarify. The baseline for a zero-parameter tool is 4, and the description accurately reflects that no arguments are needed by simply being about a state check.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 checks the current pause state via a specific verb ('Check') and resource ('game paused'), even referencing the underlying field game.paused. It is immediately distinguishable from the sibling game-pause and game-resume tools because it queries rather than mutates.

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 'Check whether the game is currently paused' makes the read-only usage context clear and implies it should be used to inspect state rather than change it. However, it does not explicitly name alternatives or state when not to use it, such as 'use game-pause to pause the game.'

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

game-resumeA
Idempotent
Inspect

Resume (unpause) the game for all connected clients.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already supply idempotentHint=true and destructiveHint=false, so the core safety profile is covered. The description adds the meaningful scope 'for all connected clients,' but it does not describe what happens if the game is already running or any client-visible effects beyond resuming.

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

Conciseness5/5

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

A single sentence conveys the action, the target resource, and the scope without wasted words. The parenthetical 'unpause' usefully reinforces the verb without adding bulk.

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, side-effect-reaching command, the description is complete: it states exactly what happens and who is affected. The no-output-schema case does not create a gap because the return value is unlikely to be central for this simple control action.

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

Parameters4/5

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

The input schema has zero parameters, so there are no parameter semantics for the description to clarify. Baseline 4 is appropriate because no parameter documentation burden exists.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Resume (unpause)') and names the exact resource ('the game') affected. It also clarifies scope ('for all connected clients'), making it immediately distinguishable from the sibling game-pause and game-pause-get tools.

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

Usage Guidelines2/5

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

The description explains what the tool does but gives no explicit guidance on when to invoke it or when to choose an alternative. It does not mention preconditions such as the game being paused, nor does it point to game-pause or game-pause-get as related tools.

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

handout-template-getA
Read-onlyIdempotent
Inspect

Get the full HTML of a handout template. Use this as a STYLE REFERENCE — do not copy it verbatim. Generate a unique variation with the required content, using inline style="" attributes (Foundry VTT strips tags). Save the result via journal-page-create with type "text".

ParametersJSON Schema
NameRequiredDescriptionDefault
templateIdYesTemplate ID from handout-template-list

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds behavioral context beyond annotations: it states the output is HTML, and it warns about Foundry VTT stripping <style> tags, implying the returned HTML may include style tags that must be converted to inline attributes. This practical context about output format and constraints adds value 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?

The description is compact and front-loaded: the core purpose is in the first sentence, followed immediately by usage constraints and downstream actions. Every sentence carries essential information, and there is no redundancy with annotations or schema. It's 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 single-parameter retrieval tool with robust annotations (read-only, idempotent), the description fully equips the agent: it explains what the output is (full HTML), how to use it (as style reference, not copy), and what to do next (generate variation, save via journal-page-create with 'text' type). There's no output schema, but the description covers the return value sufficiently for the agent's task. 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 input schema has one parameter, templateId, with description 'Template ID from handout-template-list' which already fully explains its meaning and source. Since schema_description_coverage is 100%, the description adds no additional parameter-specific information. Baseline 3 is appropriate; the tool description doesn't need to repeat schema content.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Get the full HTML of a handout template.' It uses a specific verb ('get'), names the resource ('handout template'), and adds that it returns full HTML. This distinguishes it from the sibling handout-template-list, which presumably returns metadata or IDs. The unique purpose is unambiguous.

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

Usage Guidelines5/5

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

Explicit guidance is given: 'Use this as a STYLE REFERENCE — do not copy it verbatim.' It then instructs the agent to generate a unique variation and save via journal-page-create, including implementation details like inline styles because Foundry VTT strips <style> tags. This tells the agent exactly when and how to use the tool, and what to do with the result. No other tool has similar guidance in the sibling set.

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

handout-template-listA
Read-onlyIdempotent
Inspect

List available handout templates (wanted posters, letters, scrolls, etc.). Returns template IDs and descriptions. Use handout-template-get to read the full HTML. Then generate a unique variation with your own content and save via journal-page-create.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoFilter by category: wanted-poster, letter, scroll, decree, etc.

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, destructiveHint=false, and idempotentHint=true. The description adds value by specifying that it 'Returns template IDs and descriptions' and implies it does not return full HTML (since it directs to handout-template-get for that). This clarifies the scope of the read operation beyond the annotation's safety 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?

The description is three concise sentences with no fluff. It front-loads the primary purpose, states the output, and then gives workflow context. Every sentence earns its place, making it easy to scan and understand.

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 listing tool with one optional parameter and no output schema, the description is complete. It covers what the tool returns, how it differs from the sibling, and the recommended workflow. Annotations already cover safety, so 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?

The schema description for the 'category' parameter is already informative ('Filter by category: wanted-poster, letter, scroll, decree, etc.'), covering 100% of the schema. The tool description does not add additional insight about the parameter, 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.

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 'handout templates', with concrete examples ('wanted posters, letters, scrolls, etc.'). It explicitly differentiates from the sibling 'handout-template-get' by stating it returns only IDs and descriptions, not the full HTML, making the tool's scope 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 provides explicit workflow guidance: 'Use handout-template-get to read the full HTML. Then generate a unique variation with your own content and save via journal-page-create.' This tells the agent exactly when to use this tool (to browse templates) and what to do next, effectively routing to the correct siblings without ambiguity.

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

item-createAInspect

Create a new item directly in an actor's inventory (dnd5e data model). Use for custom items, loot, or simple gear; for official SRD content use item-create-from-compendium. For an item that lives in the world Items Directory rather than on an actor use world-item-create.

ParametersJSON Schema
NameRequiredDescriptionDefault
imgNoItem icon path (optional)
nameYesItem name
typeYesdnd5e item type ("backpack" is accepted as the legacy name of "container")
systemNoD&D 5e system data: quantity, weight, price, rarity, equipped, range, damage, uses, etc.
actorIdYesActor ID to add item to (from actor-list/actor-filter)

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already establish that this is a non-read-only mutation with destructiveHint=false and idempotentHint=false. The description adds useful context that the item lands in an actor's inventory and follows the dnd5e data model, but it does not disclose return values or additional side effects. With annotations covering the risk 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.

Conciseness5/5

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

The description is three sentences with no filler, front-loading the core action first. Each subsequent clause adds routing or scope information, 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?

Together with the schema, the description covers what the tool does, where the item is created, and which sibling tools to use instead. The only meaningful gap is that no output schema exists and the description does not state what the call returns, which is minor for a create 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%, with each parameter described, including the type enum and nested system fields. The description itself adds no parameter-level detail beyond what the schema already provides, so it stays at the baseline for a fully covered 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 and target: 'Create a new item directly in an actor's inventory (dnd5e data model).' It also names the two most similar sibling tools, item-create-from-compendium and world-item-create, so the agent can distinguish this tool from them without opening their schemas.

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

Usage Guidelines5/5

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

The description gives explicit guidance: use this for custom items, loot, or simple gear; use item-create-from-compendium for official SRD content; use world-item-create for items in the world Items Directory. This clearly states when to use this tool and when to choose an alternative.

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

item-create-from-compendiumAInspect

Add an item (weapon, spell, feat, gear) from a compendium pack to an actor's inventory with its full data. Pass either uuid — the "Compendium...Item." value returned by dnd5e-compendium-filter-items, pf2e-compendium-filter-items and compendium-search — or packId + itemId from compendium-browse.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoCustom name (uses compendium name if omitted)
uuidNoCompendium UUID "Compendium.<scope>.<pack>.Item.<id>". Replaces packId + itemId.
itemIdNoItem ID within the pack (from compendium-browse). Required unless uuid is given.
packIdNoCompendium pack ID (e.g., "dnd5e.items", "dnd5e.spells"). Required unless uuid is given.
actorIdYesActor ID to add item to (from actor-list/actor-filter)
quantityNoQuantity to add (default: 1)

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already indicate this is a mutating, non-idempotent operation, and the description matches that by saying it adds an item to inventory. It adds mild context by noting the item is added 'with its full data,' but does not reveal additional behaviors such as duplicate handling, permissions, or side effects. 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?

Two sentences with no filler. The primary purpose is front-loaded, and the identifier-routing guidance is compactly placed in the second sentence. Every part earns its place.

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

Completeness5/5

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

With 100% schema description coverage, a required actorId, and clear routing between uuid and packId+itemId, nothing essential is missing for correct invocation. No output schema exists, but return-value details are not necessary for an add operation of this simplicity.

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 connecting uuid to specific sibling tools (dnd5e-compendium-filter-items, pf2e-compendium-filter-items, compendium-search) and packId+itemId to compendium-browse, giving an agent concrete guidance on where to obtain valid parameter 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 states a specific action and resource: adding an item (weapon, spell, feat, gear) from a compendium pack to an actor's inventory. It clearly distinguishes this from generic item-create by emphasizing the compendium source and from item-filtering tools by being an inventory mutation.

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 how to use the tool, explaining that either a uuid or packId+itemId must be provided depending on which sibling tool returned the data. It does not explicitly state when not to use it 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.

item-deleteA
Destructive
Inspect

Remove an item from actor's inventory permanently. Use item-list FIRST to find itemId. Cannot be undone! An item that is already gone counts as deleted (success), so retries are safe.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesItem ID to delete (from item-list)
actorIdYesActor ID that owns the item

TDQS

A3.6/5.0
Behavior1/5

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

The description contradicts the annotations: it claims 'retries are safe' and that an already-deleted item counts as success, which implies idempotent behavior, while idempotentHint is false. This is a clear contradiction. The description does add transparency about permanence, but the contradiction is a severe issue.

Agents need to know what a tool does to the world before 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 core action is front-loaded, followed by a required prerequisite and critical warnings (permanence, retry safety). 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 2-parameter delete with no output schema, the description covers the essentials: how to find the ID, the permanence, and retry behavior. It doesn't discuss errors or side effects, but given the simplicity and annotations, it's largely complete. The idempotency contradiction is noted but doesn't directly detract from this dimension.

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

Parameters3/5

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

Schema coverage is 100% with both parameters already described in the schema. The description reiterates 'from item-list' but adds no new meaning beyond that, so it's at the baseline for high-coverage 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 clearly states the verb ('Remove') and resource ('item from actor's inventory') with a permanent consequence, distinguishing it from update/create tools and other delete tools. It is specific and unambiguous.

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

Usage Guidelines4/5

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

Provides explicit sequencing ('Use item-list FIRST to find itemId') and retry guidance ('retries are safe'). It doesn't explicitly state when not to use, but the purpose is clear enough that alternatives aren't needed; the guidance is actionable and context-rich.

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

item-listA
Read-onlyIdempotent
Inspect

List an ACTOR's inventory (embedded items: weapons, gear, spells, feats, class features) with descriptions, damage, and range. Not the world Items Directory — use world-item-filter for that. Filter by type, equipped status, or hasActivities (usable abilities). Item IDs from here feed dnd5e-item-use, dnd5e-item-activate, dnd5e-roll-attack.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by item type (e.g., "weapon", "equipment", "consumable", "spell", "feat")
actorIdYesThe actor ID to get items from
equippedNoFilter by equipped status (true = only equipped, false = only unequipped)
hasActivitiesNoFilter to items that have activities (usable abilities like attacks, spells, item uses)

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, so the safety profile is established. The description adds value beyond annotations by specifying exactly what is returned (descriptions, damage, range) and clarifying the scope (embedded items vs. world items). It does not contradict any annotation, and the added context about filters and downstream tooling 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?

The description is three sentences with no filler. It opens with the core action and scope, immediately distinguishes from the sibling, then lists filters and downstream uses. Every sentence earns its place, and the structure front-loads the most decision-relevant information for an agent.

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 a single required parameter and clear annotations, the description covers scope, alternatives, filters, and downstream usage. It does not describe return format or pagination, but given the simplicity and the annotations, 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.

Parameters3/5

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

Schema coverage is 100% — every parameter has a description in the input schema. The description reinforces the filter semantics by naming 'type, equipped status, or hasActivities', but does not add new syntax or format details beyond what the schema already provides. The baseline of 3 is appropriate because the schema does the heavy lifting and the description adds only marginal redundancy.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 a specific resource ('an ACTOR's inventory'), enumerates the item categories covered, and explicitly differentiates this tool from the world Items Directory by naming the sibling 'world-item-filter'. This makes the purpose unambiguous and immediately distinguishable from 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 Guidelines5/5

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

The description gives explicit when-not-to-use guidance ('Not the world Items Directory — use world-item-filter for that') and lists the available filters (type, equipped status, hasActivities) that select the use case. It also advertises downstream consumption of item IDs by dnd5e-item-use, dnd5e-item-activate, and dnd5e-roll-attack, providing concrete context for when this tool is a prerequisite.

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

item-updateAInspect

Update an item in actor's inventory. Use item-list FIRST to find itemId. system is DEEP-MERGED into the existing data: pass only the fields you change, e.g. {"quantity": 3} or {"uses": {"value": 0}}; arrays are replaced whole.

ParametersJSON Schema
NameRequiredDescriptionDefault
imgNoNew icon path
nameNoNew item name
itemIdYesItem ID to update (from item-list)
systemNoUpdated system data (quantity, equipped, range, damage, uses, etc.)
actorIdYesActor ID that owns the item

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 disclosing the deep-merge behavior of the system object and warns that arrays are replaced whole. This is a critical non-obvious behavior that could otherwise lead to accidental data loss. The description does not contradict any 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 compact and front-loaded: it states the action, then the prerequisite, then the crucial deep-merge caveat with examples. Every sentence earns its place, and the example payloads communicate a lot in few 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 partial-update tool with a nested schema and no output schema, the description covers the key workflow precondition and the most important behavioral trap. The rest of the details are well covered by the schema, so the agent has enough information to 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. The description adds meaningful value by explaining how to use the system parameter: pass only changed fields, with concrete examples like {"quantity": 3} and {"uses": {"value": 0}}. It also reinforces that itemId comes from item-list, adding practical semantics beyond the schema labels.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'Update an item in actor's inventory.' It clearly separates this from item-create, item-delete, item-list, and world-item-update by scoping the update to an actor's inventory. The wording leaves no doubt 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 explicitly instructs the agent to call item-list FIRST to obtain the itemId, which is a concrete prerequisite and workflow guideline. It does not explicitly discuss when not to use this tool or compare it with item-update vs world-item-update, but the actor inventory scoping provides enough contextual guidance.

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

journal-createAInspect

Create a new journal entry, optionally with a first page. content is HTML (see journal-page-create for the HTML rules). folder takes a folder ID; a unique folder NAME is resolved to its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the journal entry
folderNoFolder ID (from folder-list with type "JournalEntry"); a unique folder name is also accepted. Omit for root.
contentNoHTML content of the first page (optional)
pageTypeNoType of the first page (default: text)

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already mark this as non-read-only and non-destructive, and the description adds useful behavioral details: content must be HTML and a unique folder name is resolved to its ID. It does not go deeper into creation outcomes or error behavior, but the baseline disclosure is adequate.

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

Conciseness5/5

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

Two front-loaded sentences with no filler: the core action, the optional page behavior, and the two cross-references all earn their 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 operation with fully documented parameters, the description plus schema is sufficient to invoke the tool. The only notable gap is not specifying what the successful response returns (e.g., the new journal's ID), and no output schema exists to cover that.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains name, folder, content, and pageType. The description's folder-name resolution and HTML cross-reference add only modest extra value beyond the structured 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 first sentence states a specific action and object: 'Create a new journal entry, optionally with a first page.' That is clear and immediately separates creation from the many journal mutation siblings, though it does not explicitly contrast with journal-update or journal-page-create.

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?

Creation context is implied by the verb and resource, and the description usefully points to journal-page-create for HTML rules. However, it never states when to prefer this tool over journal-update or journal-page-create, and it does not mention how first pages are added after creation.

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

journal-deleteA
Destructive
Inspect

Delete a journal entry and all its pages. This action cannot be undone!

ParametersJSON Schema
NameRequiredDescriptionDefault
journalIdYesThe journal ID to delete

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, but the description adds valuable context beyond that by disclosing the cascade behavior ('and all its pages') and irreversibility ('This action cannot be undone!'). This gives the agent a clear picture of the operation's 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?

Two short sentences with the core action front-loaded and the important warning immediately after. Every word contributes value, and there is no redundancy with the schema or title.

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

Completeness5/5

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

For a single-required-parameter destructive action with annotations already covering the safety profile, the description provides all needed behavioral context: what is deleted, the cascading scope, and irreversibility. No output schema is necessary for a delete operation, 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%, and the journalId parameter is already described as 'The journal ID to delete.' The description adds no additional meaning or constraints for the parameter, so the high-coverage 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 a journal entry and all its pages.' This clearly distinguishes it from journal-page-delete and other journal-related siblings by specifying the full scope of deletion.

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 that this tool is for deleting an entire journal entry, not just individual pages, but it never explicitly states when to use it over alternatives like journal-page-delete or journal-update. The destructive warning adds caution but no direct usage conditions.

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

journal-folder-listA
Read-onlyIdempotent
Inspect

List journal folders by name with entry and page counts — a quick overview of journal organization. Then use journal-list with a folder name, or omit folder to list all journals. Folder IDs (for journal-create / journal-update / folder-get) come from folder-list with type "JournalEntry".

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, covering safety. The description adds behavioral value by specifying the output includes entry and page counts, which is not evident from the schema or annotations. No contradictions.

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

Conciseness5/5

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

Two sentences with no filler. The first sentence states the core purpose and output; the second provides forward navigation and clarification on where to obtain folder IDs. Perfectly 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 parameterless, read-only listing tool with annotations covering safety, the description fully explains what it returns and how to proceed. It also clarifies the source of folder IDs, removing any ambiguity with folder-list. 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?

The tool has zero parameters and the schema is fully described (empty). The baseline for 0 params is 4; the description adds no parameter details because none exist, 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 states a specific verb and resource ('List journal folders by name with entry and page counts') and distinguishes it from the broader folder-list by specifying it's a journal-specific overview. This clearly differentiates it from sibling tools like journal-list and folder-list.

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 directs the agent to use journal-list next (with or without a folder name) and clarifies that folder IDs come from folder-list with type 'JournalEntry' — making the alternative tool and the selection condition explicit.

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

journal-getA
Read-onlyIdempotent
Inspect

Get a journal entry by ID with all its pages as plain text (default) or as raw JSON with HTML and page metadata (formatAsText=false). Use journal-list or journal-search to find journal IDs; for one page of a long journal use journal-page-get.

ParametersJSON Schema
NameRequiredDescriptionDefault
journalIdYesThe journal ID
formatAsTextNoDefault true: pages as plain text (HTML stripped). false = raw JSON with HTML content and page metadata.

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 and destructiveHint=false, so the safety profile is known. The description adds behavior beyond annotations by specifying the two output modes (plain text vs raw JSON with HTML and metadata) and the default. This gives the agent a clear expectation of what the tool returns without needing to guess.

Agents need to know what a tool does to the world before 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 action and output modes are front-loaded, followed by routing guidance. 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?

Despite no output schema, the description covers the essential return format (plain text or raw JSON) and the parameter behavior. It also provides pointers to sibling tools for ID discovery and page-level retrieval, making it self-sufficient for an agent to call 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 covers both parameters (100% coverage), but the description adds value by explaining the formatAsText parameter's meaning and default ('Default true: pages as plain text (HTML stripped). false = raw JSON with HTML content and page metadata.'). This enriches the schema description, so it's more than just a 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 (get), resource (journal entry), and scope (all its pages) and differentiates between two output formats. It names sibling tools (journal-list, journal-search, journal-page-get) that serve different purposes, so an agent can clearly distinguish it.

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

Usage Guidelines5/5

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

Explicitly instructs when to use this tool vs alternatives: 'Use journal-list or journal-search to find journal IDs; for one page of a long journal use journal-page-get.' This provides clear routing and exclusions.

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

journal-listA
Read-onlyIdempotent
Inspect

List journal entries with IDs, grouped by folder. Omit folder to list ALL journals. Returns IDs needed for journal-get. Use journal-search if you know the name.

ParametersJSON Schema
NameRequiredDescriptionDefault
folderNoFolder name or folder ID to filter by (omit for all journals)

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 known. The description adds behavioral context: grouping by folder and returning IDs needed for journal-get, which is useful beyond annotations. No contradictions.

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

Conciseness5/5

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

Three sentences, each earns its place: purpose, scope variation, and alternative routing. Front-loaded and free of 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 single-parameter list tool, it covers the key aspects: what it lists, how to broaden scope, what it returns, and when to use another tool. It lacks only minor details like output structure or pagination, but these are not critical given the simple nature and annotations.

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 documents the folder parameter with the same 'omit for all' nuance. The description reinforces but does not add new meaning beyond the schema, so it stays at the baseline for high coverage.

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

Purpose5/5

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

The description uses a specific verb ('List') and resource ('journal entries'), states the grouping behavior, and explicitly differentiates from journal-search. It clearly answers what the tool does and how it differs from its 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?

Provides explicit usage guidance: 'Omit folder to list ALL journals' and directs users to journal-search when the name is known. This clearly indicates when to use this tool versus the alternative.

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

journal-page-createAInspect

Add a page to an existing journal entry. Text pages take HTML content: style with inline style="" attributes (Foundry strips and ), link documents with @UUID[Actor.]{Label}. handout-template-list offers ready-made layouts.

ParametersJSON Schema
NameRequiredDescriptionDefault
srcNoSource file path or URL for image/video/pdf pages
nameYesName of the new page
typeNoType of page (default: text)
contentNoHTML content for text pages
journalIdYesThe journal ID to add the page to

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=false and destructiveHint=false, so the description doesn't need to cover basic mutation safety. It adds a behavioral detail about Foundry stripping <style> and <script> tags, which is valuable. It doesn't discuss permissions or reversibility, but for a creation tool this is acceptable. 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, front-loaded sentence stating the primary purpose, followed by one sentence with practical guidance. Every word contributes—no filler or redundancy. It is appropriately concise.

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

Completeness4/5

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

With 5 parameters, 2 required, and no output schema, the description covers the main usage scenario (adding text pages with HTML) and points to a template resource. It doesn't mention the return value, but for a creation tool that's minor. It also implicitly differentiates from update/delete siblings. 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.

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 significant value for the 'content' parameter by explaining how to structure HTML, use inline styles, and link documents. It also mentions handout-template-list as a source of ready-made layouts, which is beyond the schema's simple 'HTML content for text pages'. This elevates the score to 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 ('Add'), a resource ('a page to an existing journal entry'), and differentiates from siblings like journal-create (creates a journal) and journal-page-update (updates a page). It is clear and unambiguous.

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

Usage Guidelines4/5

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

The description provides usage context for text pages: how to use inline styles, link documents via @UUID, and mentions handout-template-list as an alternative for ready-made layouts. It doesn't explicitly state when not to use this tool, but the context for the main text-page case is clear and hints at alternatives.

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

journal-page-deleteA
Destructive
Inspect

Delete a specific page from a journal. This action cannot be undone!

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesThe page ID to delete
journalIdYesThe journal ID containing the page

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already mark this as destructive, but the description adds the important context that the action cannot be undone. This is genuinely useful behavioral information beyond the structured hints, though it does not mention other effects such as permission requirements or cascading deletions.

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

Conciseness5/5

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

Two short sentences with no wasted words. The core action is front-loaded, and the irreversibility warning is a valuable addition that fits naturally.

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

Completeness5/5

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

For a simple delete operation with two well-documented required parameters and no output schema, the description is sufficient. An agent can correctly identify the resource and understand the destructive consequence without additional explanation.

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 pageId and journalId already described clearly. The tool description adds no additional parameter-level meaning 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?

The description states a specific verb ('Delete') and resource ('a specific page from a journal'), making it immediately clear what the tool does. It also distinguishes itself from the sibling journal-delete by emphasizing 'specific page.'

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 purpose implies the usage scenario: call this when deleting a journal page rather than a journal itself. However, it does not explicitly state when not to use it, nor does it name alternatives such as journal-page-update or journal-delete.

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

journal-page-getA
Read-onlyIdempotent
Inspect

Get a specific page from a journal. Useful when you only need one page from a multi-page journal. Returns plain text content by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesThe page ID (from journal pages list)
journalIdYesThe journal ID
formatAsTextNoIf true (default), returns plain text. If false, returns raw HTML/JSON.

TDQS

A4.2/5.0
Behavior4/5

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

With annotations already declaring readOnlyHint, idempotentHint, and destructiveHint false, the description adds a new behavioral detail: 'Returns plain text content by default.' This informs the agent of the output format without relying on schema inspection. It does not discuss edge cases like invalid IDs, but that is minor given 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?

Two sentences with no wasted words. The core action and key usage context are front-loaded, followed by the default return behavior. 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 tool with full schema coverage and safety annotations, the description covers the purpose, usage context, and default return format. It does not describe error behavior or the exact structure of the returned output, but given no output schema and the simplicity of the operation, this is 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%, with each parameter documented (journalId, pageId, formatAsText). The description mentions plain text default, which overlaps with the schema's formatAsText explanation, adding no new parameter-level meaning. Thus 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 states a specific action ('Get a specific page from a journal') and identifies the resource (page within a journal). It also distinguishes itself from retrieving the whole journal by noting the multi-page scenario, making it clear how this tool differs from sibling tools like journal-get.

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 'Useful when you only need one page from a multi-page journal' gives a clear context for use. It implies the alternative of retrieving the full journal, though it does not explicitly name that sibling tool 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.

journal-page-updateAInspect

Update a journal page. content REPLACES the whole page text (no append): read it with journal-page-get, edit, and send the full HTML back. Same HTML rules as journal-page-create.

ParametersJSON Schema
NameRequiredDescriptionDefault
srcNoNew source file path or URL for image/video/pdf pages
nameNoNew name for the page
pageIdYesThe page ID to update
contentNoNew HTML content for text pages
journalIdYesThe journal ID containing the page

TDQS

A4.3/5.0
Behavior4/5

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

The description discloses the critical replace behavior (content replaces the whole page text) and the need to read first, which is important context beyond the annotations (which do not indicate destructive behavior). It also references HTML rules from create. However, it does not clarify that other fields (src, name) are optional and only updated if provided, which could lead to misinterpretation of partial updates.

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

Conciseness5/5

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

The description is exceptionally concise and well-structured. Two sentences front-load the core behavior (replace semantics) and reference sibling tools for additional context without redundancy. Every sentence earns its place, making it easy for an agent to parse and act on.

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 is incomplete for a mutation tool with no output schema. It doesn't mention the return value, doesn't clarify that only provided fields are updated, and doesn't address non-text pages (e.g., image/video) where content may not be used. This could cause an agent to unnecessarily read a page or send full content when only renaming is desired.

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 covers all 5 parameters with descriptions (100% coverage), so the baseline is 3. The description adds meaningful value by explaining the content parameter's role: it replaces the entire page text and must be sent back in full. It doesn't add detail for src and name, but those are self-explanatory from the schema. The extra insight into content 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 clearly states the tool updates a journal page, emphasizing the replace behavior ('content REPLACES the whole page text') and distinguishes it from create/delete/get via explicit references to sibling tools. It is specific about the resource and action, leaving no ambiguity about its purpose.

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

Usage Guidelines4/5

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

The description provides an explicit workflow: read with journal-page-get, edit, and send full HTML back. It also references journal-page-create for HTML rules, implying when to use this tool vs create. However, it does not explicitly state when not to use it (e.g., for appending) beyond the 'no append' note, and it lacks guidance for non-content updates (like renaming only).

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

journal-showAInspect

Show a journal entry or one page to players by opening it on their screens. force=true reveals it even to players without permission on the journal (a one-off popup; permissions are not changed). users = Foundry user IDs (e.g. authorId from chat-list); omit for everyone.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoOverride Foundry permissions (default: false)
usersNoFoundry User IDs to show to (omit for all players)
pageIdNoSpecific page ID to show (omit for entire journal)
journalIdYesThe journal ID to show

TDQS

A4.4/5.0
Behavior4/5

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

The description discloses key side effects: force reveals even without permission and is a one-off popup without permanent permission changes. This adds value beyond the annotations, which only set destructiveHint=false. It does not contradict 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 with no fluff. The primary purpose is front-loaded, and the second sentence packs essential parameter behavior compactly. 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 display operation with no output schema, the description covers all requested parameters and key behavioral nuances. It could mention error cases or the effect on players' screens in more detail, but it is sufficient for an agent to invoke correctly.

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

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 described. The description adds meaningful clarification for force (one-off popup, no permission change) and users (example ID source and omit behavior), enhancing the schema definitions beyond 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 clearly states the specific action (show a journal entry or page) and the resource (journal/page) plus the target (players). It distinguishes from journal-get (retrieval) and journal-update (modification) by emphasizing the UI action of opening on screens.

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

Usage Guidelines4/5

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

Provides explicit guidance on when to use force (to bypass permissions) and how to use users (which IDs, omit for everyone). It gives clear context on the intended usage, though it doesn't explicitly contrast with 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.

journal-updateAInspect

Rename a journal entry or move it to another folder (metadata only; pages are edited with journal-page-update). folder takes a folder ID; a unique folder NAME is resolved to its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name for the journal
folderNoTarget folder ID (from folder-list with type "JournalEntry"); a unique folder name is also accepted.
journalIdYesThe journal ID to update

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark readOnlyHint=false, so the description's 'rename' and 'move' verbs are consistent. It adds useful context by stating 'metadata only' and explaining that a unique folder name resolves to its ID, which goes 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?

The description is a single, dense sentence that front-loads the core action (rename/move) and includes the critical metadata-only caveat. Every clause earns its place with 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 simple rename/move tool with three parameters and one required, the description covers the main behaviors and the folder resolution nuance. It doesn't mention return values or error handling, but those are not essential given the tool's simplicity and the lack 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 coverage is 100% and each parameter has a clear description. The tool description reinforces the folder name resolution behavior but doesn't add meaning beyond what the schema already provides for the parameters themselves, 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 clearly states the tool renames a journal entry or moves it to another folder, and explicitly scopes it to metadata only, distinguishing it from journal-page-update. It names the sibling for page edits, making its purpose unambiguous.

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

Usage Guidelines4/5

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

It provides clear when-to-use guidance by specifying rename/move operations and pointing to journal-page-update as the alternative for page content. It doesn't explicitly list exclusions, but the reference to the sibling tool is sufficient for an agent to choose correctly.

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

pf2e-cast-spellAInspect

PF2e only. Cast a spell via its spellcasting entry. spellId must be a "spell" item on the actor (from item-list). rank heightens the spell (1-10); defaults to the spell's own rank.

ParametersJSON Schema
NameRequiredDescriptionDefault
rankNoHeightened rank 1-10 (default: spell rank)
actorIdYesActor ID
spellIdYesItem ID of a spell (from item-list)
showInChatNoPost to chat (default true)

TDQS

A4/5.0
Behavior3/5

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

Annotations already establish this is not read-only, not idempotent, and not destructive. The description adds useful rank-heightening and default-rank behavior, but does not disclose side effects such as resource/slot consumption or whether the cast triggers rolls or chat output. 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?

Three short, purposeful sentences with no filler. The PF2e-only scope is front-loaded, followed by the required item constraint and the key optional parameter behavior.

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 four-parameter tool with a fully-covered schema alert, the description covers system, valid spellId source, rank range/default, and chat projection via schema. It does not explain broader cast consequences, but all invocation-critical information is present.

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

Parameters3/5

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

Schema coverage is 100%, so the schema carries most parameter meaning. The description adds the important constraint that spellId must be a spell item on the actorjos, and restates rank behavior already present in the schema, providing only small additional semantic value.

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

Purpose5/5

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

The description uses a specific verb ('Cast') and resource ('spell via its spellcasting entry'), scoped to PF2e and tied to a spell item on an actor. It is clearly distinguishable from sibling item-use/consumable tools even without naming them explicitly.

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

Usage Guidelines4/5

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

'PF2e only' is an explicit scoping exclusion, and 'spellId must be a "spell" item on the actor (from item-list)' gives concrete sourcing guidance. It does not name alternative sibling tools, but the usage context is clear and actionable.

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

pf2e-compendium-filter-actorsA
Read-onlyIdempotent
Inspect

Search COMPENDIUM packs for actors with Pathfinder 2e structured filters (pf2e worlds only): bestiary browsing by level, traits, rarity, size, HP, AC.

CRITICAL DATA FORMATS

  • level is an INTEGER range; negative bounds are valid ({ "min": -1 }).

  • traits are ALL-OF (every listed trait must be present), an open set of lowercase slugs ("undead", "kobold").

  • rarity: common, uncommon, rare, unique (PF2e ladder). Sizes: tiny, sm, med, lg, huge, grg.

SEMANTICS: filters combine with AND, values inside one array with OR. Ranges are {min?, max?}, inclusive (min = max for exact). Documents lacking a filtered field are silently excluded. limit 1..200 (default 50), offset; the response has total and hasMore. Results are {name, uuid} entries: follow up with uuid-resolve, or compendium-browse with ids to batch-load. Requires bridge module 8.11.0+. Results carry level (null when absent), sorted by level then name.

EXAMPLES { "type": ["npc"], "traits": ["kobold"], "level": { "min": -1, "max": 1 } } { "rarity": ["unique"], "level": { "min": 15 } }

ParametersJSON Schema
NameRequiredDescriptionDefault
acNoArmor Class range.
nameNoSubstring of document name, case-insensitive.
sizeNoSize short codes (OR).
typeNoPF2e actor types (OR).
levelNoCreature level range; negative bounds are valid.
limitNoPage size 1..200, default 50.
maxHpNoMax HP range.
offsetNoSkip first N results.
rarityNoRarity (OR).
traitsNoALL-OF: every listed trait must be present. Lowercase slugs.
packIdsNoRestrict to these Actor packs; omit for 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, so the safety profile is covered. The description adds valuable behavioral context beyond annotations: documents lacking a filtered field are silently excluded, filters combine with AND/OR semantics, results are sorted by level then name, and the response includes total and hasMore. It also discloses the bridge module version requirement (8.11.0+), which is useful operational context. It doesn't describe pagination edge cases or error behavior, but the disclosed semantics are substantial.

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 with clear section headers (CRITICAL DATA FORMATS, SEMANTICS, EXAMPLES). It front-loads the core purpose and scope before diving into details. The examples are compact and illustrative. It is longer than strictly necessary, but every section earns its place given the tool's 11 parameters and complex filter semantics; a small deduction for the length and some redundancy between the SEMANTICS section and the schema descriptions.

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 filter tool with 11 parameters, nested range objects, and no output schema, the description covers the essential semantics: filter combination logic, range inclusivity, silent exclusion of missing fields, pagination limits, result shape ({name, uuid}), and follow-up tools. It lacks explicit return field details beyond name/uuid/level and doesn't document error conditions, but the provided context is sufficient for an agent to construct valid queries and interpret results 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 every parameter. The description adds meaning beyond the schema by explaining the critical data formats: level is an integer range with negative bounds valid, traits are ALL-OF lowercase slugs, rarity follows the PF2e ladder, and ranges are inclusive with min=max for exact. It also clarifies that values inside one array use OR while filters combine with AND, which is not evident from the schema alone. This goes beyond the baseline 3 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 opens with a specific verb ('Search') and resource ('COMPENDIUM packs for actors'), and immediately distinguishes itself from generic actor-filter by scoping to PF2e structured filters and pf2e worlds. It also names sibling tools (uuid-resolve, compendium-browse) for follow-up, making its role in the tool family clear.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('pf2e worlds only'), what filters it supports, and how results should be followed up ('follow up with uuid-resolve, or compendium-browse with ids to batch-load'). It also contrasts with the sibling dnd5e-compendium-filter-actors by naming the PF2e-specific scope, giving an 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.

pf2e-compendium-filter-itemsA
Read-onlyIdempotent
Inspect

Search COMPENDIUM packs for items with Pathfinder 2e structured filters (pf2e worlds only): equipment, spells, feats, ancestries, classes and 20 more Item types.

CRITICAL DATA FORMATS

  • For spells, level is the spell RANK.

  • traits are ALL-OF (every trait present); traditions are ANY-OF (arcane, divine, occult, primal). Do not confuse the two.

  • category is the feat category (class, skill, general, ancestry, ...). rarity: common, uncommon, rare, unique.

  • priceGold is gp with decimals (5 sp -> 0.5), per batch for batched goods like arrows.

SEMANTICS: filters combine with AND, values inside one array with OR. Ranges are {min?, max?}, inclusive (min = max for exact). Documents lacking a filtered field are silently excluded. limit 1..200 (default 50), offset; the response has total and hasMore. Results are {name, uuid} entries: follow up with uuid-resolve, or compendium-browse with ids to batch-load. Requires bridge module 8.11.0+. Results carry level (null when absent), sorted by level then name.

EXAMPLES { "type": ["spell"], "level": { "min": 3, "max": 3 }, "traditions": ["arcane"] } { "type": ["consumable"], "priceGold": { "max": 5 } }

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoSubstring of document name, case-insensitive.
typeNoPF2e item types (OR).
levelNoItem level range; spell RANK for spells.
limitNoPage size 1..200, default 50.
offsetNoSkip first N results.
rarityNoRarity (OR).
traitsNoALL-OF: every listed trait must be present. Lowercase slugs.
packIdsNoRestrict to these Item packs; omit for all.
categoryNoFeat category (OR): class, skill, general, ancestry, ...
priceGoldNoPrice range in gp (5 sp -> 0.5).
traditionsNoANY-OF: at least one shared tradition.

TDQS

A5/5.0
Behavior5/5

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

Annotations already mark it as readOnly, idempotent, and non-destructive; the description adds rich behavioral details: silent exclusion of documents lacking a filtered field, limit/offset with defaults, response fields (total, hasMore), result format ({name, uuid}), sorting order, and the bridge module requirement. 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?

Well-structured with sections for critical data formats, semantics, and examples. The purpose is front-loaded, and every sentence earns its place—no fluff. The length is justified by the complexity of the tool.

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

Completeness5/5

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

Covers all essential aspects for correct usage: filter semantics, response format, pagination, follow-up tools, and prerequisites (bridge module). Despite 11 parameters and nested objects, nothing an agent needs to call it correctly is missing, and the lack of an output schema is compensated by the explicit result description.

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%, yet the description adds critical semantics beyond the schema: spells use level as rank, traits are ALL-OF vs traditions ANY-OF, category explains feat categories, priceGold explains gp conversion and per-batch pricing, and filter combination logic (AND/OR) is clarified. This is exactly the kind of value the description should provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Search') and resource ('COMPENDIUM packs') with an explicit scope ('pf2e worlds only') and enumerates the item types covered. It clearly differentiates from sibling tools like pf2e-compendium-filter-actors (which searches actors) and generic compendium-search by emphasizing structured PF2e filters.

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 scopes usage to PF2e worlds and explains how to follow up on results ('follow up with uuid-resolve, or compendium-browse with ids to batch-load'). While it doesn't name alternative search tools directly, the scope and filter emphasis make the intended context unambiguous.

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

pf2e-decrease-conditionAInspect

PF2e only. Decrease a valued condition by 1; the condition is removed when it reaches 0 (condition is null in the result then).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesPF2e condition slug. Valued conditions (carry a number): clumsy, cursebound, doomed, drained, dying, enfeebled, frightened, sickened, slowed, stunned, stupefied, wounded.
actorIdYesActor ID

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate a non-read-only, non-destructive operation. The description adds valuable context: the condition is removed at 0 and the result can be null. This goes beyond the annotations and helps the agent anticipate the outcome, though it does not cover edge cases like missing conditions or already-at-0.

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

Conciseness5/5

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

The description is a single, dense sentence that front-loads the PF2e scope and clearly states the operation and its result. Every word earns its place with no redundancy.

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

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 tool with no output schema, the description covers the core action and result behavior. It does not mention error handling or prerequisites, but these are not critical for a basic decrement operation, and the schema already documents the parameter domain.

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

Parameters3/5

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

The schema covers 100% of parameters with descriptions, including the list of valued conditions in the slug enum. The description itself adds no parameter-specific information, so it does not improve on the schema. Baseline 3 is appropriate given 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 ('Decrease'), a specific resource ('a valued condition'), and a concrete effect (by 1, removal at 0). It also scopes to PF2e and distinguishes from sibling tools like increase/set/remove by implying a decrement operation on valued conditions only.

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 intended use clear (decrease valued condition by 1) and implicitly restricts to valued conditions, but it does not explicitly mention alternatives or when not to use it. The agent must infer from the context that this is for valued conditions only, and that set/increase/remove are alternatives.

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

pf2e-get-conditionsA
Read-onlyIdempotent
Inspect

PF2e only. List the active conditions on an actor (slug, name, value, active).

ParametersJSON Schema
NameRequiredDescriptionDefault
actorIdYesActor ID

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 behavioral context by specifying that only active conditions are listed and what output fields to expect (slug, name, value, active). 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, front-loaded sentence with zero filler. Every word contributes: the system scope, the action, the resource, and the output fields. Excellent 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?

For a simple single-parameter read-only lookup with no output schema, the description adequately conveys behavior and return shape. Minor details like empty-list behavior or error handling are not critical given the tool's simplicity and the annotations' coverage.

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 parameter actorId is fully described in the schema ('Actor ID'), so the description adds no extra meaning beyond the schema. It references an 'actor' but does not elaborate on the ID format or any constraints. Baseline 3 applies due to 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?

States a specific verb ('List'), resource ('active conditions on an actor'), system scope ('PF2e only'), and enumerates the returned fields (slug, name, value, active). Clearly distinguishes itself from sibling mutation tools like pf2e-set-condition and from generic effect-list.

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

Usage Guidelines3/5

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

Provides a system-restriction clue ('PF2e only') but does not explicitly state when to prefer this tool over alternatives, nor does it mention exclusions. No guidance on when not to use it or which sibling to use instead.

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

pf2e-increase-conditionAInspect

PF2e only. Increase a valued condition by 1 (creates it at 1 if absent). Meaningful only for valued conditions.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesPF2e condition slug. Valued conditions (carry a number): clumsy, cursebound, doomed, drained, dying, enfeebled, frightened, sickened, slowed, stunned, stupefied, wounded.
actorIdYesActor ID

TDQS

A4.2/5.0
Behavior4/5

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

Annotations are minimal (all hints false, no readOnly or destructive flags), so the description carries the behavioral burden. It discloses the key side effect: 'creates it at 1 if absent', and restricts applicability via 'PF2e only' and 'valued conditions'. It does not mention error behavior for non-valued conditions, but the main mutation behavior is transparent. No contradiction with annotations (readOnlyHint=false aligns with a mutating action).

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

Conciseness5/5

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

The description is two short sentences, zero filler, and front-loads the system restriction ('PF2e only') before the action. Every phrase earns its place: the mechanism (increase by 1), the create-if-absent behavior, and the valued-condition scope are all covered.

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 mutation tool with 2 parameters and no output schema, the description covers the essential behavior: what it does, under what conditions, and how it handles absent conditions. It doesn't describe return values or failure modes, but these are less critical for a direct increment action. Given the sibling context and schema coverage, the description 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%: both parameters (actorId, slug) have descriptions, and the slug enum lists valued conditions with explicit examples. The description reinforces that the operation is meaningful only for valued conditions, which is also implied by the schema's slug description. No significant added meaning beyond the schema, so the baseline of 3 applies.

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

Purpose5/5

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

The description clearly states the operation ('Increase a valued condition by 1'), the resource (condition), and the scope ('PF2e only', 'Meaningful only for valued conditions'). It distinguishes from sibling tools like pf2e-decrease-condition, pf2e-set-condition, and pf2e-remove-condition by specifying direction (increase) and value-type restriction, so an agent can select it correctly without opening schemas.

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

Usage Guidelines4/5

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

The description provides clear usage context: it is for PF2e valued conditions where you want to increment by 1, and explicitly scopes to valued conditions ('Meaningful only for valued conditions'). However, it does not explicitly name alternative tools or state when not to use it (e.g., 'use pf2e-set-condition to set to a specific value'). The sibling list makes alternatives evident, so this is a clear context without explicit exclusions.

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

pf2e-list-strikesA
Read-onlyIdempotent
Inspect

PF2e only. List an actor's weapon strikes. This is the source of the strike slug used by pf2e-roll-strike / pf2e-roll-strike-damage. variants are MAP-step labels by index.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorIdYesActor ID

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, destructiveHint=false, and idempotentHint=true, covering the safety profile. The description adds a specific behavioral detail: 'variants are MAP-step labels by index,' which enriches understanding of the output. It does not contradict 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 and well-structured, front-loading the core purpose ('List an actor's weapon strikes') followed by two sentences of valuable context (PF2e scope and relationship to roll tools). 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?

While there is no output schema, the description covers the key return element (strike slug and variants) and its purpose. It doesn't detail the full return structure, but for a simple listing tool with one parameter, it provides enough for an agent to call it correctly and understand the output's relevance.

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 actorId described as 'Actor ID.' The description adds no additional meaning beyond what the schema already 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?

The description clearly states the tool's purpose: 'List an actor's weapon strikes.' It also specifies it is PF2e-specific and identifies its role as the source of the strike slug used by roll tools, distinguishing it from sibling tools that perform rolls.

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: to obtain strike slugs for pf2e-roll-strike and pf2e-roll-strike-damage. It doesn't explicitly state exclusions or alternatives, but the association with roll tools gives strong guidance on its typical use case.

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

pf2e-post-itemAInspect

PF2e only. Post any item's card to chat (description, traits, actions) without consuming or casting it. itemId is any item on the actor (from item-list).

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesItem ID (from item-list)
actorIdYesActor ID
showInChatNoPost to chat (default true)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only say readOnlyHint=false, so the description carries the responsibility of explaining the side effect. It does so by saying the tool posts to chat and, importantly, guarantees the item is not consumed or cast. It also clarifies the prerequisite that itemId must come from item-list and belong to the actor. The only gap is that the behavior when showInChat=false is not disclosed.

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

Conciseness5/5

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

The description is two short sentences with no filler. It front-loads the system requirement ('PF2e only'), states the core action, and immediately gives the critical constraint about not consuming or casting. Every sentence contributes useful guidance.

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 post-to-chat tool with 100% schema coverage and no output schema, the description is nearly complete: it states scope, item source, and the absence of consumption/casting. The main remaining gap is the unspecified behavior of showInChat=false, which prevents full completeness.

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

Parameters4/5

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

The schema already covers all three parameters, but the description adds meaningful linkage: itemId must be an item on the provided actor and should be obtained from item-list. This helps prevent the common mistake of supplying a world item or an item from another actor. The semantics of showInChat=false remain under-specified, but the default true is clear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Post'), a specific resource ('any item's card to chat'), and defines what the card contains ('description, traits, actions'). It also distinguishes itself from related PF2e tools by explicitly stating it does so 'without consuming or casting it,' so an agent can tell it apart from pf2e-use-consumable and pf2e-cast-spell.

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: PF2e only, and the purpose is to share an item card rather than consume or cast the item. This implies when to use it versus related item-affecting tools, and it points to item-list as the source for itemId. It does not explicitly name sibling alternatives or state when not to use them, but the exclusion is clear enough.

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

pf2e-remove-conditionA
Idempotent
Inspect

PF2e only. Remove a condition from an actor. Returns removed=true when the condition is gone.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesPF2e condition slug.
actorIdYesActor ID

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover idempotency and non-destructiveness. The description adds a concrete return behavior ('Returns removed=true when the condition is gone'), which is valuable beyond the annotations. It does not contradict annotations, and while it doesn't clarify edge cases (e.g., condition not present), it adds 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?

The description is two short sentences with zero filler. It front-loads the scope ('PF2e only'), then the action, then the return behavior. 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 two-parameter removal tool, the description is nearly complete: it specifies scope, action, and return value. The main gap is not stating behavior when the condition is absent (though idempotentHint implies it's safe). Given the simplicity and existing annotations, it is adequate without being exhaustive.

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 (actorId and slug) are fully documented in the schema with descriptions and an enum for slug. The tool description does not add extra parameter-specific meaning, but since schema coverage is 100%, the baseline 3 applies. The description's use of 'condition' and 'actor' aligns with the parameter names.

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

Purpose5/5

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

The description states the exact action ('Remove a condition from an actor') and specifies the scope ('PF2e only'), clearly distinguishing it from sibling tools like pf2e-set-condition, pf2e-increase-condition, and pf2e-decrease-condition. The return-value note adds further precision.

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 (PF2e system, remove operation) but does not explicitly compare against alternatives or state when not to use it. An agent can infer usage from the name and sibling set, but no direct guidance is provided.

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

pf2e-roll-perceptionAInspect

PF2e only. Roll a Pathfinder 2e Perception check. isCritical/isFumble reflect critical success/failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorIdYesActor ID (from actor-list/actor-filter)
showInChatNoPost the roll to chat (default false)

TDQS

A4/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, so the tool is expected to have side effects (e.g., chat posting), but the description does not elaborate on those side effects. It does add value by disclosing that isCritical/isFumble reflect critical success/failure, which is not in the schema or annotations. Since annotations already cover the mutation aspect partially, the description provides some extra context but not rich behavioral detail.

Agents need to know what a tool does to the world before 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 short sentences with no filler. The key scope constraint 'PF2e only' is front-loaded, followed by the action and a note on criticals. Every phrase contributes to understanding the tool.

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

Completeness4/5

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

For a simple roll tool with two well-documented parameters and no output schema, the description covers the essential aspects: the system, the action, and the critical handling. It does not mention prerequisites beyond actorId, but those are implied by the schema. The description is slightly limited by not stating what happens when showInChat is false (which is the default), but the schema covers that. Overall, it is nearly complete for its 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 provides descriptions for both parameters: actorId is sourced from actor-list/actor-filter, and showInChat has a clear boolean meaning. The description does not add any additional parameter-specific information beyond what the schema offers. With 100% schema coverage, the baseline of 3 is appropriate; the description does not need to compensate but also does not exceed the schema.

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

Purpose5/5

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

The description clearly states the verb 'Roll' and the resource 'Perception check', combined with 'PF2e only' which distinguishes it from the generic roll-perception and other system-specific roll tools. It also mentions isCritical/isFumble, which clarifies the expected output behavior. This makes it unambiguous what the tool does and how it differs 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 begins with 'PF2e only', providing a clear system context for when this tool is appropriate. However, it does not explicitly mention when to avoid it or name alternative tools like roll-perception or pf2e-roll-skill, leaving some inference to the agent. The condition is clear for PF2e perception checks, but not exhaustive.

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

pf2e-roll-saveAInspect

PF2e only. Roll a Pathfinder 2e saving throw (fortitude/reflex/will). isCritical = critical success, isFumble = critical failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
saveYesPF2e save: fortitude, reflex, will.
actorIdYesActor ID (from actor-list/actor-filter)
showInChatNoPost the roll to chat (default false)

TDQS

A4/5.0
Behavior3/5

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

The description adds useful result semantics by defining isCritical and isFumble, and annotations show this is not read-only/destructive. However, it does not disclose side effects such as whether the roll is posted to chat or whether any actor state changes beyond the roll result, so the description only partially carries the behavioral burden.

Agents need to know what a tool does to the world before 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 with the system restriction and core action front-loaded; every phrase earns its place and there is no redundant restatement 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 simple three-parameter roll tool, the schema covers input details and the description covers outcome labels. An explicit note on where the result appears (chat vs direct return) would make it fully complete, but nothing critical is missing for invoking 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 actorId, save, and showInChat. The description reinforces which values save accepts (fortitude/reflex/will) but adds no new meaning beyond the enum and tool 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?

States a strong verb ('Roll'), a specific resource ('Pathfinder 2e saving throw'), and explicitly enumerates the three sub-types (fortitude/reflex/will). The 'PF2e only' opener separates it from dnd5e-roll-save and other system-specific roll 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?

'PF2e only' is an explicit system-level condition and the phrase 'saving throw' tells the agent when to select it over perception, skill, or strike rolls. It does not name a sibling alternative or give an explicit when-not-to-use, 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.

pf2e-roll-skillAInspect

PF2e only. Roll a Pathfinder 2e skill check. isCritical = critical success, isFumble = critical failure. Use actor-list/actor-get first for actorId.

ParametersJSON Schema
NameRequiredDescriptionDefault
skillYesPF2e skill slug. Lore skills are not supported.
actorIdYesActor ID (from actor-list/actor-filter)
showInChatNoPost the roll to chat (default false)

TDQS

A4/5.0
Behavior3/5

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

Annotations are all false, so the description carries the burden. It explains critical outcomes (isCritical/isFumble) but does not disclose side effects like chat posting (only the schema mentions showInChat) or whether the roll modifies any state. The behavior of a dice roll is implied but not fully 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?

Two short sentences plus a terse critical-success/failure mapping. Every sentence earns its place, and the 'PF2e only' scoping 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?

No output schema exists, so the description should explain return values. It hints at the result via isCritical/isFumble but does not specify the full return shape (e.g., dice total, success/failure). For a simple roll tool this is acceptable, though more detail would be helpful.

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

Parameters4/5

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

Schema already has 100% coverage, so baseline is 3. The description adds value by instructing how to obtain actorId via actor-list/actor-get, which clarifies the intended workflow beyond the schema's generic 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?

States a specific verb and resource: 'Roll a Pathfinder 2e skill check.' It clearly distinguishes from sibling roll tools (save, strike, perception) by naming the skill check domain, and the 'PF2e only' qualifier prevents cross-system confusion.

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?

Provides a prerequisite ('Use actor-list/actor-get first for actorId') but does not explicitly contrast with alternatives like pf2e-roll-save or pf2e-roll-strike. The tool name implies the context, but the description leaves the choice of roll type 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.

pf2e-roll-strikeAInspect

PF2e only. Roll a weapon strike (attack). Get the slug from pf2e-list-strikes first. mapIncrease applies the multiple attack penalty: 0 (none), 1 (−5/−4 agile), 2 (−10/−8 agile).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesStrike slug from pf2e-list-strikes
actorIdYesActor ID
showInChatNoPost the roll to chat (default false)
mapIncreaseNoMAP step: 0, 1, or 2 (default 0)

TDQS

A4.2/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, so the description is not required to repeat those. It adds the MAP penalty mechanics and the PF2e scope, but does not disclose side effects like chat posting (though showInChat parameter hints at it) or the nature of the result. 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?

The description is two sentences: it front-loads the primary purpose, then provides the prerequisite and MAP penalty details. No filler or redundant information; 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 roll tool with 4 parameters and no output schema, the description covers the core behavior, prerequisite, and MAP penalty mechanics. It omits explicit return-value details and chat-posting behavior, but these are partially inferable from the schema and typical roll semantics. Overall, it is sufficiently complete 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% with all parameters described, so the baseline is 3. The description adds value by explaining the slug origin and giving explicit MAP penalty values with agile modifiers, which goes beyond the schema's brief 'MAP step: 0, 1, or 2'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('roll a weapon strike') and resource (weapon strike), explicitly scopes it to PF2e, and references a prerequisite sibling (pf2e-list-strikes) for obtaining the slug. This clearly differentiates it from other roll tools like pf2e-roll-strike-damage and pf2e-roll-save.

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 direct prerequisite ('Get the slug from pf2e-list-strikes first') and details the mapIncrease values, which is essential for correct usage. However, it does not explicitly state when not to use it (e.g., for damage rolls) or name alternatives, though the sibling list makes this inferable.

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

pf2e-roll-strike-damageAInspect

PF2e only. Roll damage for a weapon strike. Get the slug from pf2e-list-strikes. Set critical=true for critical damage. Damage rolls carry no isCritical/isFumble flags.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesStrike slug from pf2e-list-strikes
actorIdYesActor ID
criticalNoRoll critical damage (default false)
showInChatNoPost the roll to chat (default false)

TDQS

A4.5/5.0
Behavior4/5

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

The description adds a meaningful behavioral note beyond the annotations: 'Damage rolls carry no isCritical/isFumble flags.' This helps an agent avoid misinterpreting roll metadata. The annotations provide minimal signal (all hints false), so this extra disclosure is valuable, though it does not describe chat-side effects or return payload.

Agents need to know what a tool does to the world before 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 PF2e scope is front-loaded, followed by the action, required input source, optional flag, and a useful caveat. 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?

For a roll tool with no output schema, the description covers the essential call path: required slug source, critical behavior, and the lack of status flags on damage rolls. The schema already documents actorId and showInChat defaults, so nothing critical is missing for an agent to call this 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. The description enriches the slug parameter by pointing to pf2e-list-strikes as the source, which is not in the schema. It also clarifies the critical parameter's effect, reinforcing but adding little beyond the schema's own 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 names a specific verb and resource ('Roll damage for a weapon strike'), scopes it to PF2e, and distinguishes it from sibling pf2e-roll-strike by focusing on damage rather than the attack roll. It also tells the agent where to get the required slug, so the tool's role is unambiguous.

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

Usage Guidelines4/5

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

The description gives clear operational guidance: obtain the slug from pf2e-list-strikes and set critical=true for critical damage. It does not explicitly enumerate when to prefer this over pf2e-roll-strike, but the 'damage' wording plus the sibling name makes the intended usage evident.

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

pf2e-set-conditionA
Idempotent
Inspect

PF2e only. Apply a condition to an actor. For valued conditions, value is the EXACT value to set (e.g. frightened=2). For binary conditions, value is ignored. Omit value to just apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesPF2e condition slug. Valued conditions (carry a number): clumsy, cursebound, doomed, drained, dying, enfeebled, frightened, sickened, slowed, stunned, stupefied, wounded.
valueNoExact value for valued conditions (positive integer)
actorIdYesActor ID

TDQS

A4.5/5.0
Behavior4/5

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

Annotations provide readOnlyHint=false and idempotentHint=true, and the description adds meaningful behavioral detail: value is exact for valued conditions, ignored for binary conditions, and omitting value applies without a specific number. This goes beyond the annotations, though the meaning of omitting value for a valued condition is slightly ambiguous.

Agents need to know what a tool does to the world before 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, purposeful sentences. 'PF2e only' is front-loaded, the core action is stated first, and every sentence earns its place without redundancy.

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

Completeness4/5

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

For a simple 3-parameter tool with no output schema, the description plus schema covers invocation well. The only minor gap is not clarifying what 'just apply' does for valued conditions, but the core semantics are clear enough for correct use.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds interpretive value by explaining the valued/binary distinction, the exact-set semantics, and the omission behavior. This meaningfully exceeds what the schema enum and parameter descriptions provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Apply a condition to an actor') and scopes it to PF2e. It differentiates itself from sibling tools like pf2e-increase-condition, pf2e-decrease-condition, and pf2e-remove-condition by emphasizing that value is the 'EXACT value to set' and supporting simple application when omitted.

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 guidance for valued vs binary conditions and explains when to omit value. However, it does not explicitly route to sibling alternatives (e.g., 'to increment use pf2e-increase-condition'), so the when-not-to-use 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.

pf2e-use-consumableAInspect

PF2e only. Use a consumable item (potion, scroll, etc.). itemId must be a "consumable" item — find it via item-list. Always posts a card to chat.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesItem ID of a consumable (from item-list)
actorIdYesActor ID
quantityNoHow many to use (positive integer, default 1)

TDQS

A4/5.0
Behavior3/5

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

It adds a useful behavioral detail beyond annotations: 'Always posts a card to chat.' However, it doesn't state whether the item's quantity is decremented or the item is destroyed, which is central to consuming an item. The annotations signal mutation via readOnlyHint=false, but the description could be more explicit about the mechanical effect.

Agents need to know what a tool does to the world before 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: system restriction, action, itemId constraint, and chat side effect each earn their place. No filler or redundant elaboration.

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

Completeness4/5

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

For a three-parameter tool with no output schema and minimal annotations, the description covers the essentials: system, item type, lookup path, and a side effect. It omits explicit notes about quantity decrement or permission requirements, which prevents a perfect score.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents itemId, actorId, and quantity. The description reinforces that itemId must be consumable and found via item-list, but this mostly repeats schema information rather than adding 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 opens with 'PF2e only' to scope the system, then names a specific action and resource: 'Use a consumable item (potion, scroll, etc.)'. The consumable constraint differentiates it from spell-casting or item-posting siblings like pf2e-cast-spell and pf2e-post-item.

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: PF2e only, itemId must be a consumable, and item-list is the source for finding one. It doesn't explicitly name alternative tools for non-consumable actions, but the consumable requirement is a clear exclusion criterion.

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

roll-diceAInspect

Roll arbitrary dice for custom checks, random tables, or DM-specified rolls. For D&D 5e mechanics, prefer: dnd5e-roll-skill (skills), dnd5e-roll-save (saves), dnd5e-roll-attack/dnd5e-roll-damage (combat), or dnd5e-item-use (spells/abilities). isCritical / isFumble flags fire correctly on the KEPT d20: works for plain 1d20, advantage 2d20kh1 (a 20 on the kept die marks crit), and disadvantage 2d20kl1 (a 20 on the discarded die does NOT count). Module v8.5.0+.

ParametersJSON Schema
NameRequiredDescriptionDefault
formulaYesDice formula: "1d20+5", "2d6", "4d6kh3" (keep highest 3), "2d20kh1" (advantage), "2d20kl1" (disadvantage)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations are minimal (readOnlyHint=false, destructiveHint=false, etc.) and don't reveal much about behavior. The description adds valuable behavioral context: it explains how isCritical/isFumble flags behave with advantage/disadvantage, specifically that a 20 on the kept die marks a crit and a 20 on the discarded die does NOT count. This is non-obvious behavior that an agent would otherwise not know. It also notes the module version requirement (v8.5.0+). It doesn't describe the return format, but with no output schema, that's a minor gap.

Agents need to know what a tool does to the world before 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 information-dense. It front-loads the core purpose, then provides routing guidance, then the critical behavioral detail about crit/fumble flags, and finally the version requirement. Every sentence earns its place; there's no fluff 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 single-parameter tool with full schema coverage, the description is quite complete. It covers purpose, alternatives, and a subtle behavioral edge case (crit/fumble with advantage/disadvantage). The only missing piece is the return value shape, but with no output schema and a simple dice-roll tool, an agent can reasonably infer the result. The version requirement is a nice operational detail.

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

Parameters3/5

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

Schema description coverage is 100% – the single 'formula' parameter is fully documented in the schema with examples ('1d20+5', '2d6', '4d6kh3', '2d20kh1', '2d20kl1'). The description adds context about what the formula is used for and how crit/fumble flags interact with certain formulas, but the core parameter semantics are already in 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's purpose: 'Roll arbitrary dice for custom checks, random tables, or DM-specified rolls.' It uses a specific verb ('roll') and resource ('arbitrary dice'), and it distinguishes itself from the many D&D 5e-specific roll tools by explicitly listing them as alternatives. This makes it easy for an agent to know exactly what this tool does and how it differs 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 provides explicit when-to-use guidance: use this for custom/arbitrary rolls, and prefer the listed dnd5e-roll-* tools for D&D 5e mechanics. It names the alternatives (dnd5e-roll-skill, dnd5e-roll-save, dnd5e-roll-attack/damage, dnd5e-item-use) and the conditions that select them. This is exactly the kind of routing guidance an agent needs.

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

roll-perceptionAInspect

Roll a Perception check for an actor (D&D 5e worlds; same as dnd5e-roll-skill with skill prc). In Pathfinder 2e worlds use pf2e-roll-perception instead. Results appear in Foundry chat.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorIdYesActor ID (from actor-list/actor-filter)

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=false, destructiveHint=false, idempotentHint=false, so the agent knows this is a non-read, non-destructive, non-idempotent action. The description adds that results appear in Foundry chat, which is useful behavioral context. However, it doesn't disclose details like whether the roll is whispered, whether modifiers can be applied, or whether the actor must be a PC/NPC. The description adds some value beyond annotations 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?

Three sentences, each earning its place: the first states the action and system, the second routes to the correct alternative for a different system, and the third states the output location. No fluff, no repetition of schema details, and the key scoping 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 single-parameter roll tool with no output schema, the description is nearly complete: it identifies the system, the skill, the target actor, the output channel, and the alternative for other systems. The only minor gap is that it doesn't mention whether the roll is public or private, or whether any additional options (like advantage/disadvantage) are supported, but these are not essential for a basic call.

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

Parameters3/5

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

Schema description coverage is 100%: the only parameter, actorId, is described as 'Actor ID (from actor-list/actor-filter)'. The description adds the context that the actor is the target of the Perception check, but it doesn't add meaning beyond what the schema already provides. Baseline 3 is appropriate when the schema fully documents the parameter.

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

Purpose5/5

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

The description states a specific verb ('Roll'), a specific resource ('Perception check for an actor'), and the game system context (D&D 5e). It also explicitly distinguishes itself from the sibling dnd5e-roll-skill by noting it is the same with skill prc, and from pf2e-roll-perception for Pathfinder 2e. This makes the tool's purpose unambiguous and differentiates it from closely related 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 says when to use this tool ('D&D 5e worlds') and when not to ('In Pathfinder 2e worlds use pf2e-roll-perception instead'). It also references the equivalent generic skill roll tool (dnd5e-roll-skill), giving the agent clear routing guidance. This is explicit when/when-not guidance with named alternatives.

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

roll-table-createAInspect

Create a new roll table with results. Specify a dice formula and result entries with ranges. Example: formula "1d6" with 6 results having ranges [1,1], [2,2], ..., [6,6].

ParametersJSON Schema
NameRequiredDescriptionDefault
imgNoTable icon path
nameYesTable name
folderNoFolder ID to place table in
formulaNoDice formula (e.g., "1d6", "1d100", "2d6"). Default: "1d20"
resultsNoArray of result entries with text, range [low, high], optional weight
descriptionNoHTML description of the table
displayRollNoShow roll in Foundry chat (default: true)
replacementNoDraw with replacement? true = results can repeat (default: true)

TDQS

A4/5.0
Behavior3/5

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

Annotations declare it is not read-only, and the description's 'Create' correctly signals a mutation. However, the description does not add behavioral context beyond that, such as required permissions, whether creation fails if the name already exists, or what the response contains. With minimal annotation coverage, the description carries some burden but only partially fulfills 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?

The description is two sentences with zero waste. The core purpose and a useful example are front-loaded, making it immediately actionable. Every phrase contributes meaning.

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 8 parameters and no output schema, the description, combined with the schema, provides sufficient detail to call the tool correctly. It includes a concrete usage scenario. It does not mention defaults (e.g., formula defaults to '1d20') but the schema covers these, so the description is arguably 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 covers all 8 parameters with descriptions (100% coverage), meeting the baseline of 3. The description adds a concrete example of the 'formula' and 'results' with range pairs, clarifying the format beyond generic schema text, which justifies a score 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?

The description clearly states the verb (create) and resource (roll table) and adds specifics about results and dice formula. It is instantly distinguishable from sibling tools like roll-table-delete, roll-table-get, and roll-table-update, which have different purposes.

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

Usage Guidelines3/5

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

The description implies usage (when you want to create a new roll table) but does not explicitly contrast with alternatives like roll-table-update for existing tables. No exclusion criteria or context for when to use one over another is provided, leaving it to the agent to infer.

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

roll-table-deleteA
Destructive
Inspect

Delete a roll table. This action cannot be undone!

ParametersJSON Schema
NameRequiredDescriptionDefault
tableIdYesRoll table ID to delete

TDQS

A4/5.0
Behavior4/5

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

The description adds 'This action cannot be undone!' which goes beyond the annotation destructiveHint:true by specifying irreversibility. This is valuable context that reinforces the permanent nature of the deletion, though it doesn't discuss other potential side effects like dependencies or permission requirements.

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

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 includes the key warning. There is no wasted wording, and the structure is optimal 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?

For a simple, one-parameter delete operation with a clear annotation (destructiveHint:true), the description is sufficient. It communicates the action and irreversibility, and no output schema exists to explain. Minor gaps like side effects or prerequisites are not critical 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% for the single parameter tableId, so the schema already documents it fully. The description adds no additional parameter-specific context, 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 clearly states the verb 'Delete' and the resource 'roll table', which unambiguously distinguishes it from sibling tools like roll-table-create, roll-table-get, and roll-table-update. It is specific and immediately understandable.

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 (you use it to delete a roll table) but provides no explicit guidance on when to choose this over alternatives or any exclusions. For a simple delete operation, the intent is obvious, but the guidance is minimal and relies on inference.

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

roll-table-getA
Read-onlyIdempotent
Inspect

Get full details of a roll table including all results with ranges and weights. Use roll-table-list FIRST to find the table ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableIdYesRoll table ID (from roll-table-list)

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 valuable behavioral context beyond annotations by specifying exactly what the response includes ('all results with ranges and weights'), which is not present in the schema or annotations. This is a meaningful addition without contradicting 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 two sentences: the first clearly states the purpose, and the second provides a necessary usage instruction. It is front-loaded with the core function and has zero filler or repetition. 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?

For a simple read-only tool with a single parameter, no output schema, and annotations covering safety, the description is complete. It tells the agent what the tool does, what data it returns, and how to obtain the required ID. Nothing an agent needs 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 schema description for tableId is 100% covered ('Roll table ID (from roll-table-list)'), and the tool description reinforces the same prerequisite. While the description does not add new semantic meaning beyond the schema, it reiterates the workflow. With high schema coverage, the baseline of 3 is appropriate; the description provides marginal but not substantial added value for 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 states a specific action ('Get full details of a roll table') and resource, and distinguishes itself by specifying the content ('including all results with ranges and weights'). It also implies differentiation from roll-table-list and roll-table-roll by focusing on details rather than listing or rolling. The prerequisite to use roll-table-list is explicit, which further clarifies scope.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool by instructing the agent to call roll-table-list FIRST to obtain the table ID, establishing a workflow. It does not explicitly state when not to use it (e.g., for rolling, use roll-table-roll), but the context is unambiguous enough for an agent to infer the correct choice among siblings.

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

roll-table-listA
Read-onlyIdempotent
Inspect

List all roll tables in the world. Roll tables provide random outcomes: encounters, loot, weather, NPC traits. Use roll-table-get to see full details, roll-table-roll to draw a result.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/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, covering the safety profile. The description adds useful context about what roll tables are and the 'all' scope, but does not disclose details like response format or ordering. For a simple list tool this is acceptable but not exceptional.

Agents need to know what a tool does to the world before 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 first states the core function, the second defines the domain context, and the third routes to sibling tools. 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 zero-parameter list tool with annotations covering safety and no output schema, this description is complete enough. It explains what roll tables are, what the tool does, and how to follow up with related tools.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. The description provides domain context about roll tables but is not required to explain parameter semantics since none exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 resource ('all roll tables in the world'), clearly distinguishing it from siblings like roll-table-get and roll-table-roll. The definition is unambiguous and immediately tells an agent what operation this tool performs.

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 names alternatives and when to use them: 'Use roll-table-get to see full details, roll-table-roll to draw a result.' This provides clear routing guidance beyond the tool's own function.

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

roll-table-resetA
Idempotent
Inspect

Reset all drawn results on a roll table, making all entries available again. Only relevant for tables with replacement=false.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableIdYesRoll table ID

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already state readOnlyHint=false and destructiveHint=false, so the agent knows this is a mutation but not destructive. The description adds behavioral meaning by stating the effect ('making all entries available again') and the precondition ('only relevant for tables with replacement=false'). It doesn't discuss permanent changes to table entries or side effects on past rolls, but for a reset operation with idempotentHint=true, the key behavioral facts are sufficiently disclosed.

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

Conciseness5/5

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

Two sentences with no filler. The first sentence states the action and outcome; the second gives the only relevant condition. Every word earns its place and the content 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 one-parameter mutation with idempotentHint=true and destructiveHint=false, the description covers the action, the condition of relevance, and the intended effect. It doesn't describe the return value or whether the reset also clears historical results, but those are minor for an idempotent reset operation and no output schema is expected. The sibling list confirms no other roll-table reset tool exists, so the context is sufficiently complete.

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

Parameters3/5

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

Schema coverage is 100% and the only parameter (tableId) is described as 'Roll table ID' in the schema. The description doesn't add meaning beyond that identifier, but with full schema coverage the baseline is 3. There is no additional parameter nuance needed since the single parameter's semantics are already clear from schema and 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 names a specific verb ('Reset') and resource ('drawn results on a roll table'), and distinguishes the tool's scope from possible sibling operations like roll-table-roll or roll-table-update. It also clarifies the only-relevant-when condition (replacement=false), which makes the purpose unambiguous.

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

Usage Guidelines4/5

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

The description states the primary when-to-use condition: resetting drawn results when replacement=false. It doesn't explicitly name sibling alternatives or say when NOT to use it, but the condition 'Only relevant for tables with replacement=false' is a clear usage boundary. A small gap is not identifying the sibling that handles replacement=true behavior (roll-table-roll), 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.

roll-table-rollAInspect

Roll on a table and get random result. Uses table.draw() — marks result as drawn (for no-replacement tables) and shows in Foundry chat. Use roll-table-list to find the table ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableIdYesRoll table ID
displayChatNoShow result in Foundry chat (default: true)

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses the key side effect beyond the annotations: it 'marks result as drawn (for no-replacement tables)' and 'shows in Foundry chat.' This is valuable because readOnlyHint is false and an agent needs to know the call mutates table state. There is no contradiction with destructiveHint=false, since marking a result drawn is not destructive deletion.

Agents need to know what a tool does to the world before 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 wasted words: the core action, the side-effect behavior, and the prerequisite are each clearly and concisely stated. The description is front-loaded with the primary purpose.

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

Completeness4/5

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

For a simple two-parameter tool with full schema coverage, the description covers the action, side effects, and prerequisite. There is no output schema, but the description adequately conveys that the result is a random table result. It could mention edge cases like an exhausted no-replacement table, but that is minor given roll-table-reset exists as a sibling.

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

Parameters3/5

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

Schema coverage is 100% and both parameters already have clear descriptions: tableId is the 'Roll table ID' and displayChat controls chat display with a default. The description adds a small hint about finding tableId via roll-table-list, but otherwise does not enrich 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?

States a specific verb and resource: 'Roll on a table and get random result.' It also distinguishes itself from sibling roll-table tools by referencing table.draw() and the Foundry chat display, so an agent can tell it apart from roll-table-create/get/list/reset/update.

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 usage context: use this when you want a random result from a table. It explicitly provides the prerequisite step, 'Use roll-table-list to find the table ID,' which is practical and actionable. It does not explicitly name alternatives or when-not-to-use cases, but the context is sufficient for selection.

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

roll-table-updateAInspect

Update a roll table's properties (name, formula, replacement mode, etc.). Does not modify individual results.

ParametersJSON Schema
NameRequiredDescriptionDefault
imgNoNew icon path
nameNoNew table name
formulaNoNew dice formula
tableIdYesRoll table ID to update
descriptionNoNew description (HTML)
displayRollNoShow roll in chat
replacementNoNew replacement mode

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate this is not read-only (readOnlyHint=false) and not destructive (destructiveHint=false), and the description's 'Update' aligns with that. The description adds a specific behavioral trait: 'Does not modify individual results', which clarifies the scope of the mutation. No additional side effects or permissions are mentioned, but the given annotations cover the safety profile sufficiently.

Agents need to know what a tool does to the world before 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 key scope, and adds a crucial exclusion at the end. There is no fluff or redundancy; every part earns its place.

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

Completeness4/5

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

For a simple update tool with full schema coverage, an output schema absent, and annotations covering the safety profile, the description provides the essential facts: what it updates and what it does not. It could explicitly mention partial-update behavior (only provided fields change), but that is a minor gap. Overall, it 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 every parameter already has a description in the schema. The description adds only a brief mention of example fields ('name, formula, replacement mode, etc.'), which doesn't provide new semantic meaning beyond what the schema already contains. Since the schema does the heavy lifting, a baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Update' and the resource 'roll table's properties', listing example fields (name, formula, replacement mode). It also explicitly distinguishes itself by stating 'Does not modify individual results', which differentiates it from other roll-table tools like roll-table-roll or roll-table-reset. This makes the purpose unambiguous.

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

Usage 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 it (updating properties) and includes an exclusion ('Does not modify individual results') that hints at what it is not for. However, it does not explicitly name alternative tools for modifying results or resetting, so guidance on alternatives is only implicit. Still, the boundary is clear enough.

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

scene-activateA
Idempotent
Inspect

Switch the active scene in Foundry VTT. All players will see the new scene. Use scene-list to find available scenes and their IDs. Only one scene can be active at a time.

ParametersJSON Schema
NameRequiredDescriptionDefault
sceneIdYesScene ID to activate (use scene-list to find)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate a mutation (readOnlyHint=false) with idempotent and non-destructive behavior. The description adds valuable behavioral context beyond annotations: 'All players will see the new scene' and 'Only one scene can be active at a time,' which implies deactivating the previously active scene. This is meaningful side-effect disclosure.

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

Conciseness5/5

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

Three sentences, each earning its place: the action, the player-visible side effect, and the ID lookup instruction. The most important information is front-loaded, with no redundant or filler 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 one-parameter activation tool with supportive annotations, the description covers the core action, the side effect, the lookup prerequisite, and the exclusivity constraint. It does not mention return values or error cases, but those are not essential for correct invocation given the tool's simplicity 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?

The input schema has 100% description coverage, with sceneId described as 'Scene ID to activate (use scene-list to find)'. The tool description repeats the same guidance ('Use scene-list to find available scenes and their IDs') without adding new parameter-level semantics. Baseline 3 is appropriate since the schema already fully documents the parameter.

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

Purpose5/5

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

The description states a specific verb and resource: 'Switch the active scene in Foundry VTT.' It also clarifies the exclusive nature ('Only one scene can be active at a time') and the player-visible effect, clearly distinguishing it from sibling tools like scene-list, scene-get, and scene-set-door-state.

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 to use scene-list to find available scenes and their IDs, which is the key prerequisite for calling this tool. It implies the correct workflow (list first, then activate) but does not explicitly mention when not to use this tool or name alternative tools other than scene-list.

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

scene-getA
Read-onlyIdempotent
Inspect

Get full scene details: tokens (HP, AC, conditions, grid positions), walls, lights, notes, regions. includeMap (default true) appends an ASCII tactical map — walls, doors, numbered token positions with a legend — for spatial reasoning (who is near whom, what is behind a door, movement planning); set false when you only need the lists. includeScreenshot=true adds a canvas screenshot (~100-500KB) — a visual snapshot of what the DM sees; request it on first scene view or for visual details (terrain, art, ambiance) the map cannot convey, skip it on routine turns. If sceneId is omitted, returns the active scene. Use scene-list to find scene IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
sceneIdNoScene ID (omit for active scene)
includeMapNoAppend the ASCII tactical map (default true).
includeScreenshotNoInclude canvas screenshot (~100-500KB). Recommended on first scene view or when visual context is needed. Skip during combat rounds to save context.

TDQS

A5/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 covered. The description goes further by revealing payload-size implications (~100-500KB screenshot), the active-scene fallback when sceneId is omitted, and the exact nature of the appended ASCII map. None of this contradicts 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 deliver purpose, parameter rationale, and related-tool routing without wasted words. Each clause earns its place: the map explanation justifies includeMap, the screenshot note sets size and usage expectations, and the final sentence resolves the ID lookup workflow.

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

Completeness5/5

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

There is no output schema, so the description carries the burden of explaining return content. It enumerates the major result categories and clarifies the optional map and screenshot outputs, including their use cases. An agent has everything needed to call the tool correctly and interpret its response.

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 meaningful semantics beyond field names: what the map contains (walls, doors, numbered positions, legend), when each optional parameter is worth using, and the fact that omitting sceneId targets the active scene. This materially helps an agent choose parameter values 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: 'Get full scene details', followed by a concrete inventory of returned content (tokens, walls, lights, notes, regions). This unambiguously distinguishes the tool from sibling list-oriented tools like scene-list.

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 conditions: includeMap should be set false 'when you only need the lists', includeScreenshot is recommended on first scene view and skipped on routine turns, and scene-list is named as the way to find scene IDs. This is concrete when/when-not guidance.

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

scene-listA
Read-onlyIdempotent
Inspect

List all scenes in the world with id, name, active status, and background image path. Use to find scene IDs for scene-get or scene-activate. The active scene is where tokens and combat currently happen.

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=true, idempotentHint=true, and destructiveHint=false. The description adds useful behavioral context beyond the annotations by stating that the active scene is where tokens and combat currently happen, and by listing the returned fields. There is no contradiction between description 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?

The description is two concise sentences with no filler. The first sentence states the operation and return values, and the second sentence provides the usage purpose, making the most important information 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, parameterless read-only list tool, the description is complete: it identifies what is returned, why the tool should be used, and what the active scene concept means. Annotations cover safety and idempotency, and no output schema is needed because the returned fields are explicitly listed.

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 description carries no parameter documentation burden. The schema coverage is 100% because the schema is empty, matching the baseline for a no-parameter tool.

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

Purpose5/5

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

The description states a specific verb and resource: 'List all scenes in the world' and enumerates the exact fields returned (id, name, active status, background image path). It also names the downstream tools scene-get and scene-activate, giving the tool a clear purpose distinct from 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 Guidelines4/5

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

The description gives an explicit use case: 'Use to find scene IDs for scene-get or scene-activate.' It also clarifies the meaning of the active scene. It does not explicitly list when not to use it, but for a parameterless list tool this 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.

scene-set-door-stateA
Idempotent
Inspect

Open, close, or lock a door on the scene. Get wall IDs from scene-get → walls[] where door=1 (normal door) or door=2 (secret door). Door states: 0=closed, 1=open, 2=locked. To let a token walk through a locked door: scene-set-door-state(wallId, 0) to unlock, then token-move with canOpenDoors=true. Secret doors (door=2) cannot be opened by token-move even with canOpenDoors — use scene-set-door-state directly.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateYesDoor state: 0=closed, 1=open, 2=locked
wallIdYesWall ID of the door (from scene-get → walls[].id where door >= 1)
sceneIdNoScene ID (uses active scene if omitted)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark the tool as non-read-only, idempotent, and non-destructive. The description adds useful behavioral context: door state values, normal vs. secret door behavior, and the token-move interaction. 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?

The description is moderately detailed but well-structured: purpose, wallId source, state legend, and a concrete workflow caveat. It is front-loaded and scannable, though the state-value sentence partially duplicates the parameter 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 3-parameter mutation tool with no output schema, the description provides all essential invocation context: where wallId comes from, what states exist, and when to use this tool over token-move. Return values and failure modes are not covered, but they are not critical here.

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 need not compensate for missing parameter docs. It does add meaningful context for wallId (how to obtain it and the door=1/door=2 distinction), but most parameter details are already fully captured 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 first sentence names exact actions (open, close, lock) and the exact resource (a door on the scene), which clearly distinguishes it from the many actor, token, combat, and scene-management siblings. It also connects wallId to scene-get, making the target unambiguous.

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

Usage Guidelines5/5

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

Provides explicit when/when-not guidance: unlock with scene-set-door-state before token-move with canOpenDoors=true, and warns that secret doors cannot be opened by token-move at all. This directly routes the agent to the correct tool in the right sequence.

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

token-createAInspect

Place a token on the scene for an actor. Coordinates are in pixels (top-left corner of grid cell). To convert grid position to pixels: pixel = gridCoord * gridSize. Use scene-get to find gridSize. Use actor-list or actor-filter to find actorId.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX position in pixels
yYesY position in pixels
scaleNoToken scale multiplier (default 1)
hiddenNoHide token from players
actorIdYesActor ID to create token for (use actor-list to find)
sceneIdNoScene ID (uses active scene if omitted)
rotationNoRotation in degrees (0-360)
elevationNoElevation in game units (for flying, multi-level)

TDQS

A4.2/5.0
Behavior3/5

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

Annotations only indicate the tool is non-read-only and non-idempotent. The description adds useful behavioral detail about pixel coordinates being relative to the top-left corner of the grid cell and provides the coordinate conversion formula. It does not disclose side effects beyond placement, but no annotation 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?

Three purposeful sentences with no filler. The core action appears first, followed by coordinate semantics and prerequisite lookup instructions. Information density is high and all content helps the agent call the tool correctly.

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 8-parameter schema is fully described and there is no output schema, the description covers the non-obvious relationships: coordinate conversion and ID lookup. The optional sceneId default is already documented in the schema. 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.

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 grid-to-pixel calculation and by explicitly connecting actorId to actor-list/actor-filter and gridSize to scene-get. This extra relational context 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 states a specific verb and resource: 'Place a token on the scene for an actor.' This clearly identifies a creation action and distinguishes it from sibling tools like token-move, token-update, and token-delete. The actor/scene framing also separates it from actor-create.

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 prerequisite guidance: use scene-get to find gridSize and actor-list or actor-filter to find actorId. It also explains how to convert grid coordinates to pixels. It does not explicitly name alternatives like token-move or token-update for when-not-to-use, but the creation 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.

token-deleteA
Destructive
Inspect

Remove a token from the scene. Use token-list to find tokenId. This removes the token from the map, not the actor from the world.

ParametersJSON Schema
NameRequiredDescriptionDefault
sceneIdNoScene ID (uses active scene if omitted)
tokenIdYesToken ID (use token-list to find)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already provide destructiveHint=true and readOnlyHint=false, so the description doesn't need to restate destructiveness. It adds useful context beyond annotations: the scope of deletion (map vs. world) and the dependency on token-list for finding the ID. This helps the agent anticipate the precise side effect.

Agents need to know what a tool does to the world before 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 deliver the core action, a prerequisite, and a crucial scope clarification with zero filler. The 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.

Completeness5/5

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

For a simple destructive operation with two parameters, the description, combined with the annotations and 100% schema coverage, fully covers what the agent needs: what is removed, how to find the tokenId, and that sceneId is optional via the schema. A no-output-schema delete tool needs no return-value documentation.

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 both parameters are already documented clearly in the input schema. The description reinforces that tokenId comes from token-list but adds no new semantic detail 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 states a specific verb ('Remove') and resource ('a token from the scene'), and explicitly clarifies that this removes the token from the map, not the actor from the world, distinguishing it from the sibling actor-delete tool. The purpose is unambiguous and immediately understandable.

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 concrete prerequisite ('Use token-list to find tokenId') and the scope clarification ('not the actor from the world') implicitly warns against using this tool when the intent is to delete the underlying actor. It doesn't name the alternative tool explicitly, but the guidance is sufficient for correct selection among siblings.

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

token-listA
Read-onlyIdempotent
Inspect

List all tokens on a scene with positions, HP, AC, conditions, and disposition. HP is read from the token (not the master Actor) — correct for unlinked tokens after damage. Omit sceneId to get tokens from the active scene. Returns token IDs needed for token-move, token-update, token-delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
sceneIdNoScene ID (omit for active scene)

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 safety. The description adds valuable context by specifying that HP is read from the token (not the master Actor) and that it returns IDs for downstream operations, which are not captured in the schema or annotations. No contradictions.

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

Conciseness5/5

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

Three sentences with no filler. The main purpose is front-loaded, followed by a useful nuance about HP source and a practical usage note. Every sentence earns its place, and the structure is clean and 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 simple listing tool with one optional parameter and no output schema, the description is complete: it states what is returned, how to target the active scene, and how the output is used. The HP nuance adds important context. Minor gaps like pagination or limits are not critical given the tool's simplicity.

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

Parameters3/5

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

The only parameter, sceneId, has a schema description ('Scene ID (omit for active scene)') that fully covers its meaning. The tool description repeats this same guidance without adding new semantics, so it does not add value beyond the schema. 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 clear verb (List) and resource (tokens on a scene) with specific attributes (positions, HP, AC, conditions, disposition). It differentiates from sibling token tools like token-move, token-update, and token-delete by noting it returns the IDs needed for those operations, making its 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?

It explains when to use the tool (to get tokens) and how to target the active scene by omitting sceneId, while also noting the returned IDs are prerequisites for other token operations. It does not explicitly state when not to use it or name alternatives, but the context is clear enough for an agent to decide.

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

token-moveAInspect

Move a token to new coordinates (pixels, top-left corner; pixel = gridCoord * gridSize). Use token-list to find tokenId. Pathfinding routes around walls and closed doors; the response reports pathCost (cells) when a detour was needed. Large+ tokens need corridors wide enough for their footprint. pathCost * gridDistance > speed means the move exceeds one turn. Closed doors count as walls unless the user explicitly asks to open doors (canOpenDoors=true; doorsOpened[] then lists the wall IDs). Locked (ds=2) and secret (door=2) doors are always impassable: use scene-set-door-state first.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesNew X position in pixels
yYesNew Y position in pixels
animateNoAnimate movement (default: true)
tokenIdYesToken ID (use token-list to find)
canOpenDoorsNoOpen closed doors along the path. Only when the user explicitly asks; default false.

TDQS

A5/5.0
Behavior5/5

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

Annotations provide only readOnlyHint=false, destructiveHint=false, and idempotentHint=false. The description adds significant behavioral context: movement is a state change, pathfinding routes around walls/closed doors, detours are reported via pathCost, speed limits are checked via pathCost * gridDistance > speed, closed doors count as walls unless opened, and locked/secret doors are always impassable. This goes far beyond annotations and discloses all relevant side effects and constraints.

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

Conciseness5/5

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

Despite its length, every sentence earns its place. It starts with the core purpose, then flows logically through coordinate conversion, token lookup, pathfinding behavior, speed limits, and door handling. No redundancy or filler; the structure is efficient and front-loaded with the most critical usage 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?

Given the tool's complexity (pathfinding, door states, speed checks) and the absence of an output schema, the description covers all necessary details: how coordinates are computed, how to find tokenId, what the response contains (pathCost, doorsOpened), and when to defer to scene-set-door-state. An agent has everything needed to invoke the tool correctly without external knowledge.

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 enriches every parameter. It explains the coordinate system (pixels, top-left corner) and the pixel-to-grid relationship, clarifies that tokenId comes from token-list, defines canOpenDoors as only opening when user explicitly asks, and explains the result fields (doorsOpened[], pathCost). This adds semantic meaning that the schema alone does not 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 states a specific verb and resource: 'Move a token to new coordinates', with precise coordinate semantics (pixels, top-left corner; pixel = gridCoord * gridSize). It clearly differentiates from sibling tools like token-list (to find tokenId) and scene-set-door-state (for locked/secret doors), leaving no ambiguity about what this 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 Guidelines5/5

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

Explicitly instructs to use token-list to find tokenId, and explains when pathfinding detours are needed (pathCost reported). It gives conditions for opening doors (canOpenDoors=true only when user explicitly asks) and for locked/secret doors (use scene-set-door-state first). This is comprehensive guidance on when and how to use the tool versus alternatives.

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

token-updateAInspect

Update token properties: visibility, elevation, rotation. Use token-list to find tokenId. Position is NOT changed here — use token-move (pathfinding, door handling) to relocate a token.

ParametersJSON Schema
NameRequiredDescriptionDefault
hiddenNoShow/hide from players
tokenIdYesToken ID (use token-list to find)
rotationNoRotation in degrees (0-360)
elevationNoElevation in game units

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already communicate that this is a write operation (readOnlyHint=false) and not destructive. The description adds useful scoping by stating that position is not updated here, but does not disclose additional behavioral details such as whether omitted properties are left unchanged, permission requirements, or what the API returns.

Agents need to know what a tool does to the world before 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 no filler. It front-loads the main action, then provides the prerequisite lookup method, and closes with an explicit exclusion and pointer to the correct alternative tool.

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

Completeness5/5

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

For a relatively simple update tool with full schema coverage, the description is complete: it identifies what properties are changed, which ones are not, how to find the required parameter, and which sibling handles the excluded behavior. No output schema exists, but the description adequately supports 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 has 100% parameter description coverage, so each parameter is already documented. The description adds only a high-level mapping to 'visibility, elevation, rotation' and repeats the token-list hint, without providing substantial new 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 ('Update'), a clear resource ('token properties'), and explicitly enumerates the updated fields: visibility, elevation, rotation. It also distinguishes itself from token-move by saying position is not changed here, making it easy for an agent to select the correct sibling tool.

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: use token-list to find the tokenId, and use token-move instead when repositioning is needed. This clearly communicates when to use this tool versus the relevant alternative.

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

ui-notifyAInspect

Show a toast notification in the Foundry UI of every connected client (ui.notifications): a transient banner, not a chat message (use chat-send for chat). type controls the colour/severity (default info). permanent keeps it on screen until dismissed.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoSeverity/colour: info (default), warn, error, success.
messageYesNotification text.
permanentNoWhen true, the notification stays until dismissed instead of auto-hiding.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the description doesn't need to restate those. The description adds useful behavioral context: the notification is transient by default, appears for every connected client, and 'permanent' keeps it on screen until dismissed. It also clarifies that 'type' controls colour/severity. 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 two sentences with zero waste. It front-loads the core purpose, then adds the key distinction from chat-send and the parameter semantics. 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 notification tool with 3 parameters, full schema coverage, and no output schema, the description is complete enough. It covers the tool's scope, the key alternative, and the behavioral effect of the parameters. The only minor gap is that it doesn't mention whether the notification is visible to the GM only or all players, but 'every connected client' already implies broad visibility.

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 (message, type, permanent). The description adds a little extra meaning by explaining that 'type' controls colour/severity and that 'permanent' keeps it on screen until dismissed, but it doesn't add substantial new semantics 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 states a specific verb ('Show a toast notification'), a specific resource ('in the Foundry UI of every connected client (ui.notifications)'), and explicitly distinguishes itself from chat-send ('not a chat message'). This clearly differentiates it from sibling tools like chat-send and chat-update.

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 ('Show a toast notification...') and when not to ('not a chat message (use chat-send for chat)'). It also explains the effect of the 'permanent' parameter, giving clear context for choosing this tool over alternatives.

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

uuid-resolveA
Read-onlyIdempotent
Inspect

Resolve any ABSOLUTE Foundry UUID to its full document in one call: world documents ("Actor."), compendium documents ("Compendium...."), and embedded/nested ones ("Actor..Item.", journal pages). Returns core fields plus the complete raw document data. Requires bridge module 8.11.0+.

UUIDs are NOT guessed — take them from the uuid fields of other tools: compendium-browse, compendium-page-search, the compendium filter tools, or reference fields inside a previously resolved document (e.g. a dnd5e class item's system.advancement[].configuration.items[].uuid).

WHEN TO USE

  • Walk a reference graph one hop per call: class → granted features → their effects; spell-list page → individual spells.

  • Fetch the full text of a page found via compendium-page-search.

  • Inspect any document when a UUID is all you have.

LIMITS

  • Relative UUIDs (starting with ".") are not supported.

  • Both a missing and a malformed UUID return "Document not found for UUID: ".

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesAbsolute Foundry UUID, e.g. "Actor.abc123", "Compendium.dnd5e.classes.Item.xyz", "Actor.abc.Item.def".

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, the description discloses the required module version, that returns include raw document data, that UUIDs are not guessed, and that missing or malformed UUIDs return a specific error message. This is valuable 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?

The description is front-loaded with the core purpose, then organized into WHEN TO USE and LIMITS sections. Every sentence adds operational value, and there is 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?

Given a single parameter and no output schema, the description explains what is returned, the supported UUID forms, the error behavior, and required module version. An agent has enough information to invoke the tool correctly and interpret results.

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 'uuid' parameter with examples, so the baseline is 3. The description adds useful guidance: UUIDs must be absolute, should be sourced from other tools' uuid fields, and relative UUIDs are unsupported. This goes beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: resolve any absolute Foundry UUID to its full document. It enumerates supported UUID shapes (Actor, Compendium, embedded), which differentiates it from sibling tools that target specific document types or require structured lookups.

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 'WHEN TO USE' section gives explicit scenarios such as walking a reference graph or fetching a page found by compendium-page-search. It also has a LIMITS section excluding relative UUIDs, but it does not explicitly name alternative sibling tools for cases where a structured lookup would be preferable.

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

world-infoA
Read-onlyIdempotent
Inspect

Get world overview: game system, content counts, compendium list. Call FIRST when starting a session to understand available content. Then use actor-list, journal-list, compendium-list to explore specific content.

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 value by specifying the kind of information returned (game system, content counts, compendium list), which is useful 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 two sentences with no wasted words. The first sentence front-loads the purpose and content, and the second sentence provides usage context and alternatives. 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?

For a zero-parameter, read-only overview tool with no output schema, the description is complete. It states what the tool provides, when to call it, and how to proceed afterward. 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?

The tool has zero parameters, and the schema coverage is 100% (empty properties object). Per baseline for 0-parameter tools, a score of 4 is appropriate. The description adds no parameter details because none exist, and none 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 states a specific verb ('Get') and resource ('world overview') and enumerates exactly what it returns: game system, content counts, compendium list. It also distinguishes itself from sibling list tools by positioning it as an overview rather than a detailed explorer.

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 FIRST when starting a session and then names the specific alternatives (actor-list, journal-list, compendium-list) for exploring specific content. This provides clear when-to-use and when-not-to-use guidance.

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

world-item-createAInspect

Create a new item in the world's Items Directory (game.items) — distinct from item-create (which adds to an actor's inventory). Use for shared loot, master copies, or items that exist independently of any actor. Folder is the folder ID (use folder-list to discover IDs); responses return the folder NAME (Foundry wire convention).

Valid type values for D&D 5e: weapon, equipment, consumable, tool, container, loot, spell, feat, background, race, class, subclass, feature. Other systems will have different types — module rejects unknown ones.

system data is the D&D 5e blob (rarity, weight, price, identified, attunement, etc.). See world-item-get response for canonical shape.

ParametersJSON Schema
NameRequiredDescriptionDefault
imgNoImage path or URL
nameYesItem name
typeYesD&D 5e item type. weapon/equipment/consumable/tool/container/loot/spell/feat/background/race/class/subclass/feature.
folderNoFolder ID (NOT name). Omit for root.
systemNoD&D 5e system data partial: rarity, weight {value,units}, price {value,denomination}, identified, attunement, etc. Foundry deep-merges with defaults.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already mark readOnlyHint=false, so mutation is expected. The description goes further by disclosing the folder ID-vs-NAME wire convention, that unknown item types are rejected, and that system data is deep-merged with Foundry defaults. These are useful behavioral details beyond the annotation booleans.

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

Conciseness5/5

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

The description is tight, front-loaded with the key sibling distinction, and each sentence earns its place by adding operational detail rather than restating schema fields.

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 create tool with a nested system object and no output schema, it covers required parameters, type constraints, folder handling, and a reference for the system blob shape. It could detail the full return payload beyond the folder name convention, but the guidance 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?

Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by clarifying the folder response convention, enumerating valid type values for D&D 5e, and pointing to world-item-get for the canonical system data shape.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 action ('Create'), the resource ('the world's Items Directory (game.items)'), and immediately differentiates from the sibling item-create, which adds to an actor's inventory. This removes any ambiguity about what the tool targets.

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 names the alternative tool (item-create) and gives the selection condition: use this for shared loot, master copies, or items independent of any actor. It also provides a practical pointer to folder-list for discovering folder IDs.

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

world-item-deleteA
Destructive
Inspect

Permanently delete a world item from the Items Directory. Cannot be undone — Foundry has no item undo. Use world-item-filter or world-item-get FIRST to confirm the right id.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesWorld item ID to delete

TDQS

A4.5/5.0
Behavior5/5

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

The annotations already mark destructiveHint=true ratio, but the description goes further by stating 'Cannot be undone' and explaining 'Foundry has no item undo.' This directly informs the agent about the irreversible consequence beyond what 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.

Conciseness5/5

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

Three concise sentences: the operation, the irreversibility warning, and the prerequisite verification step. Every sentence earns its place, and the most critical information is front-loaded.

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

Completeness5/5

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

For a simple one-parameter delete tool with destructive annotations already present, the description fully covers what the tool does, why caution is needed, and how to use it safely. No output schema is necessary for a deletion 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%, with itemId described as 'World item ID to delete', so the schema already documents the only parameter. The description adds context about confirming the ID but no additional semantic detail about the parameter format or value.

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

Purpose5/5

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

States a specific verb ('delete') and resource ('world item from the Items Directory'), making the operation unambiguous. It also adds a key qualifier ('Permanently') and distinguishes the scope from generic item operations 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?

Explicitly instructs the agent to use world-item-filter or world-item-get FIRST to confirm the correct ID, which is clear actionable guidance for safe use. It does not mention alternatives or exclusions, 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.

world-item-filterA
Read-onlyIdempotent
Inspect

Search the world's Items Directory (game.items) with D&D 5e structured filters (dnd5e worlds only). Returns paginated {id, name} entries; call world-item-get for full data. Filters combine with AND, values inside one array with OR. NOT for an actor's inventory (use item-list) and NOT for compendiums (use dnd5e-compendium-filter-items).

CRITICAL DATA FORMATS

  • rarity is camelCase: veryRare (not "very rare", "epic" or "mythic"). spellSchool is the full word (evocation, not "evo").

  • Weight in lb, price in gp (currencies normalized on read). spellLevel 0..9 (0 = cantrip), spells only.

  • Ranges are {min?, max?}, inclusive. Items lacking a filtered field are silently excluded, so rarity + spellLevel matches only rare spells.

  • Pagination: limit 1..200 (default 50), offset; the response has total and hasMore.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoSubstring of item name, case-insensitive.
typeNoItem types (OR).
limitNoPage size 1..200, default 50.
priceNoPrice range in gp.
folderNoFolder by id or name; recursive includes subfolders.
offsetNoSkip first N results.
rarityNoRarity (OR), camelCase: veryRare.
weightNoWeight range in lb.
identifiedNoFilter by the identified flag.
spellLevelNoSpell level 0..9 (0 = cantrip); spells only.
isContainerNoOnly containers.
spellSchoolNoSpell schools (OR), full words; spells only.
hasActivitiesNoOnly items with usable activities.
requiresAttunementNoOnly items that require attunement.

TDQS

A5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so safety is known. The description adds substantial behavioral context beyond that: filters combine with AND, array values with OR; items lacking a filtered field are silently excluded; pagination semantics (limit, offset, total, hasMore); and data format conversions (currency normalization). 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 structured with a clear opening, explicit exclusions, and a 'CRITICAL DATA FORMATS' section. Every sentence carries essential information—no filler or redundancy. The density is justified given the tool's complexity (14 parameters, nested objects). It is front-loaded with the core purpose before diving into 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 14-parameter tool with no output schema, the description covers all necessary ground: return format (paginated {id,name} with total/hasMore), filter combination rules, data format requirements, and usage boundaries. It also explains edge cases like silent exclusion. An agent has everything needed to call it correctly without additional inference.

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 enriches semantics with critical data formats: rarity camelCase (veryRare), spellSchool full words, weight in lb, price in gp, spellLevel 0..9 (0 = cantrip), and range inclusivity. It also warns about silent exclusion, which is essential for correct filter construction. This goes well 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-resource pair: 'Search the world's Items Directory (game.items)' and immediately scopes to D&D 5e worlds. It states the exact return shape (paginated {id, name}) and directs to world-item-get for full data, clearly distinguishing it from actor inventory (item-list) and compendium (dnd5e-compendium-filter-items) 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 declares when not to use the tool: 'NOT for an actor's inventory (use item-list) and NOT for compendiums (use dnd5e-compendium-filter-items).' It also implies the primary use case: searching world items with D&D 5e structured filters. The 'dnd5e worlds only' constraint is clearly stated, giving the agent unambiguous guidance on selection.

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

world-item-getA
Read-onlyIdempotent
Inspect

Get full ItemData for a single world item — id, uuid, name, type, image, folder NAME (read-side), and the complete system blob with rarity, weight, price, identified, attunement, damage, range, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesWorld item ID (from world-item-filter).

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 value by specifying the exact return payload (full ItemData with system blob fields), which is useful behavioral context beyond the annotations. However, it doesn't disclose potential error conditions (e.g., what happens if the itemId doesn't exist) or any rate limits, but for a simple read operation with strong annotations, this is adequate.

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

Conciseness5/5

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

The description is a single, information-dense sentence that front-loads the core purpose ('Get full ItemData for a single world item') and then enumerates the return fields. Every word earns its place; there is no fluff or repetition. The parenthetical '(read-side)' adds a useful nuance about the folder name being the read-side representation, which is valuable without being verbose.

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

Completeness4/5

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

For a simple single-item read tool with one parameter, strong annotations (readOnly, idempotent, non-destructive), and no output schema, the description is nearly complete. It tells the agent what it returns, where the ID comes from, and the annotations cover safety. The only minor gap is the lack of explicit error behavior (e.g., not-found handling), but that is not critical for a read operation. The description 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.

Parameters3/5

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

Schema description coverage is 100%: the only parameter, itemId, is described as 'World item ID (from world-item-filter).' The description adds a small amount of context by clarifying that the ID comes from world-item-filter, which is helpful for the agent to know how to obtain it. However, the description doesn't add much beyond the schema's own description, so the baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose: retrieving full ItemData for a single world item. It enumerates the specific fields returned (id, uuid, name, type, image, folder NAME, and the complete system blob with examples), which distinguishes it from sibling tools like world-item-filter (which lists/filters items) and world-item-update (which modifies items). The verb 'Get' plus the resource 'world item' is specific and unambiguous.

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

Usage Guidelines4/5

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

The description implies this is the read tool for a single world item, and the parameter description 'World item ID (from world-item-filter)' provides a clear source for the required ID, effectively guiding the agent to first use world-item-filter to obtain the ID. However, it does not explicitly state when to use this tool versus alternatives like world-item-filter or item-get, nor does it mention exclusions (e.g., 'use world-item-filter to list items'). The context is clear 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.

world-item-updateAInspect

Update a world item — name, image, folder, or system data. Folder is TRI-STATE: omit to leave alone, set string to set a new folder, set EXPLICIT null to move the item to root. Pass clearFolder: true if your client cannot send literal null and you want the move-to-root behaviour. system is deep-merged by Foundry — pass partial paths to surgically modify nested fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
imgNoNew image path. Omit to leave unchanged.
nameNoNew name. Omit to leave unchanged.
folderNoTri-state: omit = leave alone, string = set folder ID, null = move to root.
itemIdYesWorld item ID to update
systemNoSystem-data partial. Deep-merged into existing — pass only the keys you want to change.
clearFolderNoAlternative move-to-root signal for clients that cannot send literal JSON null. When true, overrides any folder value.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations, the description discloses non-obvious behavior: folder is tri-state with omit/string/null semantics, clearFolder overrides folder, and system is deep-merged by Foundry allowing surgical partial updates. This significantly exceeds what readOnlyHint:false alone conveys.

Agents need to know what a tool does to the world before 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 with no filler. The purpose is front-loaded, and each nuance (folder, clearFolder, system merge) earns its place. It is thorough without being bloated.

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

Completeness4/5

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

Given the complexity of a 6-parameter update tool with nested objects, the description covers all tricky semantics: folder tri-state, clearFolder override, and deep-merge of system. The only minor gaps are unspecified return behavior and no mention of prerequisites/permissions, but no output schema exists and these are not critical to correct invocation.

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

Parameters5/5

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

Although the schema already covers 100% of parameters, the description adds essential meaning beyond the schema: it explains the tri-state folder behavior, the clearFolder fallback for clients unable to send literal null, and the deep-merge partial-paths behavior for system. These details are critical for correct invocation.

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

Purpose5/5

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

The description opens with 'Update a world item — name, image, folder, or system data', naming a specific verb, resource, and the fields it affects. This clearly differentiates it from world-item-create/delete/filter/get and even from item-update via the 'world item' resource scope.

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

Usage Guidelines3/5

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

The tool's use is implied correctly by its name and opening phrase, but it never explicitly says when to prefer world-item-update over alternatives like item-update. It does provide conditional guidance for clearFolder ('if your client cannot send literal null'), which is helpful but not tool-selection guidance.

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

world-time-advanceAInspect

Advance the in-world clock by a number of seconds (game.time.advance). Use NEGATIVE seconds to rewind. Common deltas: 6 (one combat round), 60 (a minute), 3600 (an hour), 86400 (a day). Affects time-based effects/durations for all clients. Returns the new world time.

ParametersJSON Schema
NameRequiredDescriptionDefault
secondsYesDelta in seconds. Negative rewinds the clock.

TDQS

A4.5/5.0
Behavior4/5

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

It discloses that the operation affects time-based effects/durations for all clients, which is important global side-effect context beyond the annotations. It also states the return value, which is useful because no output schema exists. The description does not contradict 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?

Four short sentences, each earning its place: the core action, negative-value behavior, useful examples, and the global side effect plus return value. No filler or redundant restatement of the title.

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

Completeness5/5

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

For a single-parameter tool with no output schema, the description covers everything an agent needs: what the tool does, how to reverse it, common delta values, global effects, and what is returned. No important gap remains.

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 seconds parameter at 100% coverage, so the baseline is 3. The description adds value by clarifying negative values rewind the clock and providing concrete common deltas for combat rounds, minutes, hours, and days.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 (Advance) and resource (in-world clock) with a precise unit of change (seconds). It also distinguishes itself from world-time-set/get by framing the action as a relative delta rather than an absolute set.

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 primary usage clear: advance or rewind the world clock by a delta in seconds. It provides common delta values but does not explicitly contrast this tool with world-time-set or world-time-get, so exclusion guidance is missing.

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

world-time-getA
Read-onlyIdempotent
Inspect

Get the current in-world time (game.time.worldTime) as whole seconds since the world epoch, plus the same value broken down into days / hours / minutes / seconds so no conversion is needed. Use to read the clock before world-time-advance or world-time-set.

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 about the output format (whole seconds plus breakdown) and the phrase 'so no conversion is needed' clarifies the value proposition. No contradictions or missing safety disclosures.

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

Conciseness5/5

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

Two sentences with no filler. The first sentence states the function and output, the second gives usage context. Information is 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.

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 getter with rich annotations, the description fully covers what an agent needs: what it returns, in what units, and when to use it. No output schema exists, but the description adequately describes the return content. 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?

The tool has zero parameters, and schema description coverage is trivially 100%. There is nothing for the description to explain about parameters, and the baseline for 0-parameter tools is 4. The description does not need to add parameter-specific detail.

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

Purpose5/5

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

The description clearly states the tool retrieves the current in-world time (game.time.worldTime) and provides it in both whole seconds and broken-down components. It also explicitly distinguishes itself from sibling tools by noting it is for reading the clock before world-time-advance or world-time-set.

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

Usage Guidelines5/5

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

The description explicitly says 'Use to read the clock before world-time-advance or world-time-set,' giving precise context for when to invoke this tool versus its mutation siblings. This is direct and actionable.

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

world-time-setA
Idempotent
Inspect

Set the in-world clock to an ABSOLUTE value in seconds since the world epoch (game.time.set). Must be >= 0. To make a relative change use world-time-advance instead. Affects all connected clients.

ParametersJSON Schema
NameRequiredDescriptionDefault
worldTimeYesAbsolute world time in seconds (>= 0).

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already supply readOnlyHint=false, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds useful behavioral context beyond annotations: 'Affects all connected clients' indicates a global-side-effect, and it reveals the underlying API call. It doesn't contradict 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 short sentences, each earning its place: operation, constraint, alternative, and side-effect. The main purpose is front-loaded, and there is 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 single-parameter setter with no output schema, this is complete. It explains what the value means, the valid range, the sibling tool for relative changes, and the impact on all clients. 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%, so the schema already documents worldTime as an absolute number >= 0. The description adds meaning by clarifying 'seconds since the world epoch', which specifies the reference frame, and reinforces the absolute-vs-relative distinction. This adds value over the bare 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: 'Set the in-world clock to an ABSOLUTE value in seconds since the world epoch.' It also names the underlying game.time.set function and explicitly distinguishes itself from the sibling world-time-advance, 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 Guidelines5/5

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

It gives explicit when-to-use and when-not-to-use guidance: 'To make a relative change use world-time-advance instead.' This directly tells an agent that this tool is for absolute values only and routes to the correct alternative, which is exactly what usage guidelines should do.

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. 121 tool updates
    • First observedactor-create
    • First observedactor-create-from-compendium
    • First observedactor-delete
    • First observedactor-filter
    • First observedactor-get
    • First observedactor-list
    • First observedactor-update
    • First observedcanvas-pan
    • First observedcanvas-ping
    • First observedchat-clear
    • First observedchat-delete
    • First observedchat-export
    • First observedchat-list
    • First observedchat-send
    • First observedchat-update
    • First observedcombat-add-combatant
    • First observedcombat-create
    • First observedcombat-delete
    • First observedcombat-get
    • First observedcombat-next-turn
    • First observedcombat-previous-turn
    • First observedcombat-remove-combatant
    • First observedcombat-roll-all-initiative
    • First observedcombat-roll-initiative
    • First observedcombat-set-combatant-defeated
    • First observedcombat-set-initiative
    • First observedcombat-set-turn
    • First observedcombat-start
    • First observedcombat-toggle-combatant-visibility
    • First observedcompendium-browse
    • First observedcompendium-document-get
    • First observedcompendium-document-get-raw
    • First observedcompendium-list
    • First observedcompendium-page-search
    • First observedcompendium-search
    • First observeddnd5e-compendium-filter-actors
    • First observeddnd5e-compendium-filter-items
    • First observeddnd5e-item-activate
    • First observeddnd5e-item-use
    • First observeddnd5e-roll-ability
    • First observeddnd5e-roll-attack
    • First observeddnd5e-roll-damage
    • First observeddnd5e-roll-save
    • First observeddnd5e-roll-skill
    • First observedeffect-create
    • First observedeffect-delete
    • First observedeffect-list
    • First observedeffect-toggle-status
    • First observedeffect-update
    • First observedfolder-create
    • First observedfolder-delete
    • First observedfolder-get
    • First observedfolder-list
    • First observedfolder-update
    • First observedgame-pause
    • First observedgame-pause-get
    • First observedgame-resume
    • First observedhandout-template-get
    • First observedhandout-template-list
    • First observeditem-create
    • First observeditem-create-from-compendium
    • First observeditem-delete
    • First observeditem-list
    • First observeditem-update
    • First observedjournal-create
    • First observedjournal-delete
    • First observedjournal-folder-list
    • First observedjournal-get
    • First observedjournal-list
    • First observedjournal-page-create
    • First observedjournal-page-delete
    • First observedjournal-page-get
    • First observedjournal-page-update
    • First observedjournal-search
    • First observedjournal-show
    • First observedjournal-update
    • First observedpf2e-cast-spell
    • First observedpf2e-compendium-filter-actors
    • First observedpf2e-compendium-filter-items
    • First observedpf2e-decrease-condition
    • First observedpf2e-get-conditions
    • First observedpf2e-increase-condition
    • First observedpf2e-list-strikes
    • First observedpf2e-post-item
    • First observedpf2e-remove-condition
    • First observedpf2e-roll-perception
    • First observedpf2e-roll-save
    • First observedpf2e-roll-skill
    • First observedpf2e-roll-strike
    • First observedpf2e-roll-strike-damage
    • First observedpf2e-set-condition
    • First observedpf2e-use-consumable
    • First observedroll-dice
    • First observedroll-perception
    • First observedroll-table-create
    • First observedroll-table-delete
    • First observedroll-table-get
    • First observedroll-table-list
    • First observedroll-table-reset
    • First observedroll-table-roll
    • First observedroll-table-update
    • First observedscene-activate
    • First observedscene-get
    • First observedscene-list
    • First observedscene-set-door-state
    • First observedtoken-create
    • First observedtoken-delete
    • First observedtoken-list
    • First observedtoken-move
    • First observedtoken-update
    • First observedui-notify
    • First observeduuid-resolve
    • First observedworld-info
    • First observedworld-item-create
    • First observedworld-item-delete
    • First observedworld-item-filter
    • First observedworld-item-get
    • First observedworld-item-update
    • First observedworld-time-advance
    • First observedworld-time-get
    • First observedworld-time-set

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources