Skip to main content
Glama
yurii-mandzii

shadow-monitor-mcp

shadow-monitor-mcp

Open-source MCP server that lets any AI agent inspect Shadow Monitor capture files (uat-report-*.json.gz) — locally, with no upload.

Works with any client that speaks MCP over stdio: Cursor, Claude Desktop, Claude Code, Windsurf, VS Code Copilot Chat, Continue, Cline, Zed, and others.

Shadow Monitor (Chrome) records a UAT session
              ↓
     you download uat-report-….json.gz
              ↓
   this MCP server loads it for your AI

npm

shadow-monitor-mcp · npx -y shadow-monitor-mcp

GitHub

yurii-mandzii/shadow-monitor-mcp

Claude one-click

shadow-monitor-mcp.mcpb (all releases)

Agent Skill

SKILL.md (optional — teaches the agent when to call the tools)

License

MIT

Needs

Node.js 20+ for the MCP (Chrome extension is separate)


Companion: Shadow Monitor (Chrome extension)

This MCP does not record the browser. Capture comes from the extension:

Chrome Web Store

Shadow Monitor

User guide

Guide

Homepage

Docs site

Source

github.com/yurii-mandzii/shadow-monitor

Support / Privacy

Support · Privacy

  1. Install the extension → add your UAT domain in Settings.

  2. Hard-reload the tab (Cmd/Ctrl+Shift+R).

  3. Reproduce the bug → Download → get uat-report-*.json.gz (often under Downloads/uat-capture).


Related MCP server: Krometrail

MCP vs Skill (what you need)

Piece

What it is

Required?

MCP server

The actual tools (load_bundle, find_errors, …)

Yes — without it the agent cannot inspect the file

Agent Skill

A short playbook (SKILL.md) that says “when the user pastes a uat-report-*.json.gz, call load_bundle — don’t raw-read the file”

No — but strongly recommended so the agent behaves correctly

You can install them together (Option A) or separately (MCP via UI / .mcpb, skill via init or copy).


Install the MCP

You need Node.js 20+ once (download the LTS installer — click through; no coding required).

Option A — One command (MCP + skill together)

Open Terminal / PowerShell, paste, Enter:

npx -y shadow-monitor-mcp init --client all

Registers the server for Claude Desktop + Cursor + Claude Code and installs the Agent Skill. Then restart your AI app (Claude Desktop: fully quit with Cmd+Q).

Only one app? Use --client cursor, --client desktop, or --client claude-code.

Option B — UI / click (MCP only)

Claude Desktop — one-click .mcpb

  1. Download shadow-monitor-mcp.mcpb

  2. Double-click it, or Claude Desktop → Settings → Extensions → Install Extension…

Any MCP client — paste JSON

{
  "mcpServers": {
    "shadow-monitor": {
      "command": "npx",
      "args": ["-y", "shadow-monitor-mcp"]
    }
  }
}

App

Where

Cursor

Settings → Tools & MCP → add / edit MCP config

Claude Desktop

Settings → Developer, or claude_desktop_config.json

Others

Their MCP / custom-tools settings — same JSON

Option C — From a git clone

cd shadow-monitor-mcp
npm install && npm run build && npm run init:all

Install the skill (optional, separate is fine)

The skill teaches Claude/Cursor to call load_bundle instead of raw-reading the report.

Claude Desktop (what you use in Customize → Skills)

~/.claude/skills/ is Claude Code only — Desktop does not list those files.

  1. Run npx -y shadow-monitor-mcp init --client desktop (or all) — it writes
    ~/Downloads/shadow-monitor-bundles.zip

  2. Claude Desktop → Customize → Skills → Add → Upload a skill

  3. Upload that ZIP → enable the skill

  4. Ensure Settings → Capabilities → Code execution and file creation is on

Or zip manually: folder shadow-monitor-bundles/ containing SKILL.md.

Cursor / Claude Code (filesystem)

init also copies SKILL.md into:

  • Cursor → ~/.cursor/skills/shadow-monitor-bundles/

  • Claude Code → ~/.claude/skills/shadow-monitor-bundles/


Use it

In any connected agent chat, paste an absolute path:

Investigate /Users/you/Downloads/uat-capture/uat-report-2026-07-27T07-34-55-912Z.json.gz and show me what failed.

Expected flow: load_bundlebundle_overviewfind_errors → drill into network / console / actions.

  • Path must be absolute (/Users/… or C:\Users\…).

  • Don’t treat the .json.gz name as a skill / slash-command.

  • Encrypted exports: pass passphrase to load_bundle.


Tools

Tool

What it does

check_bundle

Cheap probe: is this path a workable Shadow Monitor .json / .json.gz?

load_bundle

Load .json / .json.gz / encrypted report

bundle_overview

Errors, slow requests, actions, navigation

bundle_metadata

Schema, page, window, counts

find_errors

Network + console failures

search_network

Filter requests

get_network_request

Full request by id

get_console_event

Full console event by id

get_user_actions

Click / navigate story timeline

get_action_replay

rrweb slice for one action

get_semantics

Pre-computed semantics (schema 2/3)

bundleId is optional when only one bundle is loaded.


Optional settings

Env

Effect

SHADOW_MONITOR_FORMAT=toon

Smaller list responses (TOON)

SHADOW_MONITOR_REDACT=false

Keep signed-URL params / auth headers raw


Commands (developers)

Command

Purpose

npm run build

Compile → dist/

npm run init / init:cursor / init:all

Register MCP + skill

npm run init:print

Preview config, write nothing

npm start

Run MCP server (stdio)

npm test

Format / token tests

npm run test:smoke -- <bundle>

End-to-end against a report

npm run pack:mcpb

Build shadow-monitor-mcp.mcpb locally

npx -y shadow-monitor-mcp init --client all
npx -y shadow-monitor-mcp init --launch npx      # client uses npx (default after npm install)
npx -y shadow-monitor-mcp init --launch local    # client uses absolute dist/cli.js
npx -y shadow-monitor-mcp init --no-skill        # MCP only
npx -y shadow-monitor-mcp init --print

Troubleshooting

Problem

Fix

404 shadow-monitor-mcp

Package not on npm yet — use Option C from a clone, or the .mcpb release asset.

Server disconnected

Node 20+, restart the app, check MCP config / .mcpb install.

Claude Desktop ignores config

Fully quit (Cmd+Q) and reopen.

Agent raw-reads the .json.gz

Install the skill (init, or copy SKILL.md).

No report file

Install the Chrome extension first.


Development

npm install
npm run build
npm start
npm test

Capture format: shadow-monitor README · BUNDLE_FORMAT.md.

MIT — see LICENSE.

Available Tools

11 tools
bundle_metadataBundle metadataA

Lightweight metadata for a loaded bundle without any event data: schema version, generation time, page, capture window, counts, capture-start context (URL, title, user agent), userDescription (QA bug note), page.navigation / color scheme, journey session list, and load info.

ParametersJSON Schema
NameRequiredDescriptionDefault
bundleIdNoBundle handle from load_bundle. Optional when exactly one bundle is loaded.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It accurately states the tool returns metadata without event data, but omits important context such as that the bundle must be loaded (implied by 'loaded bundle') and that bundleId is optional if only one bundle is loaded. These are behavioral constraints that should be explicit.

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 a single sentence that lists many fields, which is efficient but could be more readable with structure (e.g., bullet points). No irrelevant information, 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 no output schema, the description provides a solid overview of return fields (schema version, generation time, etc.), covering the main components. It is fairly complete for a metadata tool, though some field details (e.g., what counts include) are implied rather than explicit.

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% (single optional bundleId with description). The tool description adds no extra meaning beyond the schema's own parameter description. Baseline 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 retrieves 'lightweight metadata for a loaded bundle without any event data' and enumerates specific fields, effectively distinguishing it from sibling tools like bundle_overview or those that return events.

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 explicit guidance on when to use this tool versus alternatives; the description simply lists what it returns. It does not specify context like 'use for a quick summary before fetching events' or mention that a bundle must be loaded first.

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

bundle_overviewBundle overviewA

High-level aggregates for a loaded bundle: page, capture window, event counts, network status/method breakdown, slowest and largest requests, error totals, console levels, user-action kinds, and the navigation timeline. Prefers the bundle's pre-computed semantics when present (schema 2/3); falls back to scanning events for schema 1. Use this first to orient before drilling in.

ParametersJSON Schema
NameRequiredDescriptionDefault
bundleIdNoBundle handle from load_bundle. Optional when exactly one bundle is loaded.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description discloses internal behavior: prefers pre-computed semantics (schema 2/3) and falls back to scanning events for schema 1. This goes beyond basic read-only indication and helps agents understand performance implications.

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 efficiently convey purpose, internal behavior, and usage guidance. No redundant information; every phrase 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?

Despite no output schema, the description lists all major aggregates (page, capture window, network breakdown, errors, etc.) so agents know exactly what to expect. The fallback behavior adds 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?

Schema coverage is 100% and the description adds no extra parameter details. The bundleId parameter is well-documented in the schema, so the description doesn't need to augment it.

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 provides 'high-level aggregates for a loaded bundle' and lists specific metrics (page, capture window, event counts, etc.), distinguishing it from sibling tools that focus on individual aspects (e.g., find_errors, get_network_request).

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?

Explicitly advises to 'Use this first to orient before drilling in', giving clear usage context. While it doesn't list exclusions or alternatives, the guidance is strong enough to imply this is the starting point.

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

check_bundleCheck if a file is a Shadow Monitor bundleA

Cheap probe of a local path: does it look like a workable Shadow Monitor diagnostic export (.json or .json.gz, any folder/name)? Returns workable / looksLikeShadowMonitor, encoding, encrypted, schemaVersion, and hints. Does not index events — use before load_bundle when the path is unfamiliar, or when load_bundle might fail.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute or relative path to a candidate file.
passphraseNoOptional passphrase if the file may be an encrypted export.

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, so description carries the burden. It discloses it is a cheap probe, does not index events, and returns specific fields. Does not mention side effects (likely none) or permissions, but is transparent about its scope.

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 with critical information front-loaded. Every sentence serves a purpose: first states function and return, second clarifies non-indexing and usage hint. No unnecessary 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?

Given no output schema, the description lists return fields. It covers behavior (no indexing) and usage. Does not mention error cases or format of return, but is sufficient for a simple probe 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 coverage is 100% with descriptions for both parameters. The description adds little beyond schema: it rephrases path as 'local path' and mentions optional passphrase for encrypted exports. No additional semantic depth.

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 checks if a local path is a workable Shadow Monitor diagnostic export (with specific file extensions) and lists the return fields. It distinguishes itself from 'load_bundle' by positioning as a preliminary probe.

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?

Explicitly says 'use before load_bundle when the path is unfamiliar, or when load_bundle might fail', providing clear context. Does not explicitly exclude other siblings, but the guidance is strong.

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

find_errorsFind errorsA

Return network and console errors in time order. Network errors are failed/aborted requests, blocked (status 0), and 4xx/5xx responses (phase:"start" begin-markers are excluded). Console errors are level matching /error/i or uncaught===true (and level=warn when includeWarnings is true). Each row carries the event id (string like "e_3069") for get_network_request / get_console_event. Network rows include responseBodyPreview so API error messages are visible without a detail call.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows. Default 50.
bundleIdNoBundle handle from load_bundle. Optional when exactly one bundle is loaded.
includeWarningsNoAlso include console warnings (level=warn). Default false.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description fully discloses error definitions, row structure including event ID and responseBodyPreview, and optionality of bundleId. It explains behavior but omits pagination or ordering details.

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?

Four well-structured sentences front-load the main purpose, then detail error definitions and row format. No redundant or unnecessary information.

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 error definitions, row structure, and parameter context well. Missing explicit output format and ordering direction, but overall adequate for a 3-param tool with no output schema.

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%, and the description adds context: bundleId's optionality when one bundle loaded, includeWarnings meaning, and references to load_bundle. It doesn't add to limit beyond 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 returns network and console errors in time order, defines each error type explicitly, and distinguishes from sibling tools by mentioning event IDs for get_network_request/get_console_event.

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 context on when to use (for chronological error list) and hints at alternative tools (detail calls via event ID), but lacks explicit don't-use guidance or comparison with search_network.

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

get_action_replayGet action replay (rrweb slice)A

Return the raw rrweb events for one user-action step, with the FullSnapshot anchor prepended so a viewer can render just that step. Pass actionId (from get_user_actions) or explicit fromTs/toTs. This can be large — optional maxEvents caps the returned list. Does not change get_user_actions (which only returns the lightweight rrweb window pointer).

ParametersJSON Schema
NameRequiredDescriptionDefault
toTsNoExplicit window end (epoch ms).
fromTsNoExplicit window start (epoch ms).
actionIdNoAction id / sourceId from get_user_actions.
bundleIdNoBundle handle from load_bundle. Optional when exactly one bundle is loaded.
maxEventsNoCap on returned rrweb events. Default: no cap.
actionIndexNo0-based index into semantics.userActions (alternative to actionId).

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses the size warning and that it doesn't alter get_user_actions. However, it omits idempotency, error handling, or authorization needs. Adequate but not thorough.

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 well-structured sentences with no fluff. Front-loaded with purpose, then parameter guidance and behavioral notes. Every sentence 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?

For a tool with 6 parameters, no annotations, and no output schema, the description covers identification methods, size mitigation, and relationship to get_user_actions. Missing return value specifics (e.g., FullSnapshot details) but acceptable given no output schema.

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 baseline is 3. The description adds context: actionId references get_user_actions, fromTs/toTs are explicit timestamps, bundleId is optional when one bundle loaded, actionIndex is an alternative 0-based index into semantics.userActions. This meaningfully supplements 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 returns raw rrweb events for a user-action step with FullSnapshot anchor prepended. It distinguishes from sibling get_user_actions, which only returns lightweight pointers.

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 guidance on how to identify the step: pass actionId from get_user_actions or explicit fromTs/toTs. Mentions optional maxEvents for large output. Lacks explicit when-not-to-use or alternatives beyond the one sibling mentioned.

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

get_console_eventGet console eventA

Return the full detail of one captured console event by its event id (string like "e_3068", or bare number). Includes level, message/args, stack trace, and originating URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEvent id from a search/find_errors row (string like "e_5", or legacy number).
redactNoOverride field hygiene for this call. Default: on.
bundleIdNoBundle handle from load_bundle. Optional when exactly one bundle is loaded.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses returned fields (level, message/args, stack trace, URL), which is helpful. However, it does not state that the operation is read-only or has no side effects, which would be useful 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 two sentences, front-loaded with the main action. Every sentence earns its place, 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?

Given no output schema, the description adequately covers the key outcome and fields. It could slightly improve by stating the return format (e.g., object), but it is sufficiently complete for an agent to understand the tool's purpose.

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% (baseline 3). The description adds value by explaining id format (string like 'e_3068' or bare number) and its origin from search results. It also clarifies that redact overrides field hygiene, adding context 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?

The description clearly states the tool returns full detail of one console event by event id. It uses a specific verb ('Return') and resource ('console event detail'), and distinguishes from siblings like find_errors (listing) and get_network_request (different event type).

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 after search/find_errors (id from a row), but does not explicitly state when to use or not use this tool versus alternatives. No exclusion criteria or comparison to siblings is provided.

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

get_network_requestGet network requestA

Return the full detail of one captured network request by its event id (pass the string id from find_errors/search_network, e.g. "e_3069"; bare numbers like 3069 are also accepted). Includes headers and request/response bodies. Very large bodies are truncated with the original length noted. Signed-URL params and sensitive headers are redacted by default; pass redact=false to see raw values.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEvent id from a search/find_errors row (string like "e_5", or legacy number).
redactNoOverride field hygiene for this call. Default: on.
bundleIdNoBundle handle from load_bundle. Optional when exactly one bundle is loaded.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries full burden and discloses key behaviors: includes headers/bodies, truncation with original length noted, and redaction with optional override. It lacks detail on error handling or authorization, but covers major traits.

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?

Four sentences with efficient structure. First sentence states main purpose, subsequent sentences add key details. No redundant or 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?

Despite no output schema, the description covers what is returned (headers, bodies) and important behaviors (truncation, redaction). It lacks details on error responses or exact return format, but is sufficient for a focused detail 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?

Schema coverage is 100% (baseline 3). The description adds practical examples for the id parameter (e.g., 'e_3069', bare numbers accepted), clarifies redact behavior ('pass redact=false'), and explains bundleId optionality. This adds clear value beyond 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 that the tool returns the full detail of one captured network request by event id. It specifies included content (headers, bodies) and references sibling tools find_errors and search_network, distinguishing itself effectively.

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 instructs to use event ids from find_errors or search_network, providing clear context for when to use this tool. However, it does not explicitly exclude alternatives or state when not to use it.

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

get_semanticsGet bundle semanticsA

Return the bundle's pre-computed semantics block when present (schema 2/3): stateAtCapture (last click target, last error, window), errorSummary (curated console/network failures), userActions (with text/selector/label), networkSummary, and pageNavigations. Prefer this for UAT triage orientation; use find_errors / get_* for per-event drill-down.

ParametersJSON Schema
NameRequiredDescriptionDefault
bundleIdNoBundle handle from load_bundle. Optional when exactly one bundle is loaded.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, description carries behavior disclosure burden. It notes the block is 'when present' and lists returned fields, implying safe read operation. Lacks explicit statement of side effects, but read nature is clear.

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 with zero wasted words: first sentence lists content, second sentence provides usage alternatives. Front-loaded with key purpose.

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 tool with one optional parameter and no output schema, description fully covers what the tool returns (listing fields) and when to use it. No gaps remain.

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% for the single parameter, so baseline is 3. Description does not add parameter details beyond schema, which is acceptable as schema already explains bundleId's purpose and optionality.

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 returns the bundle's pre-computed semantics block, listing specific fields (stateAtCapture, errorSummary, etc.). Distinguishes from siblings by advising to use find_errors/get_* for detailed drill-down.

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 recommends using this tool for UAT triage orientation and directs to alternative tools (find_errors, get_*) for per-event analysis, providing clear when-to-use and 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.

get_user_actionsGet user actionsA

Return the full time-ordered user-action timeline (never just the last action — that lives on stateAtCapture.lastUserAction / bundle_overview). DEFAULT types are the story timeline: click, submit, navigate, toggle, select (plus dblclick/contextmenu/page_load) — NOT raw text inputs. Pass types:["input"] explicitly to see keystroke commits. source "auto" (default) uses semantics.userActions only when that list is genuinely populated (≥3 story actions, or the bundle has type:"action" events); otherwise reconstructs from rrweb so today's thin-semantics bundles still get the full ~20-row story. Explicit source "semantics" / "rrweb" force one path. Response includes actionsSource: "semantics" | "rrweb". Each action includes an rrweb window { fromTs, toTs, anchorId } for get_action_replay. Default limit 50.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDefault 50.
typesNoFilter to these kinds. Default (story view): click, dblclick, contextmenu, submit, navigate, page_load, toggle, select. Text inputs are excluded unless you pass types:["input"]. Scroll / mousedown / focus need an explicit types request on the rrweb path.
offsetNoDefault 0.
sourceNoAction source: "auto" (default — rich semantics.userActions when available, else full rrweb timeline), "semantics" (force pre-computed list), or "rrweb" (force replay derivation). Never returns only lastUserAction.
bundleIdNoBundle handle from load_bundle. Optional when exactly one bundle is loaded.

TDQS

A4.6/5.0
Behavior5/5

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

Discloses key behaviors: never last action, default types, source auto logic with thresholds, explicit source options, response includes actionSource, and each action includes rrweb window. No annotations to contradict.

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?

Description is information-dense but front-loaded with main purpose. Every sentence adds value, though slightly dense for quick scanning.

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?

Comprehensive for a read tool: covers default behavior, all parameters, response structure, and integration with other tools (get_action_replay). No output schema needed as return values are described.

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 baseline 3. The description adds value by explaining default types, source auto decision logic, and clarifying that types exclude raw text inputs by default.

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 returns the full user-action timeline, distinguishes from sibling tools like bundle_overview which gives last action, and mentions get_action_replay for replay windows.

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 guidance on when to use this tool (full timeline vs last action) and how to filter by types or source, but does not explicitly exclude other use cases or name alternative tools beyond last action reference.

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

load_bundleLoad a Shadow Monitor bundleA

Load and index a Shadow Monitor diagnostic bundle from a local file path. Handles plain JSON, gzip (.json.gz), and per-bundle encrypted exports (supply passphrase for the latter). Returns a bundleId used by the other tools, plus a quick summary. Loading the same path twice reuses the existing handle unless reload is true.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute or relative path to the bundle file.
reloadNoRe-read from disk even if this path is already loaded.
bundleIdNoOptional explicit handle. Auto-generated when omitted.
passphraseNoDecryption passphrase, required only for encrypted bundles.

TDQS

A4/5.0
Behavior3/5

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

The description discloses format handling, reuse on same path unless reload=true, and the need for a passphrase. However, with no annotations provided, it omits potential side effects (e.g., memory usage), error conditions, or permission requirements. The level of detail is adequate but not exhaustive.

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 concise sentences: first states the core action and returns, second clarifies reuse and reload. Information is front-loaded and every sentence contributes meaningfully. No extraneous 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?

Given no output schema, the description adequately covers input formats, return of bundleId and summary, and reload behavior. It does not detail the summary contents or error scenarios, but for a load tool these are secondary. The description feels comprehensive for typical use.

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 adds value beyond schema by explaining when `passphrase` is needed (encrypted bundles) and the `reload` parameter's effect on handle reuse. This enhances understanding of parameter usage.

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 loads and indexes a Shadow Monitor diagnostic bundle from a local file path, specifying supported formats (JSON, gzip, encrypted) and the return of a bundleId and summary. This differentiates it from sibling tools by positioning it as the 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 Guidelines3/5

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

The description implies the bundleId is used by other tools, suggesting this should be called first, but it lacks explicit when-to-use or when-not-to-use guidance (e.g., 'use this before bundle_metadata'). No alternative strategies are mentioned.

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

search_networkSearch network requestsA

Filter the captured network requests and return compact rows (id, time, method, status, url, duration, type, size). Combine any filters: urlContains, method, exact status or statusMin/statusMax, failed, resourceType, mimeType, bodyContains (searches request + response bodies), minDurationMs. Filters match the raw captured values; displayed urls are field-hygiened. Paginate with limit/offset. Fetch full detail with get_network_request using a row's id (string like "e_3069").

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDefault 50.
failedNoOnly failed/blocked requests.
methodNoCase-insensitive exact match, e.g. POST.
offsetNoDefault 0.
statusNoExact status code.
bundleIdNoBundle handle from load_bundle. Optional when exactly one bundle is loaded.
mimeTypeNoSubstring match on response mime type.
statusMaxNo
statusMinNo
urlContainsNo
bodyContainsNoCase-insensitive search across request/response bodies. Short numeric needles (1–4 digits, e.g. "403") use word-boundary matching to avoid UUID/hex false positives; longer text uses substring match.
resourceTypeNoe.g. xhr, fetch, script, document.
minDurationMsNo

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses that filters match raw values, displayed URLs are field-hygiened, and the row id format (e.g., 'e_3069'). It doesn't mention auth needs or rate limits, but for a search tool these are reasonable omissions.

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 two sentences, front-loaded with core purpose. The second sentence lists filters compactly, but could be better structured (e.g., bullet points or grouping). Still, it's concise and informative.

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 13 optional parameters and no output schema, the description covers return format, filter combination, pagination, and cross-reference to get_network_request. It doesn't specify default sorting or empty-result behavior, but overall it's sufficiently complete.

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 schema coverage at 69%, the description adds value by summarizing filter options and providing special behavior details (e.g., word-boundary matching for bodyContains numeric needles). This goes beyond the schema's basic descriptions.

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 'Filter' and the resource 'captured network requests', specifies the compact rows returned (id, time, method, status, etc.), and distinguishes from sibling tool get_network_request which fetches full 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 explains how to combine filters and paginate with limit/offset, and directs users to get_network_request for full details. However, it doesn't explicitly state when not to use this tool or mention alternatives like find_errors for error-focused searches.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 1 tool updatev1.0.2
    • Addedcheck_bundle
  2. 10 tool updatesv1.0.1
    • First observedbundle_metadata
    • First observedbundle_overview
    • First observedfind_errors
    • First observedget_action_replay
    • First observedget_console_event
    • First observedget_network_request
    • First observedget_semantics
    • First observedget_user_actions
    • First observedload_bundle
    • First observedsearch_network

TDQS

A4.1/5.0
Disambiguation5/5

Each tool targets a distinct aspect of the diagnostic bundle: loading, overview, errors, network, console, user actions, replay, and semantics. There is no overlap; every tool has a clear and separate purpose.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern (e.g., load_bundle, find_errors, get_network_request), but bundle_metadata and bundle_overview use noun_noun, introducing a slight inconsistency. Overall, the pattern is clear and predictable.

Tool Count5/5

With 10 tools, the set is well-scoped for a diagnostic bundle analysis server. Each tool fills a necessary role without redundancy or bloat, covering loading, overview, detailed inspection, and replay.

Completeness4/5

The tool set covers the core workflows of loading, overview, error analysis, network/console inspection, user actions, and replay. Minor gaps exist, such as a lack of a full event search, but the essential functionality for analysis is present.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    Enables AI agents to debug code and automate browsers using Chrome DevTools Protocol, supporting breakpoints, variable inspection, and replayable interaction recording.
    35
    339
    16
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Gives AI coding agents eyes into running applications by recording browser activity and providing session investigation tools for debugging.
    12
    3
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Enables AI agents to inspect and control a live Chromium browser for frontend debugging, providing console logs, network requests, DOM snapshots, and accessibility analysis.
    19
    8
    MIT

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/yurii-mandzii/shadow-monitor-mcp'

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