Skip to main content
Glama

Riddle MCP Server

MCP server that wraps the Riddle API for Claude Code integration. Take screenshots, run browser automation, and capture console logs + network HAR data.

Installation

  1. Clone this repo

  2. Install dependencies: npm install

  3. Add to your Claude Code MCP settings (~/.claude.json or project .claude/settings.json):

{
  "mcpServers": {
    "riddle": {
      "command": "node",
      "args": ["/path/to/riddle-mcp-server/index.js"],
      "env": {
        "RIDDLE_API_KEY": "rdc_live_your_key_here"
      }
    }
  }
}
  1. Restart Claude Code

Available Tools

riddle_screenshot

Take a screenshot of any URL. Returns base64-encoded PNG.

riddle_screenshot(url: "https://example.com", device: "iphone")

Options:

  • url (required): URL to screenshot

  • device: "desktop" | "ipad" | "iphone"

  • width, height: Custom viewport (if not using device preset)

riddle_batch_screenshot

Screenshot multiple URLs at once.

riddle_batch_screenshot(urls: ["https://site.com", "https://site.com/page2"], device: "desktop")

riddle_automate

Run a Playwright script, wait for completion, and get all artifacts including console logs and network HAR.

riddle_automate(
  url: "https://example.com",
  script: "await page.click('button'); await page.screenshot({path: 'result.png'});",
  device: "ipad"
)

Returns:

  • Screenshots saved to /tmp/

  • Console logs (errors, warnings, last 20 log entries)

  • Network HAR summary (total requests, failed requests, last 10 requests)

riddle_run_script

Run a Playwright script asynchronously. Returns job_id to check later.

riddle_run_script(
  url: "https://example.com",
  script: "await page.click('button'); await page.screenshot({path: 'result.png'});"
)

riddle_get_job

Check status and get artifacts of an async job.

riddle_get_job(job_id: "job_abc123")

riddle_click_and_screenshot

Simple automation: load URL, click a selector, take screenshot.

riddle_click_and_screenshot(url: "https://example.com", click: "button.start", wait_ms: 2000)

Device Presets

Device

Width

Height

desktop

1280

720

ipad

820

1180

iphone

390

844

Benefits

  • No permission prompts - tools are pre-approved in Claude Code

  • Direct image return - Claude can see screenshots immediately

  • Console + Network capture - Debug issues without manual browser inspection

  • Cleaner workflow - no bash/curl needed

License

MIT

Available Tools

6 tools
riddle_automateA

Run a Playwright script, wait for completion, and return all artifacts. Includes console logs and network HAR. Full sync automation - one call does everything.

Inputs: url (required), script (required), device, timeout_sec, +1 more.

riddle_batch_screenshotC

Screenshot multiple URLs. Returns array of base64 images.

Inputs: urls (required), device.

riddle_click_and_screenshotA

Simple automation: load URL, click a selector, take screenshot. Good for testing button clicks, game starts, etc. Uses force-click by default to handle animated buttons.

Inputs: url (required), click (required), wait_ms, device, +1 more.

riddle_get_jobC

Get status and artifacts of a Riddle job

Inputs: job_id (required).

riddle_run_scriptC

Run a Playwright script on a page (async). Returns job_id to check status later.

Inputs: url (required), script (required), width, height.

riddle_screenshotA

Take a screenshot of a URL using the Riddle API. Returns base64-encoded PNG image.

Inputs: url (required), width, height, device.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 6 tools

    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.

    Related MCP Connectors