beyond-mcp
Server Quality Checklist
Latest release: v0.4.1
- Disambiguation4/5
Tools are generally distinct: monster lookup, character lookup, campaign listing, party snapshot, and roll pump management each serve clear purposes. Some overlap exists between ddb_get_character and ddb_get_party_snapshot, but the party snapshot is clearly positioned as the authoritative source for live combat stats, and the descriptions resolve ambiguity.
Naming Consistency4/5Most tools follow the ddb_verb_noun pattern (ddb_get_monster, ddb_list_campaigns, ddb_poll_rolls). Minor deviation: start_ddb_roll_pump and stop_ddb_roll_pump put the verb first, breaking the prefix convention. Still, the pattern is predictable overall.
Tool Count5/5With 10 tools, the server is well-scoped for its purpose: a few core read operations (monster, character, campaigns), a party snapshot, and a roll pump subsystem with start/stop/status/poll. Each tool has a clear role with no redundancy or bloat.
Completeness4/5The surface covers the expected read-only operations for a D&D Beyond integration: retrieving monsters, characters, campaigns, and party combat data, plus the roll pump lifecycle. Missing write operations (e.g., updating characters) are not implied by the domain, and the roll pump is fully supported with start, stop, status, and polling.
Average 4.3/5 across 10 of 10 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 12 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI status not available
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.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
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?
With no annotations provided, the description carries the behavioral burden. It explains the two output modes (compact vs. full), which is useful, but it does not disclose read-only nature, error behavior, authentication requirements, or side effects. This is a gap, though partially mitigated by the simple read-like nature of the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two focused sentences that front-load the primary purpose and then clarify the optional full mode. No filler or redundant phrasing; every word contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two parameters and no output schema, the description adequately describes what the agent will receive (HP/AC/conditions snapshot, or full sheet). It could mention error handling or prerequisites (e.g., character access), but these are minor gaps given the simplicity and clear parameter explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: the `full` parameter already has a description, and the description adds a bit more detail (listing the parsed fields). The `ddbCharId` parameter lacks schema description but is self-explanatory (numeric ID) and the description reiterates it. The description adds marginal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Fetch') and resource ('character sheet') with a clear scope (by numeric ID). It naturally distinguishes from siblings like ddb_get_monster (monster data) and ddb_list_campaign_characters (list of characters) by focusing on a single character sheet.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you need a character sheet by ID) and clarifies the full parameter, but it does not explicitly mention alternatives or when not to use this tool in favor of siblings. Guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It adds a useful behavioral detail (campaignId default), but does not explicitly indicate that this is a read-only operation (though 'list' implies it), nor does it disclose error handling, response format, or authentication. This is a minor gap for a simple list 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/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the action. The default behavior is stated succinctly, with no unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description provides the core behavior and the parameter default. It does not mention the return format or error cases, but these are not essential for an agent to successfully invoke the tool. It is minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the parameter. It mentions the default value of campaignId, adding context, but does not explicitly state what campaignId refers to (though the tool name and context make it obvious). The description partially compensates for the missing schema guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('List') and resource ('player characters in a DDB campaign'). It clearly differentiates from siblings like ddb_get_character (single character) and ddb_list_campaigns (campaigns) by specifying 'all' characters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides usage context by noting the campaignId default to the DDB_CAMPAIGN_ID env var, but does not explicitly mention when to use this tool versus alternatives or any exclusion conditions. The use case is implied by 'all player characters' but not contrasted with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. While the verb 'List' implies a read-only operation, the description does not explicitly state that it is non-destructive, whether authentication is required, or any error/rate-limit behavior. It adds scope (as DM/player) but fails to disclose other relevant traits for a no-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundancy. It immediately states the action and resource, and the qualifying details ('as DM or player', 'with IDs and player counts') are packed efficiently. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless list tool with no output schema, the description provides the essential information: what it lists, the scope, and the returned fields. It does not mention pagination or error handling, but these are less critical for a simple read operation. The description is sufficient for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the baseline is 4 per the rubric. The description does not need to explain parameter meanings since there are none. Schema coverage is 100% implicitly, and no parameter documentation is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('List'), a specific resource ('DnD Beyond campaigns'), and the exact scope ('the account is in (as DM or player)') plus what is returned ('IDs and player counts'). It clearly distinguishes itself from sibling ddb_list_campaign_characters, which lists characters rather than campaigns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (when you need campaign listings), but does not explicitly state alternatives or exclusions. It does not say 'use this before calling ddb_list_campaign_characters' or any other routing guidance. The use case is reasonably obvious but not spelled out.
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?
With no annotations, the description must carry the full behavioral burden. It explains the two output modes (compact vs full) and lists what the full statblock includes, which is useful. However, it does not disclose what happens on lookup failure (e.g., monster not found), any authentication/rate-limit considerations, or explicitly confirm that this is a read-only operation. The description gives good detail on output but omits error handling and side-effect guarantees.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The purpose and default behavior are front-loaded, and the optional expansion is explained in the second sentence. Every word adds value, and it is easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool with only two parameters and no output schema, the description is largely complete. It tells the agent exactly what it returns in both modes and how to specify the target. It does not cover error cases or edge behavior, but these are minor for a straightforward get operation. The absence of an output schema increases the need to describe return contents, which the description does well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50% (nameOrId has no schema description). The description compensates by clarifying that nameOrId can be a name or numeric id. It also explains the default behavior of the 'full' parameter and what 'full' returns. This adds meaningful context beyond the schema's minimal info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does 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 ('monster stats from the D&D Beyond compendium'), and specifies the lookup mechanism ('by name or numeric id'). It unambiguously distinguishes itself from sibling tools like ddb_get_character or ddb_get_party_snapshot by focusing on monsters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: whenever you need monster stats. It provides clear context (monster lookup) but does not explicitly name alternatives or state when not to use it. The distinction from siblings is implicit but strong enough for an agent to route correctly.
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?
With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only operation via 'snapshot' and lists return data, but it does not explicitly state that the tool makes no modifications, nor does it disclose any failure modes, rate limits, or authentication needs. It does add context about being the 'authoritative' source, but for a read tool this is a marginal improvement. A 3 is appropriate given the clear but implicit 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/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three tightly packed sentences with zero filler. It front-loads the core purpose, explains the key differentiator, and then details parameter behavior. Every sentence earns its place and avoids redundancy with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only snapshot tool with 3 parameters, no output schema, and no nested objects, the description fully covers the return values, the two call modes, defaults, and the optional full expansion. An agent has everything needed to invoke it correctly without additional inference. No gaps that would cause mis-calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already described (full, campaignId, characterIds) including defaults and override behavior. The description reiterates these points but does not add meaning beyond what the schema provides; it does weave the params into a usage narrative, but that is overlap, not augmentation. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Precomputed combat snapshot for a whole party in one call' and enumerates the exact computed fields returned (AC, max/current/temp HP, conditions, death saves, etc.). It explicitly differentiates from the sibling ddb_get_character by declaring itself 'the authoritative AC/maxHP source' and directing the agent to prefer it for live party status. This is a specific verb+resource with strong 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 Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on when to use this tool over an alternative: 'prefer it over ddb_get_character for live party status.' It also explains the two invocation modes (characterIds or campaignId with default to DDB_CAMPAIGN_ID) and the effect of the full parameter. No explicit 'when not to use' is given, but the directive plus the mode explanations are sufficient for an agent to choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states the primary effect (disconnect WebSocket) and an important side effect (buffered rolls remain drainable until next start). This gives the agent a good sense of what happens and what persists. It does not mention return values or error handling, but for a 0-parameter stop action, 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/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, with the core action front-loaded ('Stop the D&D Beyond roll pump') followed by a clarifying explanation of the WebSocket disconnect and the buffered-roll behavior. Every sentence adds value, with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema), the description provides sufficient context for correct invocation. It explains the action, the underlying mechanism, and the state that persists after stopping. It could mention that calling it repeatedly is idempotent or what happens if already stopped, but those are minor gaps for a low-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema fully covers any input. The description doesn't need to explain parameters, and it doesn't. The baseline of 4 for 0-parameter tools is appropriate; the description adds nothing extra but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Stop') and resource ('D&D Beyond roll pump'), and clarifies the mechanism ('disconnects the game-log WebSocket'). This clearly differentiates it from sibling tools like start_ddb_roll_pump and ddb_roll_pump_status. An agent can immediately understand what the tool does and that it's the inverse of start_ddb_roll_pump.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (when you want to stop the pump) and provides essential context about buffered rolls remaining drainable until the next start, which hints at the start tool as the alternative. However, it does not explicitly state 'use start_ddb_roll_pump to resume' or mention any conditions for when not to use it. The guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does well: it discloses that this is a stateless handshake (no write side effects implied), explains the version-assertion semantics, the meaning of the capabilities flags (writes enabled, optional rollPump/partySnapshot surfaces), and the additive-only field guarantee across versions. It could spell out the exact return shape, but the behavior is substantially transparent for a zero-parameter ping.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, each earning its place: the core purpose is front-loaded in the first sentence, usage instructions follow, and the additive-only behavioral guarantee closes. There is zero filler or repetition of schema content, and the most decision-relevant information (what it returns, when to call it) appears first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description is the sole source of runtime contract information, and it covers the essentials completely: return fields (name, version, capabilities), how to act on them (assert version, gate on capabilities), and version stability guarantees. For a zero-parameter handshake, nothing an agent needs to call it correctly and interpret results is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4 — there is nothing to document on the input side. The description correctly spends no space on parameters and instead clarifies the return-value semantics (version, capabilities), which is the appropriate focus. No information deficit exists here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Handshake: returns this server's name, semver version, and capability flags') and the purpose is unmistakable as a connection-status probe. It naturally distinguishes itself from all siblings — none of which perform a version/capability handshake, since the others fetch domain data (monsters, characters, campaigns) or drive the rollPump surface.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance: 'Call it on connect' and instructs the agent to assert the version minimum before relying on newer tools, and to read capabilities to determine whether writes are enabled and which optional surfaces exist. It does not name specific sibling alternatives, but for a handshake this is inherent — the guidance clearly establishes it as the gating prerequisite to the other tool surfaces.
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?
With no annotations, the description fully discloses the tool's behavior: it reports connection status, consecutive failures, last error, and roll count. It also interprets RETRYING state and suggests a remediation step. This is a read-only status tool, and the description implies no side effects. It goes beyond a bare 'status' statement by explaining what the status means and what to do.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the main action and then adds essential diagnostic context. Every clause adds value—status metrics, failure interpretation, and a recommended action—with no fluff. It is concise yet comprehensive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a status-reporting tool with no parameters and no output schema, the description is complete. It tells the agent what data will be reported, what the key status indicator means, and what course of action to take. The sibling tools are distinct in purpose, and this description fully covers the tool's role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema covers 100% of them trivially. According to the rubric, a 0-parameter tool gets a baseline of 4. The description adds no parameter details because there are none, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Report the D&D Beyond roll pump's connection health ... and how many rolls it has captured.' It identifies the specific resource (roll pump) and the metrics reported. This distinguishes it from sibling tools like start/stop/poll, which perform actions rather than report status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides actionable guidance when RETRYING with climbing failure count indicates a dropped socket and suggests 're-harvest and restart the pump.' This implicitly refers to related tools (e.g., start_ddb_roll_pump) but does not explicitly name them or state when NOT to use this tool. It gives clear context but lacks explicit exclusion of alternatives.
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?
With no annotations provided, the description carries the full behavioral burden and meets it well. It says the tool 'drains' rolls, implying it consumes the buffer (a state-changing behavior), and warns 'never re-roll' to prevent incorrect use of the returned dice values. It also specifies the return structure (seq, summary, raw message), giving the agent a clear expectation of the output without an output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact—two sentences—with no filler. The core purpose is front-loaded, followed by the return format, then a usage guidance sentence that also carries the vital 'never re-roll' warning. Every sentence earns its place, and the structure is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter, no output schema, and straightforward behavior, the description is fully complete. It covers the purpose, the return structure, the parameter semantics, and the critical behavioral constraint (never re-roll). There is no missing information an agent would need to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides a thorough description of `after` (return rolls with seq > after, use the previous cursor, default 0) with 100% coverage. The description adds a small but useful nuance by clarifying that omitting `after` returns everything buffered, which reinforces the default behavior. This goes slightly beyond the schema without being redundant, so it merits a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('drain') and resource ('dice rolls the pump has captured'), and clarifies the scope ('since a cursor'). It also states what the tool returns, making the purpose unambiguous. It clearly differentiates from sibling tools like start/stop_ddb_roll_pump and ddb_roll_pump_status, which manage or report pump state rather than drain rolls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit instructions on how to use the tool: pass the previous response's cursor as `after`, start with 0 (or omit) for everything buffered. It also provides a critical usage directive for the bridging scenario: 'mirror its actual dice values when bridging — never re-roll.' This directly tells the agent when and how to use it, leaving no ambiguity about the polling workflow.
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?
No annotations exist, so the description carries full burden. It discloses that the tool subscribes to a WebSocket, buffers rolls, posts nothing itself, and mandates mirroring (never re-rolling). It explains the skip behavior for Beyond20 overrides and the consequence of includeBeyond20=true. This is comprehensive behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is rich but every sentence adds value. It front-loads the core purpose, then explains the buffering, the no-posting policy, the default skip behavior, and safe usage patterns. It is well-structured and not wasteful despite length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a subscription-based tool with no output schema, this description explains the full workflow: how to start, what happens to rolls (buffered), how to retrieve them (via ddb_poll_rolls), and the integration implication (must mirror). It also addresses edge cases (Beyond20 override and includeBeyond20). An agent has everything needed to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Though schema coverage is 100%, the description adds substantial meaning beyond the schema: gameId defaults to env var, characterNames omitted covers every character, and includeBeyond20 explains the gap-fill vs. capture-all tradeoff. This clearly explains the intent and caveats of each parameter, exceeding the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool captures live D&D Beyond dice rolls, subscribes to the game-log WebSocket, and buffers rolls. It explicitly names the drain mechanism (ddb_poll_rolls) and distinguishes itself from siblings by noting it does not post anywhere. The verb 'capture' plus resource ('live dice rolls from a campaign game log') is specific and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use: to capture rolls that Beyond20 may have missed, safe to arm table-wide or per-player. It instructs to drain with ddb_poll_rolls and warns about includeBeyond20 causing double-posting. This gives clear context and implicit exclusions (e.g., don't use if you want to bridge directly, or if you need all rolls without gap-filling behavior).
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
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/eschatus/beyond-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server