Skip to main content
Glama

πŸ” WebScout MCP

License: ISC Node.js Version MCP SDK

WebScout MCP is a powerful Model Context Protocol (MCP) server designed for reverse engineering web applications, particularly chat interfaces and streaming APIs. It provides comprehensive browser automation tools to discover, analyze, and capture network traffic from complex web applications.

✨ Key Features

πŸ€– Automated Reverse Engineering

  • One-Click Analysis: Automatically navigate to web applications and capture streaming endpoints

  • Smart Pattern Detection: Advanced detection of SSE, WebSocket, chunked transfers, and custom streaming formats

  • Network Traffic Capture: Comprehensive CDP-level monitoring of all HTTP requests, responses, and WebSocket frames

  • Structured Data Output: Clean, parsed data with URLs, request payloads, and response patterns

πŸ” Interactive Browser Automation

  • Session Management: Persistent browser sessions with cookie and authentication state management

  • Authentication Support: Handle login forms, OAuth flows, and multi-factor authentication

  • Step-by-Step Navigation: Click buttons, fill forms, and navigate through complex multi-page interfaces

  • Visual Feedback: Take screenshots at any point to understand page state and UI elements

🎯 Advanced Network Monitoring

  • Real-Time Capture: Monitor streaming responses as they occur with configurable capture windows

  • Flexible Filtering: Capture all traffic or filter by POST requests, streaming responses, or URL patterns

  • WebSocket Support: Full capture of WebSocket frames, messages, and connection details

  • Memory Management: Configurable capture limits to prevent memory issues during long sessions

πŸ› οΈ Developer-Friendly Tools

  • 14 Specialized Tools: Comprehensive toolkit for web scraping, testing, and API discovery

  • Headless or Visible: Run in headless mode for automation or visible mode for debugging

  • Error Handling: Robust error handling with detailed error messages and recovery options

  • Cross-Platform: Works on macOS, Linux, and Windows with consistent behavior

Related MCP server: Playwright MCP Server

πŸ“‹ Available Tools

Core Reverse Engineering

  • reverse_engineer_chat - Automated analysis of chat interfaces with streaming endpoint discovery

  • start_network_capture - Begin comprehensive network traffic monitoring

  • stop_network_capture - End capture and retrieve all collected data

  • get_network_capture_status - Check capture session status and statistics

  • clear_network_capture - Clear captured data without stopping the capture session

Interactive Browser Control

  • initialize_session - Create a new browser session for interactive operations

  • close_session - Clean up browser resources and end session

  • navigate_to_url - Navigate to different URLs within a session

  • switch_tab - Switch between open browser tabs

User Interaction Simulation

  • click_element - Click buttons, links, or any interactive elements

  • fill_form - Fill out form fields with automatic submission options

  • wait_for_element - Wait for dynamic elements to appear before continuing

Visual Inspection

  • take_screenshot - Capture screenshots of viewport, full page, or specific elements

  • get_current_page_info - Retrieve comprehensive page information and tab details

πŸš€ Installation

Prerequisites

  • Node.js 18+ - Required for ES modules and modern JavaScript features

  • npm - Package manager for dependency installation

Quick Setup

# Clone the repository
git clone https://github.com/pyscout/webscout-mcp
cd webscout-mcp

# Install dependencies
npm install

# Install Playwright browsers for automation
npx playwright install

πŸ“– Usage

Add WebScout MCP to your MCP client configuration:

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

Method 2: Direct CLI Usage

# Start the MCP server directly
npm start

# Or run with node
node src/index.js

Method 3: Development Mode

# Run with visible browser for debugging
node src/index.js  # Set headless: false in session initialization

πŸ› οΈ API Examples

Basic Chat Interface Analysis

// Initialize session and analyze a chat interface
const session = await initializeSession("https://chat.example.com");
const analysis = await reverseEngineerChat("https://chat.example.com", "Hello", 8000);

console.log("Found endpoints:", analysis.length);
await closeSession(session.sessionId);

Interactive Login Flow

// Handle login and navigate to protected content
const session = await initializeSession("https://app.example.com/login");

await fillForm(session.sessionId, [
  { selector: 'input[name="email"]', value: "user@example.com" },
  { selector: 'input[name="password"]', value: "password123" }
], 'button[type="submit"]');

await waitForElement(session.sessionId, ".dashboard", 10000);
const screenshot = await takeScreenshot(session.sessionId);

await closeSession(session.sessionId);

Network Traffic Capture

// Monitor all network activity on a page
const session = await initializeSession("https://api.example.com");

await startNetworkCapture(session.sessionId, {
  capturePostOnly: false,
  captureStreaming: true,
  maxCaptures: 100
});

// Perform actions that generate network traffic
await navigateToUrl(session.sessionId, "https://api.example.com/data");

const captureData = await stopNetworkCapture(session.sessionId);
console.log("Captured requests:", captureData.data.requests.length);

await closeSession(session.sessionId);

πŸ—οΈ Architecture Overview

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Chat Interface  │───▢│ Browser Automation│───▢│ Network Capture β”‚
β”‚  (Target URL)   β”‚    β”‚   (Playwright)    β”‚    β”‚  (CDP + Route)  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                       β”‚                       β”‚
         β–Ό                       β–Ό                       β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Message Input  β”‚    β”‚  DOM Interaction  β”‚    β”‚ Request/Responseβ”‚
β”‚   Detection     β”‚    β”‚    (Auto-fill)    β”‚    β”‚    Analysis     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                       β”‚
                                                       β–Ό
                                            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                                            β”‚ Structured Data β”‚
                                            β”‚  Output (JSON)  β”‚
                                            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Workflow

  1. Browser Launch: Opens target URL in headless Playwright browser

  2. Network Setup: Establishes Chrome DevTools Protocol (CDP) session and route interception

  3. Interface Detection: Automatically locates chat input elements (textarea, contenteditable, etc.)

  4. Message Injection: Sends test message to trigger streaming responses

  5. Traffic Capture: Monitors network requests/responses for specified time window

  6. Pattern Analysis: Identifies streaming patterns in captured data

  7. Data Processing: Structures captured data into clean JSON format

Streaming Detection Patterns

The system detects multiple streaming response formats:

  • Server-Sent Events (SSE): data: {"content": "..."}

  • OpenAI-style chunks: data: {"choices": [{"delta": {"content": "..."}}]}

  • Event streams: event: message\ndata: {...}

  • JSON streaming: Objects with token, delta, content fields

  • Custom formats: f:{...}, 0:"...", e:{...} patterns

  • WebSocket messages: Binary/text frames with streaming data

  • Chunked responses: Transfer-encoding: chunked with streaming content

πŸ“ Project Structure

webscout-mcp/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ index.js                 # Main MCP server implementation
β”‚   └── tools/                   # Specialized tool modules
β”‚       β”œβ”€β”€ reverseEngineer.js   # Tool exports and coordination
β”‚       β”œβ”€β”€ reverseEngineerChat.js # Automated chat analysis
β”‚       β”œβ”€β”€ sessionManagement.js # Browser session lifecycle
β”‚       β”œβ”€β”€ visualInspection.js  # Screenshots and page info
β”‚       β”œβ”€β”€ interaction.js       # Clicking and form filling
β”‚       β”œβ”€β”€ navigation.js        # URL navigation and tab switching
β”‚       └── networkCapture.js    # Network traffic monitoring
β”‚   └── utilities/               # Shared utility functions
β”‚       β”œβ”€β”€ browser.js           # Browser automation utilities
β”‚       └── network.js           # Network pattern detection
β”œβ”€β”€ package.json                 # Dependencies and scripts
β”œβ”€β”€ mcp-config.json              # MCP client configuration example
└── README.md                    # This documentation

πŸ”§ Configuration

Environment Variables

Variable

Description

Default

NODE_ENV

Environment mode

development

DEBUG

Enable debug logging

false

MCP Configuration

Update your MCP client's configuration file:

{
  "mcpServers": {
    "webscout-mcp": {
      "command": "npx",
      "args": ["-y", "webscout-mcp"],
      "env": {
        "NODE_ENV": "production"
      }
    }
  }
}

Or for VS Code MCP configuration (mcp.json):

{
  "servers": {
    "webscout-mcp": {
      "command": "npx",
      "args": ["-y", "webscout-mcp"],
      "type": "stdio"
    }
  }
}

Contributing

  1. Fork the repository

  2. Create a feature branch: git checkout -b feature-name

  3. Make your changes and add tests

  4. Run tests: npm test

  5. Submit a pull request

Development Guidelines

  • Follow ES6+ syntax and modern JavaScript practices

  • Add JSDoc comments for new functions

  • Test your changes with multiple chat interfaces

  • Update documentation for new features

  • Ensure code passes all tests

πŸ“„ License

This project is licensed under the ISC License - see the LICENSE file for details.

πŸ™ Acknowledgments

⚠️ Important Notes

  • Ethical Use: This tool is intended for API analysis and integration purposes only. Always respect website terms of service and robots.txt files.

  • Rate Limiting: Some chat interfaces may have rate limits or CAPTCHAs that could interfere with analysis.

  • Browser Dependencies: Playwright requires browser binaries to be installed for automation.

  • Network Conditions: Results may vary based on network speed and target website performance.

πŸ› Troubleshooting

Common Issues

"Browser not found" error

# Install Playwright browsers
npx playwright install

"Connection timeout" error

  • Increase captureWindowMs parameter

  • Check network connectivity

  • Verify target URL is accessible

"No streaming endpoints found"

  • Try different test messages

  • Increase capture window time

  • Verify the chat interface doesn't require authentication

MCP connection issues

  • Verify the absolute path in mcp-config.json

  • Ensure Node.js 18+ is installed

  • Check MCP client logs for detailed errors

πŸ“ž Support

If you encounter issues or have questions:

  1. Check the Troubleshooting section

  2. Review existing Issues on GitHub

  3. Create a new Issue with detailed information


WebScout MCP - Your intelligent companion for web application reverse engineering and API discovery.

Made with ❀️ for developers, security researchers, and API enthusiasts

Available Tools

14 tools
clear_network_captureA

Clear all captured network data without stopping the capture session. Resets request/response buffers while keeping capture active. Useful for long-running captures where you want to periodically clear old data to prevent memory issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesSession ID obtained from initialize_session

TDQS

A4/5.0
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 effectively describes key traits: it's a mutation tool (clears data), it resets buffers while keeping the session active, and it addresses memory management. However, it lacks details on permissions, error handling, or response format, leaving some behavioral aspects unclear.

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 front-loaded with the core purpose in the first sentence, followed by clarifying details and usage context. Each sentence adds value: the first defines the action, the second explains the effect, and the third provides practical guidance. There is no redundant or wasted text, making it highly efficient.

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 the tool's moderate complexity (a mutation with one parameter) and no annotations or output schema, the description is largely complete. It covers purpose, behavior, and usage context adequately. However, it omits details on return values or error cases, which could be important for a mutation tool, slightly reducing 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?

The input schema has 100% description coverage, with the 'sessionId' parameter fully documented. The description does not add any parameter-specific information beyond what the schema provides, such as format examples or constraints. Since schema coverage is high, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.

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 ('Clear all captured network data') and distinguishes it from sibling tools like 'stop_network_capture' by specifying it happens 'without stopping the capture session.' It uses precise verbs ('clear,' 'resets') and identifies the resource ('captured network data,' 'request/response buffers').

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 on when to use it ('Useful for long-running captures where you want to periodically clear old data to prevent memory issues'), but it does not explicitly state when not to use it or name alternatives (e.g., 'stop_network_capture' for ending a session). The guidance is helpful but lacks exclusions or direct sibling comparisons.

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

click_elementA

Click a button, link, or any interactive element on the page. Useful for navigating through multi-step interfaces, opening chat modals, starting new conversations, or triggering UI actions. Can target elements by CSS selector or by their visible text content. Automatically waits after clicking to allow page updates.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesSession ID obtained from initialize_session
selectorNoCSS selector for the element to click (e.g., 'button#start-chat', '.new-conversation-btn'). Use this when you know the exact selector.
textNoAlternative to selector: visible text content to search for and click (e.g., 'Start Chat', 'Sign In', 'New Conversation'). Use this when selector is unknown.
waitAfterNoMilliseconds to wait after clicking to allow animations, redirects, or dynamic content to load (default: 1000)

TDQS

A4.2/5.0
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 effectively describes key behaviors: the tool 'Automatically waits after clicking to allow page updates' and can target elements by 'CSS selector or by their visible text content', covering interaction methods and post-action handling, though it lacks details on error handling or permissions.

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 the first sentence stating the core purpose, followed by usage examples and behavioral details. Every sentence adds value without redundancy, making it efficient and well-structured.

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 the tool's moderate complexity (4 parameters, no output schema, no annotations), the description is mostly complete, covering purpose, usage, and key behaviors. However, it lacks details on error cases (e.g., what happens if the element is not found) and does not mention the sessionId parameter's role, leaving minor gaps in context.

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 adds minimal value beyond the schema by mentioning the two targeting methods (selector and text) and the wait behavior, but does not provide additional syntax or format details, aligning with the baseline for high schema coverage.

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 ('Click a button, link, or any interactive element') and resources ('on the page'), distinguishing it from siblings like fill_form or navigate_to_url by focusing on UI interaction rather than navigation or form input.

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 the tool ('Useful for navigating through multi-step interfaces, opening chat modals, starting new conversations, or triggering UI actions'), but does not explicitly state when not to use it or name alternatives among siblings, such as wait_for_element for non-click actions.

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

close_sessionA

Close the browser session and free all associated resources including browser instance, pages, and contexts. Always call this when finished with a session to prevent memory leaks. The sessionId becomes invalid after closing and cannot be reused. Any unsaved work or open pages will be lost.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesSession ID obtained from initialize_session to close

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does so effectively. It discloses critical behavioral traits: the session becomes invalid after closing, resources are freed to prevent memory leaks, and unsaved work is lost. However, it doesn't mention error handling (e.g., what happens if sessionId is invalid) or 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?

Three sentences with zero waste: first states purpose and scope, second provides usage rule, third details consequences. Each sentence earns its place by adding critical information. The description is appropriately sized and front-loaded with the core action.

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 destructive tool with no annotations and no output schema, the description does well: covers purpose, usage, behavioral consequences, and parameter context. However, it doesn't specify what happens on success (e.g., confirmation message) or failure (e.g., error if session doesn't exist), leaving some gaps in 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 description coverage is 100%, so the schema already documents the sessionId parameter fully. The description adds no additional parameter semantics beyond what's in the schema (e.g., no format details or validation rules). This meets the baseline of 3 when schema coverage is high.

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 ('Close the browser session') and resource ('browser session'), distinguishing it from siblings like initialize_session (which creates sessions) and clear_network_capture (which manages network data). It explicitly mentions what gets freed: 'browser instance, pages, and contexts'.

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?

It provides explicit guidance on when to use ('Always call this when finished with a session to prevent memory leaks') and when not to use ('The sessionId becomes invalid after closing and cannot be reused'). It implies an alternative (keep the session open) and warns about consequences of misuse ('Any unsaved work or open pages will be lost').

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

fill_formA

Fill out one or multiple form fields in sequence, perfect for login forms, registration, search inputs, or any text entry. Supports pressing Enter after each field and clicking a submit button. Commonly used for authentication flows before accessing chat interfaces. Each field can be filled independently with optional Enter key press.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesSession ID obtained from initialize_session
fieldsYesArray of form field objects to fill in sequence. Each field requires a CSS selector and value. Example: [{selector: 'input[name="email"]', value: 'user@example.com'}, {selector: 'input[type="password"]', value: 'mypassword'}]
submitButtonNoOptional CSS selector for submit button to click after all fields are filled (e.g., 'button[type="submit"]', '#login-button')

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It does describe key behaviors: sequential field filling, optional Enter key press after each field, optional submit button clicking after all fields. However, it doesn't mention error handling, timeout behavior, what happens if selectors don't match, or whether this modifies page state. For a tool with no annotations and 3 parameters, this leaves significant behavioral gaps.

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 appropriately sized at 3 sentences, front-loading the core purpose. Every sentence adds value: first establishes the main function, second details behavioral capabilities, third provides common use case. There's minimal redundancy, though the 'Each field can be filled independently' phrase slightly overlaps with earlier content about sequential filling.

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 3 parameters with 100% schema coverage but no annotations and no output schema, the description provides adequate but incomplete context. It covers the tool's purpose and basic usage scenarios well, but lacks information about return values, error conditions, performance characteristics, or dependencies on other tools like initialize_session. For a form interaction tool with no structured safety hints, more behavioral context would be helpful.

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 3 parameters thoroughly. The description adds minimal value beyond the schema: it mentions 'one or multiple form fields' which aligns with the fields array parameter, and 'pressing Enter after each field' which aligns with pressEnter boolean. However, it doesn't provide additional semantic context beyond what's already in the comprehensive schema 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 tool's purpose with specific verbs ('fill out', 'press Enter', 'click submit') and resources ('form fields', 'login forms', 'registration', 'search inputs', 'text entry'). It distinguishes from siblings like click_element by focusing specifically on form field population rather than general clicking, and from navigate_to_url by handling form interaction rather than page navigation.

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 ('perfect for login forms, registration, search inputs, or any text entry', 'commonly used for authentication flows before accessing chat interfaces'). It doesn't explicitly state when NOT to use it or name specific alternatives among siblings, but the context strongly implies this is for form filling scenarios rather than other interactions.

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

get_current_page_infoA

Retrieve comprehensive information about the current browser state including current URL, page title, number of open tabs, and details about each tab. Essential for understanding where you are in a multi-step process, confirming navigation worked, or deciding which tab to switch to. Returns list of all tabs with their URLs, titles, and which one is currently active.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesSession ID obtained from initialize_session

TDQS

A4/5.0
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 that the tool returns a list of tabs with URLs, titles, and active status, which is useful behavioral context. However, it doesn't mention potential limitations like performance impact, session requirements, or error handling, leaving gaps for a tool that retrieves comprehensive state.

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 front-loaded with the core purpose in the first sentence, followed by usage context and return details. Every sentence adds value without redundancy, making it efficient and well-structured for quick understanding.

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 the tool's complexity (retrieving multi-tab browser state) and no annotations or output schema, the description does a good job by specifying what information is returned. However, it could be more complete by detailing the return format (e.g., JSON structure) or handling of edge cases like no open tabs.

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, clearly documenting the sessionId parameter. The description doesn't add any parameter-specific information beyond what's in the schema, so it meets the baseline of 3 for high schema coverage without compensating with extra details.

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 'retrieve' and the resource 'comprehensive information about the current browser state', listing specific details like URL, page title, and tab information. It distinguishes itself from siblings like switch_tab (for switching) and navigate_to_url (for navigation) by focusing on retrieving state information.

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: 'understanding where you are in a multi-step process, confirming navigation worked, or deciding which tab to switch to'. However, it doesn't explicitly state when not to use it or name specific alternatives among siblings, such as get_network_capture_status for network-related state.

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

get_network_capture_statusA

Get the current status of network capture for a session. Returns whether capture is active, duration, current statistics, and capture options. Useful for monitoring capture progress or checking if capture is running before stopping.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesSession ID obtained from initialize_session

TDQS

A3.8/5.0
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 describes what the tool returns ('whether capture is active, duration, current statistics, and capture options'), which adds useful context beyond the input schema. However, it doesn't cover potential errors, permissions, or rate limits, leaving gaps in behavioral understanding for a tool with no annotation support.

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: the first sentence states the core purpose, and the second adds usage context. Every sentence earns its place by providing essential information without redundancy or fluff, making it efficient and easy to parse.

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 the tool's moderate complexity (status retrieval with one parameter) and no annotations or output schema, the description does a good job of explaining what the tool does and when to use it. It covers the return values in detail, compensating for the lack of output schema. However, it could improve by mentioning error cases or dependencies, keeping it from a perfect score.

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 single parameter 'sessionId' well-documented as 'Session ID obtained from initialize_session'. The description doesn't add any parameter-specific details beyond this, as it focuses on the tool's purpose and output. According to the rules, with high schema coverage, the baseline is 3 even without param info in the description.

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: 'Get the current status of network capture for a session.' It specifies the verb ('Get') and resource ('status of network capture'), and distinguishes it from siblings like start_network_capture and stop_network_capture by focusing on status retrieval rather than control. However, it doesn't explicitly differentiate from get_current_page_info or other monitoring tools, keeping it from a perfect score.

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 usage: 'Useful for monitoring capture progress or checking if capture is running before stopping.' This implies when to use it (during monitoring or before stopping capture) and hints at alternatives (e.g., use before stop_network_capture). However, it lacks explicit exclusions or comparisons to other status-checking tools like get_current_page_info, so it doesn't fully meet the highest standard.

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

initialize_sessionA

Create a persistent browser session for step-by-step reverse engineering of complex chat interfaces. Use this when the chat requires login, multi-step navigation, or manual interaction before analysis. Returns a sessionId that must be used with all subsequent interactive tools. The session maintains cookies, authentication state, and can be used across multiple operations until explicitly closed.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe initial URL to navigate to (e.g., login page or chat homepage)
headlessNoRun browser in headless mode (true) or visible mode (false). Set false to watch the automation process (default: true)

TDQS

A4.4/5.0
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 does so effectively: it discloses that the session is persistent, maintains cookies and authentication state, can be used across multiple operations, and must be explicitly closed. However, it lacks details on potential rate limits, error handling, or session timeout behavior, keeping it from a perfect score.

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 front-loaded with the core purpose, followed by usage context and behavioral details in three concise sentences. Each sentence earns its place by providing essential information without redundancy, making it highly efficient for agent comprehension.

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 the tool's complexity (session management for reverse engineering), no annotations, and no output schema, the description does well by explaining the session's purpose, usage, and state. However, it lacks details on output (e.g., format of sessionId or error responses) and potential limitations, slightly reducing 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 description coverage is 100%, so the schema already documents both parameters ('url' and 'headless') thoroughly. The description adds no additional parameter semantics beyond what the schema provides, such as examples or edge cases, meeting the baseline for high coverage.

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 ('Create a persistent browser session') and resource ('for step-by-step reverse engineering of complex chat interfaces'), distinguishing it from siblings like 'reverse_engineer_chat' or 'navigate_to_url' by focusing on session initialization rather than direct interaction or analysis.

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?

It explicitly states when to use this tool ('when the chat requires login, multi-step navigation, or manual interaction before analysis') and provides context on prerequisites (e.g., returns a sessionId for subsequent tools) and alternatives (implied by distinguishing from direct tools like 'reverse_engineer_chat'), offering clear guidance for agent decision-making.

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

reverse_engineer_chatA

Automatically reverse engineer a chat interface by navigating to the URL, sending a test message, and capturing all network traffic to identify streaming API endpoints. Returns discovered endpoints with their request/response patterns including Server-Sent Events (SSE), WebSocket connections, and chunked HTTP responses. Perfect for quick analysis of public chat interfaces without authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe complete URL of the chat interface to analyze (e.g., https://chat.example.com)
messageNoThe test message to send to trigger a streaming response from the chat AI (default: "hi")hi
captureWindowMsNoDuration in milliseconds to monitor network traffic after sending the message. Increase for slow-responding APIs (default: 8000)

TDQS

A4.2/5.0
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 effectively describes the tool's multi-step process (navigation, message sending, traffic capture), the types of endpoints it discovers (SSE, WebSocket, chunked HTTP), and the authentication context ('without authentication'). It lacks details on error handling, rate limits, or what happens if no endpoints are found, but covers core behavioral traits well.

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 efficiently structured in two sentences: the first explains the tool's process and output, the second provides usage context. Every phrase adds value (e.g., 'without authentication' clarifies scope, 'quick analysis' sets expectations), with no redundant or vague language. It's appropriately sized for the tool's complexity.

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 the tool's moderate complexity (multi-step process, 3 parameters) and lack of annotations or output schema, the description does well to explain the behavioral flow, output format ('discovered endpoints with their request/response patterns'), and authentication context. It could be more complete by mentioning potential limitations (e.g., browser compatibility, network conditions) or error scenarios, but covers the essentials adequately.

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, providing clear documentation for all three parameters. The description adds no additional parameter-specific information beyond what's in the schema (e.g., it doesn't elaborate on URL formats, message content implications, or capture duration trade-offs). With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but doesn't need to.

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 ('reverse engineer a chat interface') and method ('by navigating to the URL, sending a test message, and capturing all network traffic'), distinguishing it from sibling tools like 'start_network_capture' or 'navigate_to_url' which perform isolated tasks. It explicitly identifies the target resource ('chat interface') and outcome ('identify streaming API endpoints').

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 ('Perfect for quick analysis of public chat interfaces without authentication'), indicating it's designed for unauthenticated, public interfaces. However, it doesn't explicitly state when not to use it (e.g., for authenticated sessions or non-chat interfaces) or name specific alternatives among sibling tools like 'get_network_capture_status'.

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

start_network_captureA

Start capturing network traffic on the current browser session. Monitors all HTTP requests and responses, WebSocket frames, and streaming data. Can filter by POST requests only, streaming responses only, or specific URL patterns. Essential for analyzing API calls, debugging network issues, or monitoring real-time data flows.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesSession ID obtained from initialize_session
optionsNoOptional capture configuration

TDQS

A3.9/5.0
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 behavioral traits such as what gets monitored (HTTP requests/responses, WebSocket frames, streaming data) and filtering capabilities, but lacks details on permissions, rate limits, or what happens if a capture is already running.

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 the first sentence stating the core purpose and subsequent sentences adding useful context without redundancy. Every sentence earns its place by elaborating on capabilities and use cases.

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 complexity of a network capture tool with no annotations and no output schema, the description is adequate but incomplete. It covers what the tool does and why to use it, but lacks details on output format, error handling, or dependencies like requiring an initialized session.

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 adds marginal value by mentioning filtering options (POST requests, streaming responses, URL patterns) but does not provide additional syntax or format details beyond what the schema specifies.

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 'start capturing' with the specific resource 'network traffic on the current browser session' and distinguishes it from siblings like stop_network_capture and get_network_capture_status by indicating it initiates monitoring rather than stopping or checking 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/5

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

It provides clear context for when to use this tool ('essential for analyzing API calls, debugging network issues, or monitoring real-time data flows'), but does not explicitly mention when not to use it or name specific alternatives among siblings like stop_network_capture for ending captures.

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

stop_network_captureA

Stop the active network capture session and return all captured data. Returns comprehensive network traffic including requests, responses, WebSocket frames, and streaming data with timestamps and headers. Use this to analyze captured network activity or save data for later processing.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesSession ID obtained from initialize_session

TDQS

A4/5.0
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 describes the action (stop session, return data) and the comprehensive nature of returned data (requests, responses, WebSocket frames, etc.), but does not cover aspects like error handling, permissions needed, or side effects. It adds some value but lacks depth for a mutation 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/5

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

The description is appropriately sized and front-loaded, with two sentences that efficiently convey purpose, behavior, and usage without waste. Every sentence adds value, starting with the core action and followed by context and application.

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 the tool's complexity (mutation with no annotations and no output schema), the description is fairly complete, covering what the tool does, what data it returns, and usage context. However, it could improve by detailing return format or error cases, leaving minor gaps for a tool with no structured output information.

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 the single parameter 'sessionId'. The description does not add any parameter-specific information beyond what the schema provides, such as format details or usage context. Baseline 3 is appropriate when schema handles parameter documentation.

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 ('stop', 'return') and resource ('active network capture session'), distinguishing it from siblings like 'start_network_capture' and 'get_network_capture_status'. It specifies what happens when invoked: stopping the session and returning captured data.

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 on when to use this tool ('to analyze captured network activity or save data for later processing'), but does not explicitly state when not to use it or name alternatives. It implies usage after starting a capture, but lacks explicit exclusions or sibling tool comparisons.

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

switch_tabA

Switch the active browser tab when multiple tabs are open in the session. Common scenario: clicking a link that opens a chat in a new tab requires switching to that tab to interact with it. Use get_current_page_info first to see all available tabs and their indices.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesSession ID obtained from initialize_session
tabIndexYesZero-based index of the tab to switch to (0 = first tab, 1 = second tab, etc.). Use get_current_page_info to see available tabs.

TDQS

A4.4/5.0
Behavior3/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 describes the core behavior (switching tabs) and mentions prerequisites (multiple tabs must be open), but doesn't disclose potential side effects like whether this affects page state, if it waits for page load, or error conditions. For a mutation tool with zero annotation coverage, this leaves some behavioral 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 efficiently structured with two sentences: the first states the purpose and context, the second provides usage guidance with a concrete example and references to another tool. Every sentence adds clear value without redundancy.

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 the tool's moderate complexity (changing browser state), no annotations, and no output schema, the description does well by explaining purpose, usage context, and parameter relationships. However, it could be more complete by mentioning what happens after switching (e.g., whether the agent should wait for page load) or potential errors.

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 description coverage is 100%, so the schema already documents both parameters completely. The description adds value by explaining why tabIndex matters ('Use get_current_page_info to see available tabs') and providing a real-world context for its use, though it doesn't add syntax or format details beyond what the schema provides.

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 ('Switch the active browser tab') and resource ('when multiple tabs are open in the session'), distinguishing it from siblings like get_current_page_info (which lists tabs) or navigate_to_url (which loads new pages). It provides concrete context about why this tool is needed in a multi-tab scenario.

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 description explicitly states when to use this tool ('when multiple tabs are open') and provides a clear alternative ('Use get_current_page_info first to see all available tabs and their indices'), naming the sibling tool. It also gives a practical example scenario ('clicking a link that opens a chat in a new tab requires switching to that tab'), making usage context very clear.

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

take_screenshotA

Capture a screenshot of the current browser page as a base64-encoded PNG image. Essential for visual feedback to understand what's displayed before deciding which buttons to click or forms to fill. Supports capturing the visible viewport, entire scrollable page, or specific elements. Returns the image as base64 string and data URL for easy display.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesSession ID obtained from initialize_session
fullPageNoCapture the entire scrollable page content (true) or just visible viewport (false). Use true for long pages (default: false)
selectorNoOptional CSS selector to capture only a specific element (e.g., '.chat-container', '#main-content')

TDQS

A4.2/5.0
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 effectively describes key traits: the tool captures screenshots in various modes (viewport, full page, or specific elements) and returns data in multiple formats (base64 string and data URL). It could improve by mentioning potential limitations like performance impacts or browser compatibility, but it covers the core functionality well.

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, starting with the core action and purpose in the first sentence. Each subsequent sentence adds value: explaining use cases, detailing capture options, and describing return formats. There is no wasted text, making it efficient and easy to parse for an AI agent.

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 the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is largely complete. It covers the purpose, usage context, behavioral aspects, and return formats. However, it could be more comprehensive by addressing potential errors or edge cases, such as what happens if the selector is invalid or the sessionId is expired, which would help an agent handle failures better.

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, providing detailed information for all three parameters (sessionId, fullPage, selector). The description adds minimal value beyond the schema, only implying the capture modes without elaborating on parameter usage. Since schema coverage is high, the baseline score of 3 is appropriate, as the description does not significantly enhance parameter understanding.

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 ('capture a screenshot') and resources ('current browser page'), distinguishing it from siblings like click_element or get_current_page_info by focusing on visual capture rather than interaction or information retrieval. It explicitly mentions the output format ('base64-encoded PNG image'), which sets it apart from other tools.

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 ('essential for visual feedback to understand what's displayed before deciding which buttons to click or forms to fill'), offering practical guidance. However, it does not explicitly state when not to use it or name specific alternatives among siblings, such as get_current_page_info for textual information instead of visuals.

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

wait_for_elementA

Wait for a specific element to appear on the page before continuing. Essential for handling dynamic content that loads asynchronously, page transitions, or elements that appear after clicking buttons. Prevents errors from trying to interact with elements that haven't loaded yet. Commonly used after login, navigation, or clicking buttons that trigger loading states.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesSession ID obtained from initialize_session
selectorYesCSS selector of the element to wait for (e.g., '.chat-container', '#message-input', '[data-loaded="true"]')
timeoutNoMaximum time in milliseconds to wait before timing out. Increase for slow-loading pages (default: 30000)

TDQS

A4/5.0
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 explains the tool's purpose (waiting for elements) and common use cases, but lacks details on what happens on timeout (e.g., throws error, returns null), whether it polls continuously, or if it affects page state. It adds some context about preventing errors, but doesn't fully describe the tool's behavior under different conditions.

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 appropriately sized and front-loaded, starting with the core purpose. Each sentence adds value: explaining why it's essential, what it prevents, and when to use it. While efficient, it could be slightly more concise by combining some of the use case examples into a single phrase.

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?

For a tool with 3 parameters, 100% schema coverage, but no annotations or output schema, the description is adequate but has gaps. It covers purpose and usage well, but lacks behavioral details (e.g., timeout behavior, return values) that would be important for an agent to use it correctly. The context is complete enough for basic understanding but not for robust implementation.

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 three parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema (e.g., it doesn't explain selector syntax beyond examples already given, or elaborate on timeout implications). 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 verb ('wait for') and resource ('specific element'), distinguishing it from siblings like click_element or navigate_to_url. It explicitly mentions the goal of preventing errors from interacting with unloaded elements, which is distinct from other tools' functions.

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 description provides explicit guidance on when to use this tool: for handling dynamic content, asynchronous loading, page transitions, or elements appearing after clicks. It gives concrete examples like 'after login, navigation, or clicking buttons that trigger loading states,' clearly differentiating it from other tools that perform actions rather than waiting.

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. 14 tool updates
    • First observedclear_network_capture
    • First observedclick_element
    • First observedclose_session
    • First observedfill_form
    • First observedget_current_page_info
    • First observedget_network_capture_status
    • First observedinitialize_session
    • First observednavigate_to_url
    • First observedreverse_engineer_chat
    • First observedstart_network_capture
    • First observedstop_network_capture
    • First observedswitch_tab
    • First observedtake_screenshot
    • First observedwait_for_element

TDQS

A4.3/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap, covering unique aspects like browser interaction (click_element, fill_form), session management (initialize_session, close_session), network capture (start_network_capture, stop_network_capture), and information retrieval (get_current_page_info, take_screenshot). The descriptions reinforce distinct use cases, such as reverse_engineer_chat for automated analysis versus manual tools for step-by-step workflows.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, with clear and descriptive verbs like 'click', 'fill', 'get', 'start', and 'wait'. There are no deviations in style or convention, making the set predictable and easy to parse for an agent.

Tool Count5/5

With 14 tools, the count is well-suited for the server's purpose of web automation and reverse engineering, covering core areas like session lifecycle, navigation, interaction, network analysis, and debugging. Each tool earns its place without redundancy, providing a comprehensive yet manageable surface for complex workflows.

Completeness5/5

The tool set offers complete coverage for web automation and chat interface reverse engineering, including session initialization and cleanup, navigation, element interaction, form handling, tab management, network capture with full lifecycle (start, stop, clear, status), visual feedback via screenshots, and automated analysis. There are no obvious gaps; agents can handle end-to-end workflows from setup to data extraction.

Maintenance

ActivityInactive
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

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/pyscout/webscout-mcp'

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