Skip to main content
Glama

Server Quality Checklist

58%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v1.0.0

  • Disambiguation4/5

    Most tools have distinct purposes: automate (full sync), batch_screenshot (multiple URLs), click_and_screenshot (interactive), get_job (status check), run_script (async execution), and screenshot (single capture). However, riddle_automate and riddle_run_script both involve running Playwright scripts, which could cause confusion about when to use each, though their sync vs. async nature helps differentiate them.

    Naming Consistency5/5

    All tool names follow a consistent 'riddle_verb_noun' pattern with snake_case throughout, such as riddle_automate, riddle_batch_screenshot, and riddle_get_job. This predictability makes it easy for agents to understand and select tools without naming confusion.

    Tool Count5/5

    With 6 tools, the server is well-scoped for its automation and screenshot domain. Each tool serves a clear, non-redundant function, from basic screenshots to complex script execution, making the count appropriate and manageable for agents.

    Completeness4/5

    The toolset covers core automation workflows: screenshotting (single, batch, interactive), script execution (sync and async), and job status checking. A minor gap is the lack of tools for more advanced automation tasks like form filling or data extraction, but the provided tools allow agents to handle most common scenarios effectively.

  • Average 3.3/5 across 6 of 6 tools scored.

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

  • Add a LICENSE file by following GitHub's guide. Once GitHub recognizes the license, the system will automatically detect it within a few hours.

    If the license does not appear after some time, you can manually trigger a new scan using the MCP server admin interface.

    MCP servers without a LICENSE cannot be installed.

  • 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.json to 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

  • Behavior2/5

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

    With no annotations, the description carries the full burden of behavioral disclosure. It states the tool returns base64 images, which is useful, but lacks critical details: it doesn't mention whether this is a read-only operation, potential rate limits, authentication needs, error handling, or how device selection affects output. For a tool that performs external actions (screenshotting URLs), this is a significant gap.

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

    Conciseness5/5

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

    The description is extremely concise and front-loaded: two sentences that directly state the action and output with zero wasted words. Every sentence earns its place by conveying essential information efficiently.

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

    Completeness2/5

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

    Given the tool's complexity (external actions, multiple parameters) and lack of annotations or output schema, the description is incomplete. It misses behavioral context like safety, performance implications, and error scenarios. While concise, it doesn't provide enough information for an agent to use the tool confidently without additional assumptions.

    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 50% (only 'urls' has a description). The description adds no parameter semantics beyond what the schema provides—it doesn't explain the 'device' parameter's purpose or impact, nor does it clarify URL format requirements. With partial schema coverage, the description doesn't compensate adequately, but it doesn't contradict the schema either.

    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: 'Screenshot multiple URLs' specifies the verb (screenshot) and resource (URLs), and 'Returns array of base64 images' indicates the output format. It distinguishes from siblings like 'riddle_screenshot' by emphasizing batch capability ('multiple URLs'), though it doesn't explicitly contrast with all siblings.

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

    Usage Guidelines2/5

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

    No guidance is provided on when to use this tool versus alternatives. It doesn't mention when to prefer this batch tool over 'riddle_screenshot' (likely for single URLs) or 'riddle_click_and_screenshot' (which may involve interaction), nor does it specify prerequisites or exclusions for usage.

    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?

    With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves 'status and artifacts,' implying a read-only operation, but doesn't specify if it requires authentication, has rate limits, or details the format of returned data. This leaves significant gaps in understanding the tool's behavior.

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

    Conciseness5/5

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

    The description is a single, efficient sentence that directly states the tool's function without any unnecessary words. It's front-loaded and appropriately sized, making it easy for an agent to parse quickly.

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

    Completeness2/5

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

    Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'status and artifacts' entail, such as possible states or artifact types, nor does it cover error handling or prerequisites. For a tool with no structured behavioral data, this leaves too many gaps for effective use.

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

    Parameters3/5

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

    The input schema has 100% description coverage, with the 'job_id' parameter clearly documented. The description doesn't add any extra meaning beyond the schema, such as explaining what a 'Riddle job' is or how to obtain the ID, so it meets the baseline score without enhancing parameter understanding.

    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 ('Get') and resource ('status and artifacts of a Riddle job'), making it easy to understand what it does. However, it doesn't explicitly differentiate from sibling tools like 'riddle_automate' or 'riddle_run_script', which might also involve job-related operations, so it misses the highest score.

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

    Usage Guidelines2/5

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

    The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as needing a job ID from another tool, or clarify its role among siblings like 'riddle_batch_screenshot' or 'riddle_click_and_screenshot', leaving the agent without usage context.

    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?

    With no annotations provided, the description carries full burden. It discloses the async behavior and job_id return mechanism, but lacks critical details like error handling, timeout behavior, authentication needs, rate limits, or what 'page object available' entails in the script 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 extremely concise with two sentences that directly convey core functionality and return value. Every word earns its place, and it's front-loaded with the primary action.

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

    Completeness2/5

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

    For a 4-parameter tool with no annotations, no output schema, and 50% schema coverage, the description is inadequate. It doesn't explain the return format beyond job_id, doesn't cover undocumented parameters, and lacks behavioral context needed for safe invocation.

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

    Parameters3/5

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

    Schema description coverage is 50% (only 'url' and 'script' have descriptions). The description adds no parameter-specific information beyond what the schema provides. It implies 'url' and 'script' are required via context, but doesn't explain 'width' and 'height' parameters at all, leaving them undocumented.

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

    Purpose4/5

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

    The description clearly states the action ('Run a Playwright script') and target ('on a page'), and specifies it's asynchronous. However, it doesn't differentiate from sibling tools like 'riddle_automate' or 'riddle_batch_screenshot' which might also involve script execution or automation.

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

    Usage Guidelines2/5

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

    The description provides no guidance on when to use this tool versus alternatives like 'riddle_automate' or 'riddle_batch_screenshot'. It mentions the async nature and job_id return, but lacks explicit when/when-not instructions or prerequisites for usage.

    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. It mentions the API ('Riddle API') and output format, but lacks details on behavioral traits such as rate limits, authentication needs, error handling, or whether the operation is idempotent. For a tool with no annotation coverage, this is a significant gap in transparency.

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

    Conciseness5/5

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

    The description is a single, efficient sentence that front-loads the core action ('Take a screenshot') and includes essential details (resource, API, output format) without unnecessary words. Every part of the sentence adds value, 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.

    Completeness3/5

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

    Given no annotations and no output schema, the description provides basic purpose and output format but lacks completeness for a tool with 4 parameters and potential complexity (e.g., API behavior, error cases). It is adequate as a minimum viable description but has clear gaps in contextual details needed for full understanding.

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

    Parameters3/5

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

    Schema description coverage is 100%, so the schema already documents all parameters (url, width, height, device) with descriptions and defaults. The description does not add any parameter-specific semantics beyond what the schema provides, such as explaining interactions between device and width/height, so it meets the baseline of 3.

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

    Purpose5/5

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

    The description clearly states the specific action ('Take a screenshot') and resource ('of a URL using the Riddle API'), distinguishing it from siblings like 'riddle_batch_screenshot' (multiple screenshots) and 'riddle_click_and_screenshot' (interactive screenshot). It explicitly mentions the output format ('base64-encoded PNG image'), which helps differentiate its purpose.

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

    Usage Guidelines3/5

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

    The description implies usage for single URL screenshots but does not explicitly state when to use this tool versus alternatives like 'riddle_batch_screenshot' for multiple URLs or 'riddle_click_and_screenshot' for interactive actions. No exclusions or prerequisites are mentioned, leaving usage context somewhat vague.

    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 adds useful context about what the tool does ('wait for completion', 'return all artifacts', 'Includes console logs and network HAR') and its scope ('Full sync automation'), but it doesn't cover important behavioral traits like error handling, performance characteristics, or whether it's idempotent. For a tool with no annotations and complex automation, this leaves gaps.

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

    Conciseness5/5

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

    The description is appropriately sized and front-loaded, with every sentence earning its place. The first sentence states the core functionality, the second lists included artifacts, and the third emphasizes the automation scope—all without waste. It's efficient and well-structured.

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

    Completeness3/5

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

    Given the tool's complexity (automation with 5 parameters) and no annotations or output schema, the description is moderately complete. It covers the high-level purpose and scope but lacks details on return values, error cases, or performance implications. For a tool without structured output information, more guidance on what 'artifacts' entail would be beneficial.

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

    Parameters3/5

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

    Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description doesn't add any meaning beyond what the input schema provides, such as explaining interactions between parameters or providing additional usage examples. Baseline 3 is appropriate when the schema does the heavy lifting.

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

    Purpose5/5

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

    The description clearly states the tool's purpose with specific verbs ('Run a Playwright script, wait for completion, and return all artifacts') and resources ('Playwright script', 'artifacts', 'console logs', 'network HAR'). It distinguishes from siblings by emphasizing 'Full sync automation - one call does everything', contrasting with tools like riddle_batch_screenshot or riddle_click_and_screenshot that likely perform more limited operations.

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

    Usage Guidelines4/5

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

    The description provides clear context for when to use this tool ('Full sync automation - one call does everything'), implying it's for comprehensive automation tasks rather than simpler operations. However, it doesn't explicitly state when not to use it or name specific alternatives among the siblings, such as riddle_run_cript or riddle_screenshot, which might be better for lighter tasks.

    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 discloses key behavioral traits: 'Uses force-click by default to handle animated buttons' explains a default behavior not obvious from the schema. However, it doesn't mention error handling, timeout behavior, screenshot format, or what happens if the selector isn't found. For a mutation tool (clicks change state), more behavioral context would be helpful.

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

    Conciseness5/5

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

    The description is extremely concise (two sentences) and front-loaded with the core functionality. Every sentence adds value: the first states the exact workflow, the second provides usage context and a key behavioral detail. There's zero wasted verbiage.

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

    Completeness3/5

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

    Given no annotations, no output schema, and 5 parameters (with 80% schema coverage), the description is minimally adequate. It covers the basic workflow and one behavioral trait, but for a tool that performs actions (load, click, screenshot) with multiple parameters, it lacks details on output format, error conditions, and the purpose of the 'device' parameter. The context is incomplete for confident use.

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

    Parameters3/5

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

    Schema description coverage is 80%, so the baseline is 3. The description adds minimal parameter semantics beyond the schema: it implies the 'click' parameter is for interactive elements like buttons, and mentions 'force-click by default' which relates to the 'force' parameter. However, it doesn't explain the 'device' enum options or provide additional context for 'wait_ms' beyond the schema's default 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 specific action sequence: 'load URL, click a selector, take screenshot.' It distinguishes from siblings by focusing on single-click automation (vs. batch_screenshot, run_script, or generic screenshot). The phrase 'Good for testing button clicks, game starts, etc.' further clarifies the use case.

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

    Usage Guidelines4/5

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

    The description provides clear context for when to use this tool: 'Good for testing button clicks, game starts, etc.' It implies this is for simple automation scenarios. However, it doesn't explicitly state when NOT to use it or name specific alternatives among the sibling tools (e.g., when to choose riddle_batch_screenshot instead).

    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

riddle-mcp-server MCP server

Copy to your README.md:

Score Badge

riddle-mcp-server 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/davisdiehl/riddle-mcp-server'

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