Skip to main content
Glama

Server Quality Checklist

83%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v2.10.2

  • Disambiguation4/5

    Most tools have clearly distinct purposes: search_* vs get_* vs list_*, plus unique tools like ddb_login and ddb_rate_encounter. Minor overlap exists between ddb_search_site and the specific compendium searches, and between ddb_get_rules and ddb_get_condition, but descriptions help clarify.

    Naming Consistency4/5

    The ddb_ prefix and common verbs (search_*, get_*, list_*) create a predictable pattern. Deviations like ddb_character_lookup (instead of ddb_lookup_character) and single-word verbs (ddb_login, ddb_navigate, ddb_interact) break the convention slightly, but the overall scheme remains readable.

    Tool Count2/5

    With 35 tools, this is well beyond the 25+ threshold and feels heavy for an agent to navigate. While the domain is broad, many tools could be consolidated (e.g., a single compendium search with type filters) or the server could be split into focused servers.

    Completeness3/5

    The tool surface is extensive, covering characters, campaigns, compendium searches, rules, books, browser automation, and encounter tools. However, there are notable gaps: you can search for feats, races, classes, backgrounds, and class features, but there are no corresponding ddb_get_* tools for these categories (only ddb_character_lookup which requires a character). This makes it impossible to directly retrieve full details for those compendium items.

  • Average 4.3/5 across 35 of 35 tools scored. Lowest: 3.3/5.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 29 commits in the last 12 weeks
    • Last stable release on
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI is passing
  • This repository is licensed under MIT License.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • This repository includes a glama.json configuration file.

  • This server has been verified by its author.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior3/5

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

    Annotations already declare readOnlyHint=true and openWorldHint=true, which tell the agent this is a safe, read-only operation that may access external data. The description adds no additional behavioral context (e.g., result format, live-site nature), but it does not contradict the annotations, so it meets the minimum standard.

    Agents need to know what a tool does to the world before 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 verb ('Search') and resource ('D&D Beyond') and lists the covered categories. Every word adds value, and there is no redundancy or filler.

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

    Completeness3/5

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

    For a simple two-parameter search tool, the description combined with the schema and annotations is adequate. However, it does not explain what the tool returns (no output schema exists) or guide the user toward specialized sibling tools for narrower searches, leaving some contextual gaps.

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

    Parameters3/5

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

    Schema description coverage is 100%; both 'query' and 'category' have descriptive text, including examples and an enum. The tool description itself adds no parameter semantics beyond what the schema already provides, matching the baseline for high coverage.

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

    Purpose4/5

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

    The description clearly states the tool searches D&D Beyond for multiple content types (spells, monsters, magic items, races, classes, feats) with a specific verb and resource scope. However, it does not distinguish itself from the many sibling category-specific search tools (e.g., ddb_search_spells, ddb_search_monsters), so it's clear but lacks explicit differentiation.

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

    Usage Guidelines2/5

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

    The description provides no guidance on when to use this general search tool versus the specialized sibling tools like ddb_search_monsters or ddb_search_spells. It does not mention that this tool covers multiple categories, nor does it suggest using category-specific tools for narrower searches.

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

  • Behavior3/5

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

    The annotations already declare readOnlyHint=false, destructiveHint=true, and idempotentHint=true, so the agent knows this is a mutating, potentially destructive operation. The description adds the login requirement and the 'full JSON data' detail, but it does not disclose behaviors like file overwriting or side effects beyond the annotation-provided 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 two short sentences, with the core purpose front-loaded in the first sentence and the login prerequisite in the second. Every word adds value; there is no repetition or filler, making it highly concise and well-structured.

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

    Completeness4/5

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

    Given the tool's simplicity (2 params, 1 required) and the schema's full parameter documentation, the description covers the essential context: what it does, the auth prerequisite, and the output type. No output schema exists, so the description need not explain return values. It is complete for this context, though it could mention potential file overwriting behavior, which is partially covered by 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?

    The input schema has 100% description coverage, with both parameters fully described. The description adds no extra meaning to the parameters beyond what the schema already states (e.g., output_path defaults and restrictions are in the schema). Baseline of 3 is appropriate given the schema carries the heavy lifting.

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

    Purpose5/5

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

    The description states a specific action ('Download'), a clear resource ('a character's full JSON data'), and a destination ('to a local file'). This clearly distinguishes it from sibling tools like ddb_get_character_raw or ddb_get_character, which likely retrieve data without saving to a file.

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

    Usage Guidelines3/5

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

    The description implies usage when a local file copy is needed, but it does not explicitly state when to use this tool over alternatives. It provides a useful prerequisite ('run ddb_login first') but no exclusions or mentions of sibling tools, so guidance is only implied, not explicit.

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

  • Behavior3/5

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

    Annotations already indicate read-only and open-world behavior. The description adds context about login requirement and the scope of results (hit die, spellcasting, subclasses), but does not disclose return format, pagination limits, or other behavioral details beyond what annotations provide.

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

    Conciseness5/5

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

    The description is two concise sentences, front-loading the primary purpose before stating the login prerequisite. Every word adds value, with no redundancy or filler.

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

    Completeness4/5

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

    Given the tool's simplicity, good annotations, and complete schema, the description covers the essential purpose and prerequisite. It does not fully describe the return format, but that is partially implied by the mention of hit die, spellcasting, and subclasses. It is complete enough for effective 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?

    The input schema has 100% description coverage for all three parameters (name, limit, offset), so the description does not need to add parameter-level detail. It adds no extra meaning beyond the schema, which already defines each parameter clearly.

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

    Purpose5/5

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

    The description clearly states the tool searches D&D Beyond classes and specifies the key content (hit die, spellcasting, subclasses). This distinguishes it from sibling tools like ddb_search_spells or ddb_search_monsters, which target different entity types.

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

    Usage Guidelines3/5

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

    It gives a clear prerequisite (requires login and to run ddb_login first) but does not explicitly compare to alternative tools or state when not to use it. The usage context is implied by the resource type, but no exclusions or alternatives are mentioned.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true and openWorldHint=true, signaling a safe read operation. The description adds a behavioral requirement: the need for login, which is valuable context not present in 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-sentence description, front-loaded with the main purpose and followed by a necessary prerequisite. No fluff.

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

    Completeness5/5

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

    The tool is simple (1 parameter, no output schema) and annotated as read-only/open-world. The description covers what the tool does, what it returns (campaign info and player characters), and the login prerequisite. This 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?

    The input schema fully documents the single parameter campaign_id with a description ('The D&D Beyond campaign ID (found in the campaign URL)'), achieving 100% schema coverage. The description adds no additional parameter details beyond what the schema provides.

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

    Purpose4/5

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

    The description clearly states the verb 'Fetch' and the resource 'campaign information including player characters'. It is specific to a single campaign by ID (implied by the parameter), but does not explicitly differentiate from sibling tools like ddb_list_campaigns or ddb_get_party.

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

    Usage Guidelines3/5

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

    The description provides an explicit prerequisite: 'Requires login — run ddb_login first if you haven't already.' However, it does not mention when to use this tool over alternatives (e.g., ddb_list_campaigns, ddb_get_party), so usage context 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.

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true and openWorldHint=true, establishing the safety profile. The description adds a meaningful behavioral constraint by noting 'Requires login,' which is not captured in the annotations, and clarifies the item categories it handles. While it doesn't discuss error handling, the added auth requirement justifies a strong 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?

    The description is concise and well-structured: two sentences with no filler. The first sentence immediately states the action and object, while the second covers scope and authentication. Every clause earns its place, and the key information is front-loaded.

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

    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 lookup tool, the description is complete: it states the return value ('full stats and description'), the supported item types, and the login requirement. Annotations cover safety, and the absence of an output schema is compensated by the clear description of what is returned. It doesn't detail exact stat fields, but that is acceptable for the tool's low complexity.

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

    Parameters4/5

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

    The schema covers 100% of parameters with a clear name description and examples. The tool description adds further semantic value by specifying the valid item categories (mundane weapons, armour, adventuring gear, magic items) and additional examples ('Longbow', 'Plate'), which help the agent construct valid queries and understand the parameter's domain.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 'Get' and clearly states the resource: 'full stats and description of any item or equipment in the D&D Beyond compendium by name.' It distinguishes from sibling tools like ddb_search_equipment by focusing on direct retrieval by name and enumerates supported categories (weapons, armour, gear, magic items), 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 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 over alternatives such as ddb_search_equipment or ddb_get_monster. It only states 'Requires login' as a prerequisite but does not explain use cases, exclusions, or when a search tool would be more appropriate.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true and openWorldHint=true, so the description need not restate safety. It adds valuable context beyond annotations: that login is required and that matching is partial by name. This helps the agent anticipate authentication needs and understand that vague inputs may return unexpected results. No contradictions with annotations.

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

    Conciseness5/5

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

    The description is two short sentences, front-loaded with the main action and followed by a critical precondition (login). Every word earns its place, no redundancy or filler.

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

    Completeness4/5

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

    For a simple single-parameter get tool with strong annotations, the description covers purpose, auth, and matching behavior. It does not describe the return format, but the absence of an output schema is acceptable here since the tool name and context imply a stat block. The description is sufficiently 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?

    Schema coverage is 100%, with the 'name' parameter already described with examples. The tool description adds the partial-match behavior, which is useful but not essential to parameter semantics. Since the schema fully documents the parameter, 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 a specific verb ('Get') and resource ('full stat block for a specific monster'), and distinguishes itself from sibling tools like ddb_search_monsters by focusing on retrieval of a specific monster rather than searching. It also mentions the source (D&D Beyond compendium) and partial-match behavior, making the purpose unmistakable.

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

    Usage Guidelines3/5

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

    The description implies use when you have a monster name and need its full stat block, and it mentions the login requirement. However, it does not explicitly state when to use this tool versus alternatives (e.g., ddb_search_monsters for finding monsters by criteria), nor does it provide exclusions or fallback scenarios. The usage context is implied rather than fully articulated.

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

  • Behavior4/5

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

    The annotations (readOnlyHint: true, openWorldHint: true) already establish that this is a safe read-only operation. The description adds useful behavioral context beyond annotations: the automatic compendium lookup, the behavior change based on rules_edition, and the ability to supply 'cr' directly for homebrew. It does not disclose potential network calls or error handling, but the annotations lower 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?

    The description is two sentences long, front-loaded with the core purpose, and every clause adds value: default edition, edition switching, and homebrew handling. 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?

    The description covers the tool's main inputs, behavior, and output categories (Low/Moderate/High and Easy/Medium/Hard/Deadly) even though there is no output schema. It lacks details on potential failure modes (e.g., monster not found) but is otherwise complete for a lookup-based calculation tool with strong 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 description coverage is 100%, so the baseline is 3. The description mostly repeats information already in the schema: the 2024 vs 2014 behavior is in the rules_edition parameter description, and the 'cr for homebrew' note is in the cr field description. While it adds a brief clarification about automatic monster lookup, it does not significantly extend beyond the schema.

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

    Purpose4/5

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

    The description clearly states the tool's purpose with a specific verb and resource: 'Rate the difficulty of a D&D encounter.' It also details the two rule editions (2024 and 2014). However, it does not explicitly distinguish this tool from the sibling tool 'ddb_encounter_cr', so it lacks explicit sibling differentiation.

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

    Usage Guidelines4/5

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

    The description provides clear guidelines on when to use each edition: 'Defaults to 2024 XDMG rules' and 'Set rules_edition to 2014 for the classic DMG XP threshold method.' It also explains how to handle homebrew monsters via the 'cr' parameter. It does not mention alternatives or when not to use the tool, 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.

  • Behavior3/5

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

    Annotations already declare readOnlyHint=true, so the agent knows this is a safe read operation. The description adds useful context beyond annotations by noting the inclusion of homebrew and the login requirement. However, it does not disclose details like pagination behavior or return format, which are left to the schema.

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

    Conciseness5/5

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

    The description is exactly two sentences, front-loaded with the primary purpose and immediately followed by the critical prerequisite. Every word earns its place, with no fluff, redundancy, or unnecessary detail. It is highly efficient and well-structured.

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

    Completeness4/5

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

    The tool is a simple search operation with clear parameters, read-only annotations, and no output schema. The description covers the essential context: scope (all backgrounds including homebrew) and the login requirement. It does not explain the return structure or pagination behavior, but for a basic search tool with well-documented parameters, this is reasonably complete.

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

    Parameters3/5

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

    The input schema provides 100% coverage with descriptions for all three parameters (name, limit, offset), so the schema carries the explanatory burden. The description does not add additional parameter-level meaning, but the schema already explains each parameter clearly. No compensation needed 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 tool's function: 'Search all D&D Beyond backgrounds (including homebrew).' This is a specific verb+resource combination that distinguishes it from sibling search tools like ddb_search_monsters or ddb_search_spells. The inclusion of 'including homebrew' adds valuable scope detail.

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

    Usage Guidelines4/5

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

    The description provides a clear usage prerequisite: 'Requires login — run ddb_login first if you haven't already.' This tells the user when the tool can be used (after login) but does not explicitly contrast with alternatives like other search tools. It does not state when not to use this tool, but the subject matter (backgrounds) is clear enough for most use cases.

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

  • Behavior4/5

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

    Annotations declare readOnlyHint=true and openWorldHint=true, so the safety profile is already known. The description adds valuable behavioral context by disclosing the login requirement and the default behavior of returning all sections ('full (default)'). 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 sentences, front-loaded with the primary purpose, and immediately provides actionable usage details. Every sentence earns its place with no redundancy.

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

    Completeness4/5

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

    For a display tool with no output schema, the description is sufficient: it covers login prerequisite, section selection, and default behavior. It could be more explicit about the output format (e.g., text/markdown), but 'display' adequately implies a human-readable representation.

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

    Parameters4/5

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

    Schema description coverage is 100%, so the baseline is 3. The description goes beyond the schema by expanding the sections enum into meaningful groupings (e.g., 'summary (vitals+stats)', 'combat (adds actions/weapons)', 'notes (backstory, traits, bonds)'), which helps the agent select the right section value.

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

    Purpose4/5

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

    The description clearly states a specific verb and resource: 'Parse and display a character sheet.' While it doesn't explicitly name sibling alternatives like ddb_get_character_raw, the phrase 'parse and display' implies a processed output that contrasts with raw retrieval, providing implicit differentiation.

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

    Usage Guidelines4/5

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

    The description gives clear usage guidance: 'Use sections to reduce output' and lists all section options with examples. It also provides a prerequisite: 'Requires login — run ddb_login first if you haven't already.' It doesn't state exclusions or when not to use, but the context is clear.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true, and the description adds the auth-related detail that no login is required, which is useful behavioral context. It also describes the return type as 'rules text' but does not cover error handling or exact formatting, so some transparency gaps remain.

    Agents need to know what a tool does to the world before 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 primary action, includes helpful examples, and notes the access requirement. There is no redundancy or wasted wording; every element contributes to understanding.

    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 lookup tool with read-only annotations, the description is adequate: it states the purpose, access requirements, and general output. The lack of an output schema and the tool's simplicity mean that not explaining return values or error cases is acceptable, though slightly more detail would improve completeness.

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

    Parameters3/5

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

    The input schema has 100% description coverage for the single 'name' parameter, including example values. The tool description repeats similar examples and adds no significant new parameter semantics beyond what the schema already provides, so the schema carries the documentation burden.

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

    Purpose5/5

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

    The description directly states the tool's function with a specific verb ('look up') and resource ('rules text for a D&D condition'), including concrete examples like Blinded and Charmed. It is clearly distinct from sibling tools such as ddb_get_rules, which would handle general rules, making the purpose unambiguous.

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

    Usage Guidelines4/5

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

    The description implies usage by specifying that the tool looks up condition rules and adds that no login is required, giving clear context. It does not explicitly mention alternatives or when-not-to-use scenarios, but the purpose is straightforward enough that an agent can easily infer appropriate use.

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

  • Behavior4/5

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

    Beyond the readOnlyHint annotation, the description discloses that login is required, which is a meaningful behavioral requirement. It also specifies the return contents (HP, AC, initiative, etc.). It does not mention error conditions or rate limits, but the annotation already covers safety, and the added auth and return details go beyond the structured metadata.

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

    Conciseness5/5

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

    The description is just two sentences. The first sentence front-loads the primary purpose and return details; the second adds the login prerequisite. Every word contributes meaning, with 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 simple one-parameter read-only tool with no output schema, the description covers the essential aspects: what it does, what data it returns, and the auth prerequisite. It could mention failure modes or edge cases, but the description is sufficient for an agent to select and 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 provides 100% coverage for campaign_id with a clear description ('found in the campaign URL'). The tool description does not add any parameter-specific details beyond what the schema states, so the baseline of 3 applies.

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

    Purpose5/5

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

    The description uses a specific verb ('Fetch') and clearly states the resource: a compact summary of every character in a campaign. It also distinguishes this bulk operation from single-character tools like ddb_get_character and from campaign-level tools like ddb_get_campaign, and enumerates exactly what fields are returned.

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

    Usage Guidelines4/5

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

    The description clearly indicates when to use this tool: to get the whole party in one call, including the type of data returned. It also provides a prerequisite ('run ddb_login first if you haven't already'), but does not explicitly name alternatives or say when not to use it. This is clear context without exclusions.

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

  • Behavior4/5

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

    Annotations already mark this as read-only and open-world, so the bar for additional context is lower. The description adds valuable behavioral details: fuzzy name matching for monsters, CR resolution, and how treasure_type affects the roll logic. 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.

    Conciseness4/5

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

    The description is concise, front-loaded with the core purpose, and avoids redundancy. It packs key behavioral distinctions into two sentences without unnecessary filler.

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

    Completeness3/5

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

    The tool lacks an output schema, and the description does not mention the return format or structure of the generated treasure. For a generator, knowing what the result looks like would be helpful. However, the tool's complexity is well covered, so this is a moderate gap.

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

    Parameters4/5

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

    Schema coverage is 100%, but the description enhances parameter understanding by explaining the interplay between cr/monsters and treasure_type, the fuzzy matching behavior, and the character_level requirement for hoards. This goes beyond schema definitions.

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

    Purpose5/5

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

    The description clearly states the tool generates treasure rewards using the 2024 XDMG tables, with specific behaviors for hoard vs individual. It is distinct from sibling tools, which are mostly search/get operations, by identifying itself as a generator.

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

    Usage Guidelines4/5

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

    The description provides clear guidance on when to use the tool and how to switch modes (CR vs monsters, hoard vs individual). It does not explicitly mention alternatives or exclusions, but the usage context is well-defined.

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

  • Behavior4/5

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

    Annotations already provide readOnlyHint=true and openWorldHint=true, covering the read-only and open-world behavior. The description adds the login requirement, which is important operational context beyond the annotations. No contradiction found.

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

    Conciseness5/5

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

    The description is two sentences, front-loaded with the purpose, and includes a crucial prerequisite. No redundant or unnecessary text.

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

    Completeness4/5

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

    The description covers the tool's purpose and login requirement, and the schema documents all parameters. However, there is no output schema and the description does not hint at the return format or pagination behavior beyond the schema parameters, which would be helpful for a search tool.

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

    Parameters3/5

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

    Schema description coverage is 100% for all 5 parameters. The description's mention of 'by name, class, or level gained' aligns with the schema parameters but does not add new semantic details beyond what the schema already documents.

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

    Purpose5/5

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

    The description clearly states the verb 'Search' and the resource 'class features' with specific filters (name, class, level). This distinguishes it from sibling tools like ddb_search_classes, which searches classes themselves, and other search tools.

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

    Usage Guidelines4/5

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

    The description gives clear context: use this to search class features. It also provides a prerequisite (login required), which is actionable. However, it does not explicitly mention alternatives or when not to use this tool, though the tool name and description imply the correct context.

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

  • Behavior4/5

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

    The annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a safe, read-only operation. The description adds an important behavioral detail beyond annotations: the need for a prior login. It does not contradict any annotations and provides actionable operational context.

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

    Conciseness5/5

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

    The description is two short sentences that pack essential information: the tool's purpose and a crucial usage prerequisite. Every word earns its place, with no redundancy or filler.

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

    Completeness4/5

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

    For a search tool with comprehensive schema descriptions and read-only/open-world annotations, the description covers the primary purpose and the only significant prerequisite (login). It does not detail return format, but the lack of an output schema and the simplicity of a search tool make this acceptable. It is slightly less complete than the top-tier example because it omits any indication of pagination or result list behavior, but the schema already covers pagination via limit/offset.

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

    Parameters3/5

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

    The schema description coverage is 100%, so the parameter meanings are fully documented. The description's mention of 'name or prerequisite text' maps to two of the four parameters, but adds no additional semantic information beyond the schema. This meets the baseline for full schema coverage.

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

    Purpose5/5

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

    The description clearly states the tool's function: 'Search feats by name or prerequisite text.' This uses a specific verb ('search') and resource ('feats'), and highlights the two key search dimensions. It effectively distinguishes this tool from sibling search tools for spells, monsters, equipment, etc.

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

    Usage Guidelines4/5

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

    The description provides a clear usage prerequisite: 'Requires login — run ddb_login first if you haven't already.' This tells the agent when it can be used (after login) and implicitly when not to use it (before login). However, it does not explicitly compare against alternative search tools, though the tool name and context make the intended use case clear enough.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true and openWorldHint=true, and the description adds a login requirement that is not covered by annotations. This is valuable, consistent behavioral context beyond what annotations provide.

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

    Conciseness5/5

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

    The description is two short, front-loaded sentences: the first states the core purpose, the second gives a critical prerequisite. 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 search tool with full schema coverage, read-only and open-world annotations, and no output schema, the description plus annotations adequately cover purpose, login requirement, and search modes. The only gap is a lack of return format details, but this is not critical for a search 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% — all four parameters (name, limit, offset, race_name) are described. The description's mention of 'by name or race' maps to name and race_name but adds no new semantic detail beyond the schema, so the baseline score of 3 is appropriate.

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

    Purpose5/5

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

    The description states 'Search racial traits by name or race' with a specific verb ('search') and resource ('racial traits'), clearly distinguishing it from sibling tools like ddb_search_races (which searches races, not traits) and ddb_search_class_features.

    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 a clear prerequisite ('Requires login — run ddb_login first if you haven't already') and implies usage context via the 'by name or race' phrasing. However, it doesn't explicitly name alternative tools or exclusion scenarios, so it falls short of a full 5.

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

  • Behavior4/5

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

    The annotations already indicate readOnlyHint=true and openWorldHint=true, which lowers the burden. The description adds valuable behavioral context beyond these hints: the first call builds the compendium and is slow, subsequent calls are instant, and login is required. It 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?

    The description is three concise sentences that front-load the primary purpose. Every sentence earns its place: the first defines the scope and filters, the second explains performance characteristics, and the third notes the authentication requirement. No unnecessary words 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?

    The description tells the agent what the tool does, what filters it supports, that the first call is slow, and that login is required. However, there is no output schema, so the description might have explained what the search returns (e.g., spell names vs. full details, pagination behavior). This omission is the main gap, but the rich schema and annotations compensate enough for a 4.

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

    Parameters3/5

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

    The input schema covers all 7 parameters with descriptions, so the baseline is 3. The description only lists the same searchable fields (name, level, school, concentration, ritual) and does not add additional meaning, such as how parameters interact or format expectations. It neither improves nor detracts from the schema.

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

    Purpose5/5

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

    The description uses a specific verb ('Search') and identifies the resource ('full D&D Beyond spell compendium') with attributes (by name, level, school, concentration, or ritual). This clearly distinguishes it from sibling search tools for other resource types (e.g., ddb_search_monsters) and from ddb_get_spell, which likely retrieves a single 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 provides clear context on what the tool searches and includes practical usage notes (first call is slow, requires login). However, it does not explicitly mention alternatives or when not to use it (e.g., 'for full spell details, use ddb_get_spell instead'), so it earns a 4 rather than a 5.

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

  • Behavior4/5

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

    The description adds the login requirement ('Requires login'), which is beyond the readOnlyHint and openWorldHint annotations. It also clarifies the tool's scope (compendium-wide, not limited to a character's spells). This provides useful behavioral 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 two sentences: the first conveys the core purpose, the second adds two important clarifications (scope and login requirement). Every word earns its place, with no redundancy or padding.

    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, single-parameter, read-only tool. The description covers the essential information needed for correct invocation: what it does, that it's not limited to known spells, and that login is required. With full schema coverage and annotations, no critical details are 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 already fully documents the only parameter 'name' with description, minLength, and example. The description adds no additional parameter-specific meaning, so it relies on the schema's 100% 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 clearly states the tool's function: 'Get the full description of any spell in the D&D Beyond compendium by name.' It uses a specific verb ('Get') and resource ('full description of any spell'), and the phrase 'Not limited to a character's known spells' differentiates it from character-specific spell 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 description provides clear context: it is for retrieving full spell details from the compendium, not limited to a character's known spells, and it explicitly notes 'Requires login' as a prerequisite. While it doesn't name alternative tools like ddb_search_spells, the 'by name' phrasing implies you already know the spell name, giving reasonable usage guidance.

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

  • Behavior4/5

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

    With readOnlyHint=true, the safety profile is already established. The description adds valuable context about the login requirement (run ddb_login first) and the automatic title resolution against the library. 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 carry all necessary information: the first states the core purpose and input flexibility; the second lists optional parameters and the login prerequisite. 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?

    Despite having no output schema, the description sufficiently covers the tool's behavior: what it reads, accepted inputs, optional chapter/heading/char limit controls, and authentication requirement. For a read-only tool with well-documented parameters, this is ample context.

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

    Parameters3/5

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

    Schema description coverage is 100%, so the baseline is 3. The tool description mostly restates the schema's parameter explanations (e.g., slug/title flexibility, max_chars) without adding new meaning or clarifying relationships between parameters.

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

    Purpose5/5

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

    The description starts with 'Read a D&D Beyond book', a specific verb and resource that clearly distinguishes it from sibling search/list tools (e.g., ddb_search_spells, ddb_list_library). It further clarifies scope by noting options for chapters, headings, and response size control.

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

    Usage Guidelines4/5

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

    The description provides clear context on when to use it (reading a book), input flexibility (slug or title resolved automatically), and critical prerequisite (login). However, it does not explicitly mention alternatives or when not to use it, such as preferring a search tool for specific content.

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

  • Behavior4/5

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

    Beyond the readOnly and openWorld annotations, the description discloses the login requirement and clarifies the scope (all races/subraces including homebrew, not character-specific). This adds meaningful behavioral context such as authentication needs, which is valuable for an agent.

    Agents need to know what a tool does to the world before 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 with the core action. Each clause serves a purpose: stating the function, clarifying scope, and noting the auth prerequisite. No wasted words.

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

    Completeness5/5

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

    For a simple search tool with full schema coverage and read-only annotations, this description is complete. It covers purpose, scope, and prerequisites, leaving no critical gaps in understanding how to invoke it.

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

    Parameters3/5

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

    The input schema already describes all three parameters (name, limit, offset) with complete, self-explanatory descriptions. The tool description does not add additional parameter semantics, so the baseline score of 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 clearly states it searches D&D Beyond races and subraces, including homebrew, and explicitly notes it is not character-specific. This distinguishes it from character-related tools and other search tools, making the purpose unambiguous.

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

    Usage Guidelines4/5

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

    It provides clear context by specifying that it covers all races/subraces and is not character-specific, plus the prerequisite to run ddb_login first. However, it does not explicitly name alternative sibling tools for when not to use this one, so it lacks exclusionary guidance.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint and openWorldHint, so the safe-read nature is covered. The description adds valuable context about the login requirement and partial/fuzzy matching behavior. It does not describe return format, but the term 'full description' implies the output sufficiently for a lookup tool.

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

    Conciseness5/5

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

    The description is three tightly written sentences: first states the core function, second gives matching behavior with concrete examples, third clarifies parameters and auth. No wasted words, and the key information is front-loaded.

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

    Completeness4/5

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

    Given the tool's moderate complexity, the description covers the essential aspects: what it does, matching behavior, parameter alternatives, and login prerequisite. With no output schema, a brief note on return structure would elevate it further, but 'full description' is a reasonable indicator. The readOnly annotation reduces the need for safety caveats.

    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 the 'either/or' relationship between character_id and character_name, which the schema does not explicitly state. It also reinforces the name parameter's fuzzy matching with an example, though that is already in the schema.

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

    Purpose5/5

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

    The description clearly states the tool's verb ('look up') and resource ('full description of a spell, feat, class feature, subclass feature, racial trait, background feature, or equipped item by name'). It distinguishes itself from sibling tools by its character-specific scope and cross-category coverage.

    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 states the login prerequisite ('run ddb_login first') and clarifies that character_id or character_name can be used as alternatives. However, it does not directly compare itself to specialized search tools like ddb_search_spells, so there is no explicit 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.

  • Behavior4/5

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

    Beyond the readOnlyHint annotation, the description adds that the browser stays open and directs the caller to ddb_close_browser. This is important persistent state information. It also clarifies that the tool returns text, not HTML or other content. However, it doesn't describe output format or error cases, but annotations cover the safety aspect.

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

    Conciseness5/5

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

    Two sentences, front-loaded with the primary action, and the second sentence adds a critical behavioral note without waste. Highly concise.

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

    Completeness4/5

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

    For a zero-parameter, no-output-schema tool, the description covers the action and the post-requisite (close browser). It could describe the return format more explicitly, but 'text content' is sufficient for this context.

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

    Parameters4/5

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

    The tool has zero parameters, so the baseline is 4. The description explains the implicit input is the 'currently loaded page,' clarifying that no explicit arguments are needed. This adds meaning beyond the empty 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 function: 'Return the text content of the currently loaded page in the browser.' This specifies a verb, resource, and scope, and distinguishes it from sibling tools like ddb_close_browser (closing) and ddb_navigate (navigating).

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

    Usage Guidelines4/5

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

    Provides clear context: use this to retrieve the current page's text. It also instructs to call ddb_close_browser when finished, implying a usage flow. However, it doesn't explicitly discuss when not to use it or compare to alternatives.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a safe read. The description adds context beyond annotations: it discloses the coverage scope (core 5e SRD topics), the query-jumping behavior, and the lack of login requirement. It does not describe error behavior or return format, but given the annotation safety profile, 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 information-dense yet concise: main action, topic scope, query usage, alternative tool, and auth requirement are each covered in one or two sentences. No filler or repetition. The front-loaded first sentence immediately states the tool's 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 single-read tool with 3 params and no output schema, the description covers the essential context: what it retrieves, what topics are included, how to use the query parameter, when to use an alternative, and that no login is needed. It lacks explicit error handling or pagination details, but these are not required for such a tool and the schema covers max_chars bounds.

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

    Parameters3/5

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

    Schema description coverage is 100%, so all parameters (name, query, max_chars) are already documented with examples and constraints. The description adds marginal context by referencing 'full SRD rules text' and 'long section' but does not substantially enhance parameter understanding. The baseline of 3 applies because the schema carries the heavy lifting.

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

    Purpose5/5

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

    The description opens with a specific verb+resource+scope: 'Get the full SRD rules text for a topic by section name or slug.' It addresses coverage explicitly ('Covers all core 5e rules') and differentiates from sibling tools by naming ddb_read_book as the alternative for non-SRD or more detailed rules. This clearly distinguishes it from related tools like ddb_search_rules.

    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 query to jump to a specific topic within a long section' and 'For non-SRD rules or more detail, use ddb_read_book.' It also states 'No login required,' informing the agent of prerequisite conditions. This is clear when-to-use and when-to-avoid guidance with a named alternative.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true and openWorldHint=true, so the tool's non-destructive nature is covered. The description adds valuable behavioral context by disclosing the login requirement, which is not present in the annotations. No contradiction exists between the 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: the first front-loads the action, the second states the prerequisite. No wasted words or redundant information. It is 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?

    This is a simple no-parameter, read-only list tool. The description adequately covers the purpose and prerequisite. While it doesn't describe the return format or pagination behavior, the tool's simplicity and the presence of readOnlyHint make this absence acceptable.

    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 schema). Per the rubric, a 0-parameter tool receives a baseline score of 4. The description adds no parameter details because none are needed, making it 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 a clear resource: 'books and sourcebooks you own in your D&D Beyond library'. It clearly distinguishes itself from sibling tools like ddb_list_characters and ddb_read_book, leaving no ambiguity about its function.

    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 the prerequisite: 'Requires login — run ddb_login first if you haven't already.' This provides clear context for when the tool can be used, though it doesn't mention alternatives. The condition is specific and actionable, earning a score above the minimum.

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

  • Behavior4/5

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

    The annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds meaningful behavioral context beyond that: it requires login, covers both mundane and magic items, and offers a filter trick (rarity='common' for mundane equipment). This enriches the agent's understanding 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 earning its place: the first states the core function, the second lists coverage, the third offers a specific filtering technique, and the fourth notes the login requirement. It is front-loaded with the main purpose and contains zero filler.

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

    Completeness4/5

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

    For a read-only search tool with three optional parameters and no output schema, the description is quite complete. It covers purpose, scope, a filtering nuance, and an operational prerequisite (login). It does not describe the return format or result limits, but given the simplicity and the annotations, this is not a critical gap.

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

    Parameters4/5

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

    Schema coverage is 100% with each parameter already described ('Partial item name', 'Item type filter', 'Rarity filter'). The description adds extra semantic value by providing concrete examples (Longsword, Plate) and clarifying the rarity filter behavior with the 'common' tip. It doesn't repeat every schema detail, but adds a useful layer of 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 uses a specific verb ('Search') and a clear resource ('D&D Beyond item/equipment compendium'), and explicitly states the dimensions by which one can search (name, rarity, type). It also distinguishes itself from sibling search tools by listing included categories (mundane weapons, armour, gear, magic items) and by contrasting with a likely getter (ddb_get_equipment).

    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 the tool: to search for items by name, rarity, or type. It also provides a concrete usage tip ('Filter by rarity='common' to see only mundane equipment') and a prerequisite ('Requires login'). However, it does not explicitly mention alternatives (e.g., when to use ddb_get_equipment), so it stops short of full 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.

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true, and the description adds that login is required and that it returns a summary list. These are useful behavioral details beyond the annotations, though no mention of pagination or result limits.

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

    Conciseness5/5

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

    Three concise sentences, each adding distinct information: purpose, output type, and alternative/prerequisite. 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 search tool with no output schema, it adequately describes the return as a summary list and points to the full stat block tool. It could clarify behavior with no filters or result size, but overall sufficient given 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?

    All four parameters have schema descriptions with examples, so coverage is 100%. The description only restates the filter names without adding new semantics beyond the schema.

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

    Purpose5/5

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

    Clearly states it searches the D&D Beyond monster compendium by name, CR, type, or size, which is specific and distinct from sibling tools like ddb_get_monster (full stat block). The verb 'search' and resource 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 Guidelines5/5

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

    Explicitly directs users to ddb_get_monster for full stat blocks, providing an alternative. Also notes login requirement, informing when the tool can be used. This distinguishes search usage from retrieval usage.

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

  • Behavior4/5

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

    The description adds context beyond annotations: it notes the tool only acts 'if one is open' (reinforcing idempotentHint=true) and specifies 'background browser window' to distinguish from any primary window. It doesn't 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?

    Two short sentences: the first states the action, the second gives usage context. There is no wasted wording, 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.

    Completeness5/5

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

    The tool has no parameters, no output schema, and a simple side-effect. The description fully covers what it does and when to use it, making it complete for an agent to decide 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?

    With zero parameters, the schema is trivially covered (100%) and the description does not need to explain parameters. The baseline for a parameter-less tool is 4, and the description provides no confusing parameter info.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 ('Close') and the resource ('background browser window'), and includes a condition ('if one is open'). This distinguishes it from sibling tools like ddb_navigate or ddb_interact, which are about performing actions rather than cleanup.

    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 the tool is useful after ddb_navigate, ddb_interact, or ddb_get_page, giving clear contextual usage. It doesn't mention when not to use it, but the tool's specific cleanup role is unique enough that no alternative is relevant.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true and openWorldHint=true, and the description adds the meaningful behavioral requirement of login and clarifies the user's role scope (DM or player). It does not detail return format, but annotations lower the bar and auth context is useful.

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

    Conciseness5/5

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

    The description is a single, front-loaded sentence that states the action, scope, and prerequisite without any wasted words. It earns every part.

    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 list operation with readOnly and openWorld hints, the description is complete: it explains what is listed, who it applies to, and what must be done first. No output schema is present, but the return value is self-evident for a list-all tool.

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

    Parameters4/5

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

    The tool has zero parameters, and schema coverage is 100% (empty schema fully covers it). Per the calibration baseline for 0 params, a score of 4 is appropriate; the description has no need to add parameter details.

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

    Purpose5/5

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

    The description uses a specific verb 'List' with a clear resource ('D&D Beyond campaigns') and scope ('you are part of (as DM or player)'). This distinguishes it from siblings like ddb_get_campaign, which focuses on a single campaign.

    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 states a prerequisite: 'Requires login — run ddb_login first if you haven't already.' This gives clear context for when to use the tool, though it does not mention alternatives or explicit when-not-to-use scenarios.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds the behavioral requirement that login is necessary and instructs to run ddb_login first, which is useful contextual info beyond the annotations. It doesn't contradict any annotation.

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

    Conciseness5/5

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

    The description is remarkably concise: two sentences, no redundant information, and the key purpose is front-loaded. Every word earns its place.

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

    Completeness5/5

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

    For a simple list tool with no parameters and no output schema, the description fully communicates what the tool does, what fields are returned, and the required precondition. It is complete in the given context.

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

    Parameters4/5

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

    The tool has zero parameters, and the schema is empty, so schema coverage is effectively 100%. The description doesn't need to add parameter details; the baseline for 0-parameter tools is 4, and no information is missing.

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

    Purpose5/5

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

    Description states the specific action ('List all characters'), the resource ('in your D&D Beyond account'), and the returned fields (ID, level, race, class). This clearly distinguishes it from sibling tools like ddb_get_character or ddb_character_lookup, which focus on individual characters.

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

    Usage Guidelines4/5

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

    The description clearly indicates when to use the tool (when you need a list of all characters) and provides a prerequisite (must log in via ddb_login). It does not explicitly name alternatives or exclusions, but the context is unambiguous.

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

  • Behavior4/5

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

    It discloses that a Chrome window opens and closes automatically once the session is saved, which is a behavioral trait beyond the annotations. This helps the agent anticipate user interaction and the tool's lifecycle, adding value beyond the openWorldHint and idempotentHint.

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

    Conciseness5/5

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

    The description is two sentences, front-loaded with the primary action. Every sentence contributes essential information: the action itself, the browser behavior, and the resulting effect on other tools. No unnecessary words.

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

    Completeness5/5

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

    For a zero-parameter, no-output-schema tool, the description covers the entire workflow: launching a browser, user login, automatic closure, and the benefit for subsequent character tools. The annotations supply safety details, so 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 empty. The description appropriately focuses on behavior rather than parameters. Since there are no parameters to explain, the baseline score of 4 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 opens with a specific imperative: 'Launch a browser and log into D&D Beyond.' This clearly identifies the tool's action and resource, distinguishing it from sibling tools like ddb_list_characters or ddb_get_character. The added detail about browser behavior reinforces the unique 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 states that after login, 'character tools work without any browser,' which implies the tool is a prerequisite for using character-related tools. It provides clear context but does not explicitly mention alternatives or when not to use this tool, though for a login tool such guidance is less critical.

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

  • Behavior4/5

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

    The readOnlyHint annotation is true, and the description adds meaningful context: it discloses the default rules edition (2024 XDMG) and the four output encounter shapes. It doesn't contradict the annotations. Minor gap: the return format is not fully detailed, but the annotation and description cover the core behavioral 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?

    The description is three concise sentences, front-loaded with the primary purpose. Each sentence adds information: what it does, the default/alternative rules, and the companion tool. No redundant or extraneous text.

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

    Completeness4/5

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

    The tool has no output schema, but the description indicates the output breakdown (solo boss, duo, squad, horde) and notes the optional monster_count filter. The parameter schema is thorough. It could mention error conditions or exact return structure, but given the tool's simplicity and the sibling context, the description covers the necessary context.

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

    Parameters4/5

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

    Schema description coverage is 100%, so the baseline is 3. The description adds cross-tool semantics by stating the party parameter is 'same format as ddb_rate_encounter,' improving consistency. It also reinforces the rules_edition default and behavior, which the schema already described. This small extra guidance bumps 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 clear action: 'Given a party and a target difficulty, returns the CR to aim for.' It specifies the resource (CR for encounter) and the scope (broken down by encounter shape). It distinguishes from the sibling ddb_rate_encounter by stating 'No monster lookup required' and referencing the companion 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 explicitly says 'Use with ddb_rate_encounter to verify a specific monster list,' which indicates when to use this tool versus an alternative. It also clarifies 'No monster lookup required,' guiding the user to avoid unnecessary monster searches. The default rules_edition and the option to switch to '2014' are clearly stated.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true and openWorldHint=true, but the description adds valuable behavioral context: the response size (300–500 KB), the requirement for confirm_large_response: true, and the login prerequisite. No contradiction exists. It stops short of detailing the raw JSON structure, but the safety profile is covered by annotations.

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

    Conciseness5/5

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

    Three sentences, each earning its place: the core function, the alternative recommendation, and the login prerequisite. The most important info (returns raw large JSON) is front-loaded. No redundancy or filler.

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

    Completeness4/5

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

    For a specialized, read-only raw getter, the description covers the essential operational details: size, confirmation flag, login requirement, and the recommended normal-use alternative. There is no output schema, but the description clarifies what is returned (character JSON) and when to use it. Minor gap: it doesn't explain how 'raw' differs from the non-raw version beyond size, but this is adequately implied.

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

    Parameters4/5

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

    Schema coverage is 100% with descriptions for all three parameters. The description reinforces the purpose of confirm_large_response by tying it to the large response size, adding meaning beyond the schema's const=true definition. This helps the agent understand why the parameter exists and why it must be true.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 ('Returns raw 300–500 KB character JSON') and clearly differentiates from the sibling ddb_get_character by positioning it as the raw/large variant. It also names the alternative for normal use, making the tool's niche unmistakable.

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

    Usage Guidelines5/5

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

    Explicit guidance is provided: 'Use ddb_get_character instead for all normal use' and 'Requires login — run ddb_login first if you haven't already.' This tells the agent exactly when to choose this tool and what prerequisites must be met, including an alternative tool to prefer.

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

  • Behavior5/5

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

    The description expands on the annotations by clarifying the scope of cleanup ('cache='spells' clears just the spell/reference compendium; 'all' wipes every cache') and the timing ('cached for up to 5 minutes'). It also notes the effect of forcing an immediate retry. These details add significant context beyond the structured annotation hints.

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

    Conciseness5/5

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

    The description is two sentences, front-loading the action and purpose. It then efficiently delivers usage context and parameter details without redundancy. Every clause adds value.

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

    Completeness5/5

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

    For a simple tool with one optional parameter and no output schema, the description covers the purpose, when to use it, and the effects of each parameter value, while benefiting from rich annotations. 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 input schema already has a detailed description for the 'cache' parameter, including enum meanings. The tool description reinforces the default value and gives a practical example of why you'd choose 'spells' vs 'all', but it largely overlaps with the schema's own documentation, adding moderate value.

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

    Purpose5/5

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

    The description clearly states the tool's action ('Wipe in-process caches') and its purpose ('so the next call re-fetches from D&D Beyond'). It also distinguishes this tool from siblings by focusing on cache clearing rather than lookup or navigation, and includes specific scenarios like the SRD/Open5e fallback.

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

    Usage Guidelines4/5

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

    The description provides explicit usage guidance: 'Use this when search results look like the SRD/Open5e fallback...' It gives a concrete trigger with an example and explains the caching duration. However, it does not mention when not to use the tool or compare with alternatives, but none are obvious in the context.

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

  • Behavior5/5

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

    The description adds rich behavioral context beyond the annotations. It discloses that click/fill require confirm flags as 'safety gates to prevent prompt injection', and gives concrete examples of potential unintended state changes ('deleting a character, leaving a campaign, posting to a forum'). It also specifies that screenshots are unguarded and read-only. No contradiction with the annotations; the destructiveHint=true is aligned with the warning about state changes.

    Agents need to know what a tool does to the world before 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—yet covers the core actions, safety gates, and selector best practices. The first sentence front-loads the purpose; the second sentence explains the critical safety nuance without fluff. 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?

    Given the tool has no output schema, the description adequately covers the main behaviors: actions, confirmation requirements, and selector guidance. The only gap is that it doesn't mention what the tool returns (e.g., screenshot path, success/error messages), which could be useful for the agent. However, for selection and invocation, the description is sufficiently 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?

    While the schema already describes all 5 parameters, the description adds important semantic value. It explains the purpose of confirm_click/confirm_fill as safety gates, and provides detailed selector guidance: 'Prefer specific selectors... Hardcoded DnD Beyond class names are unreliable (CSS module hashes change).' This goes well beyond the schema descriptions, helping the agent choose correct selectors.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 function: 'Interact with the currently loaded D&D Beyond page by clicking, filling a form field, or taking a screenshot.' This is a specific verb+resource+scope. It distinguishes itself from sibling tools, which are mostly read-only data retrieval tools, by being the only one that performs live page interactions.

    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: actions are for the 'currently loaded' page, implying a prior navigation step. It explains the safety gates for click/fill actions and that screenshots are unguarded/read-only. While it doesn't explicitly name alternatives or say 'when not to use', the 'currently loaded page' phrasing and the safety instructions give substantial guidance. A minor gap is the lack of explicit distinction from sibling page-reading tools like ddb_get_page.

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

  • Behavior5/5

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

    Beyond the readOnlyHint annotation, the description discloses critical behavioral traits: the browser persists after the call, enabling subsequent ddb_interact or ddb_get_page calls, and the need to explicitly close the browser. It also adds the domain restriction, giving the agent a clear safety and statefulness picture.

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

    Conciseness5/5

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

    Three concise sentences, all value-dense: the first defines the action and result, the second imposes the safety constraint, and the third explains the stateful behavior and cleanup. 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 one-parameter navigation tool, the description covers the essential context: what it does, what it returns, its restrictions, its statefulness, and how to clean up. There is no output schema, so mentioning the text content return is sufficient.

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

    Parameters3/5

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

    The input schema already provides full coverage (100%) for the single URL parameter, including the required format. The description reinforces the domain restriction but adds no new parameter-level details, so it meets the baseline without enhancing semantics.

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

    Purpose5/5

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

    The description clearly states the tool's function with a specific verb ('Navigate') and resource ('any D&D Beyond URL'), and specifies the output ('page's text content'). It also distinguishes itself from siblings by noting follow-up ddb_interact or ddb_get_page calls, establishing its role as the navigation entry point.

    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 context: restricts to dndbeyond.com URLs, notes the browser stays open for follow-up tools, and instructs to call ddb_close_browser when finished. This effectively tells the agent when to use this tool and what to do next, though it doesn't enumerate alternatives for non-navigation tasks.

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

  • Behavior5/5

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

    Annotations already declare readOnlyHint and openWorldHint, but the description adds valuable context beyond that: it discloses the search covers both section names and full content, returns a list with slugs, and requires no login. This enriches the behavioral understanding 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 three sentences long, with purpose stated first. Each sentence earns its place: scope, example, output format, sibling reference, and auth note. It is succinct and well-structured, with no fluff.

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

    Completeness5/5

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

    For a simple one-parameter tool with no output schema, the description fully covers what it returns (list of matching sections with slugs), gives a concrete example, and notes login requirements. It is complete enough for an agent to select and invoke correctly.

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

    Parameters3/5

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

    The schema already documents the query parameter thoroughly with examples and the omit-to-list-all behavior. The description adds no new parameter semantics beyond what the schema provides, so the baseline 3 is appropriate given the 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 tool searches SRD rules sections by keyword, with a specific verb ('Search') and resource ('SRD rules sections'). It also provides a detailed example ('grapple' finds Attacking and Conditions sections) and explicitly mentions ddb_get_rules for reading full text, distinguishing it from a 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?

    It explicitly instructs to use ddb_get_rules to read the full text of a section, creating a clear alternative and implying this tool is for search/discovery. The example also clarifies when to use it. No exclusions are needed given the tool's specific scope.

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

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

ddb-mcp MCP server

Copy to your README.md:

Score Badge

ddb-mcp MCP server

Copy to your README.md:

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/iamjameslennon/ddb-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server