Skip to main content
Glama
debugg-ai

Debugg AI MCP

Official
by debugg-ai

Probe Page

probe_page
Read-only

Probe one or more URLs to capture rendered state, page metadata, console errors, and network summaries. Returns screenshots, title, status, load time, and per-URL network details. Ideal for checking if a page broke after changes.

Instructions

Probe one or more URLs and return their rendered state — screenshot, page metadata (title/finalUrl/statusCode/loadTimeMs), structured console errors, and per-URL network summary (refetch loops collapse into one row by origin+pathname).

WHEN TO USE: "did I just break /settings?" / "smoke-test these 5 routes after my refactor" / "what's actually rendering at /dashboard?" — fast (<10s for 1 URL, <25s for 20), no LLM cost, no agent loop.

NOT FOR: scenario verification (sign in → click X → assert Y), interaction (clicks, form fills, scrolls), or anything requiring agent decisions. Use check_app_in_browser for those.

LOCALHOST SUPPORT: any localhost URL is auto-tunneled. Pre-flight TCP probe fails fast (<2s) if the dev server isn't listening.

BATCH MODE: pass up to 20 targets in one call to share browser session + tunnel — dramatically faster than firing parallel single-URL probes (one execution unit, not N). Per-URL waitForSelector / waitForLoadState / timeoutMs override defaults.

READINESS: navigation settles on CONTENT (the page's DOM going quiet), bounded — not on network silence, which never arrives on a live app, and not on 'load', which blocks on third-party embeds. The default is right for SPAs; reach for waitForSelector, not waitForLoadState, when you need to wait for something specific.

A single failed target's error appears in result.error without failing the whole batch — the other results stay valid.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
targetsYes1-20 URLs to probe. Each entry can carry its own per-URL wait config.
repoNameNoGitHub repository name (e.g. 'my-org/my-repo'). Auto-detected from the current git repo — only provide this to scope the probe to a different project context.
includeHtmlNoIf true, each result includes the page's outerHTML. Default false to keep response size sane.
captureScreenshotsNoIf true (default), one PNG screenshot is returned per target. Set false for very large batches or when only the structured data matters.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed2 schema fields changedv4.2.2
    • changedInput schema / properties / targets / items / properties / timeoutMs / description
      Previous value: -"Per-URL navigation timeout in milliseconds (1000-30000, default 10000)."New value: +"Per-URL budget in milliseconds for navigating AND settling this target (1000-30000, default 10000). The content settle spends what the navigation left over, so this is the whole cost of the target, not just the goto."
    • changedInput schema / properties / targets / items / properties / waitForLoadState / description
      Previous value: -"When to consider the page 'loaded' before capturing. Default 'load'. Use 'networkidle' for SPAs to wait until the bundle finishes rendering."New value: +"When to consider the page ready to capture. Default 'domcontentloaded', followed by a bounded content settle (the page's DOM going quiet) — that is what actually makes a client-rendered SPA safe to screenshot, and it needs no override. Only override for a specific reason: 'load' additionally blocks on every sub-resource, including third-party iframes and images we do not control, so a slow embed can time the whole probe out. 'networkidle' is accepted for compatibility but is never issued — a live site's network does not go idle (analytics, polling, websockets, ads) — and behaves as 'domcontentloaded'. To wait on something specific, use waitForSelector."
  2. Addedv3.7.4
  3. Removedv3.7.2
  4. Addedv2.6.1

TDQS

A4.8/5.0
Behavior5/5

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

The description adds substantial behavioral context far beyond the annotations: localhost auto-tunneling with fast-fail pre-flight probe, batch-mode session/timeout sharing, the content-settle readiness semantics ('DOM going quiet' rather than network idle or load), and partial-failure behavior where a single failed target's error appears in result.error without failing the whole batch. The readOnlyHint and openWorldHint annotations are consistent with this read-only probing tool, and there is no contradiction.

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

Conciseness4/5

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

The text is lengthy but deliberately sectioned with labeled headers (WHEN/WONT NOT use, LOCALHOST SUPPORT, BATCH MODE, READINESS), so an agent can scan or read with minimal overhead. Every sentence carries a distinct functional fact; a few points (e.g., the full waitForLoadState/networkidle discussion) could be tightened but are not filler.

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

Completeness5/5

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

There is no output schema, so the description must carry the return contract - and it does: it lists screenshot, title/finalUrl/statusCode/loadTimeMs, structured console errors, per-URL network summary, and the includeHtml option. Batch limits, localhost handling, timeouts, wait options, and error semantics are all covered; nothing an agent needs to call the tool correctly is missing.

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

Parameters4/5

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

Since schema description coverage is already 100%, the baseline is 3 and the schema does the heavy lifting. The description adds genuine decision-making beyond that baseline: waitForSelector nuance for SPA mounts, the explanation that networkidle is accepted but never issued against live sites, and batch-mode guidance that up to 20 targets share one execution unit for speed.

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

Purpose5/5

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

The description opens with a specific verb and resource - 'Probe one or more URLs and return their rendered state' - and enumerates the exact return payload (screenshot, title/finalUrl/statusCode/loadTimeMs, console errors, per-URL network summary). It also distinguishes itself from its sibling by naming check_app_in_browser explicitly in the NOT FOR section.

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 WHEN TO USE section gives concrete agent-facing queries ('did I just break /settings?', 'smoke-test these 5 routes') and the decision constraints (fast, no LLM cost, no agent loop). The NOT FOR section explicitly rules out scenario verification and interaction and names the alternative: 'Use check_app_in_browser for those.' An agent knows exactly when to pick this tool over its sibling.

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

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/debugg-ai/debugg-ai-mcp'

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