Skip to main content
Glama
elad12390

Web Research Assistant

by elad12390

Web Research Assistant MCP Server

PyPI Python Version License CI

Comprehensive Model Context Protocol (MCP) server that provides web research and discovery capabilities. Includes 14 tools, 4 resources, and 5 prompts for searching, crawling, and analyzing web content, powered by your local Docker SearXNG instance, Exa AI neural search, Scrapling, and Pixabay API:

  1. web_search — federated search across multiple engines via SearXNG

  2. search_examples — find code examples, tutorials, and articles (defaults to recent content)

  3. search_images — find high-quality stock photos, illustrations, and vectors via Pixabay

  4. crawl_url — full page content extraction with advanced crawling

  5. package_info — detailed package metadata from npm, PyPI, crates.io, Go

  6. package_search — discover packages by keywords and functionality

  7. github_repo — repository health metrics and development activity

  8. translate_error — find solutions for error messages and stack traces from Stack Overflow (auto-detects CORS, fetch, and web errors)

  9. api_docs — auto-discover and crawl official API documentation with examples (works for any API - no hardcoded URLs)

  10. extract_data — extract structured data (tables, lists, fields, JSON-LD) from web pages with automatic detection

  11. compare_tech — compare technologies side-by-side with NPM downloads, GitHub stars, and aspect analysis (React vs Vue, PostgreSQL vs MongoDB, etc.)

  12. get_changelog — NEW! Get release notes and changelogs with breaking change detection (upgrade safely from version X to Y)

  13. check_service_status — NEW! Instant health checks for 25+ services (Stripe, AWS, GitHub, OpenAI, etc.) - "Is it down or just me?"

All tools feature comprehensive error handling, response size limits, usage tracking, and clear documentation for optimal AI agent integration.

MCP Resources (Direct Data Lookups)

  • package://{registry}/{name} - Package info from npm, PyPI, crates.io, or Go modules

  • github://{owner}/{repo} - Repository information and health metrics

  • status://{service} - Service health status for 120+ services

  • changelog://{registry}/{package} - Package release notes and changelogs

MCP Prompts (Reusable Workflows)

  • research_package - Comprehensive package evaluation

  • debug_error - Structured error debugging with solutions

  • compare_technologies - Side-by-side technology comparison

  • evaluate_repository - GitHub repository health assessment

  • check_service_health - Multi-service status monitoring

Quick Start

Everything runs in Docker - no Python installation needed:

./docker-start.sh

This starts both SearXNG and the MCP server in containers. See DOCKER_SETUP.md for details.

Option 2: Python + Docker SearXNG

  1. Set up SearXNG (5 minutes):

    # Using Docker (recommended)
    docker run -d -p 2288:8080 searxng/searxng:latest

    Then configure search engines - see SEARXNG_SETUP.md for optimized settings.

  2. Install the MCP server:

    uvx web-research-assistant  # or: pip install web-research-assistant
  3. Configure Claude Desktop - add to claude_desktop_config.json:

    {
      "mcpServers": {
        "web-research-assistant": {
          "command": "uvx",
          "args": ["web-research-assistant"]
        }
      }
    }
  4. Restart Claude Desktop and start researching!

⚠️ For best results: Configure SearXNG with GitHub, Stack Overflow, and other code-focused search engines. See SEARXNG_SETUP.md for the recommended configuration.

Related MCP server: SearXNG MCP Server

Prerequisites

Required

  • Python 3.10+

  • A running SearXNG instance on http://localhost:2288

    • 📖 See SEARXNG_SETUP.md for complete Docker setup guide

    • ⚠️ IMPORTANT: For best results, enable these search engines in SearXNG:

      • GitHub, Stack Overflow, GitLab (for code search - critical!)

      • DuckDuckGo, Brave (for web search)

      • MDN, Wikipedia (for documentation)

      • Reddit, HackerNews (for tutorials and discussions)

      • See SEARXNG_SETUP.md for the full optimized configuration

Optional

  • Exa API key for neural search - Get API key (recommended for better search results)

  • Pixabay API key for image search - Get free key

  • Playwright browsers for advanced crawling (installed with scrapling install)

Developer Setup (if running from source)

uv tool install uv  # if you do not already have uv
uv sync --all-extras --all-groups  # creates the virtual environment
uv run scrapling install           # installs Chromium for Scrapling

You can also use pip install -e . if you prefer pip over uv (deps come from pyproject.toml).

Installation

uvx web-research-assistant

This runs the server directly from PyPI without installing it globally.

Option 2: Install with pip

pip install web-research-assistant
web-research-assistant

Option 3: Install with uv

uv tool install web-research-assistant
web-research-assistant

By default the server communicates over stdio, which makes it easy to wire into Claude Desktop or any other MCP host.

MCP Client Configuration

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

Option 1: Using uvx (Recommended - No installation needed!)

{
  "mcpServers": {
    "web-research-assistant": {
      "command": "uvx",
      "args": ["web-research-assistant"]
    }
  }
}

Option 2: Using installed package

{
  "mcpServers": {
    "web-research-assistant": {
      "command": "web-research-assistant"
    }
  }
}

OpenCode

Add to ~/.config/opencode/opencode.json:

Using uvx (Recommended)

{
  "mcp": {
    "web-research-assistant": {
      "type": "local",
      "command": ["uvx", "web-research-assistant"],
      "enabled": true
    }
  }
}

Using installed package

{
  "mcp": {
    "web-research-assistant": {
      "type": "local",
      "command": ["web-research-assistant"],
      "enabled": true
    }
  }
}

Development (Running from source)

For Claude Desktop:

{
  "mcpServers": {
    "web-research-assistant": {
      "command": "uv",
      "args": [
        "--directory",
        "/ABSOLUTE/PATH/TO/web-research-assistant",
        "run",
        "web-research-assistant"
      ]
    }
  }
}

For OpenCode:

{
  "mcp": {
    "web-research-assistant": {
      "type": "local",
      "command": [
        "uv",
        "--directory",
        "/ABSOLUTE/PATH/TO/web-research-assistant",
        "run",
        "web-research-assistant"
      ],
      "enabled": true
    }
  }
}

Restart your MCP client afterwards. The MCP tools will be available immediately.

Tool behavior

Tool

When to use

Arguments

web_search

Use first to gather recent information and URLs from SearXNG. Returns 1–10 ranked snippets with clickable URLs.

query (required), reasoning (required), optional category (defaults to general), and max_results (defaults to 5).

search_examples

Find code examples, tutorials, and technical articles. Optimized for technical content with optional time filtering. Perfect for learning APIs or finding usage patterns.

query (required, e.g., "Python async examples"), reasoning (required), content_type (code/articles/both, defaults to both), time_range (day/week/month/year/all, defaults to all), optional max_results (defaults to 5).

search_images

Find high-quality royalty-free stock images from Pixabay. Returns photos, illustrations, or vectors. Requires PIXABAY_API_KEY environment variable.

query (required, e.g., "mountain landscape"), reasoning (required), image_type (all/photo/illustration/vector, defaults to all), orientation (all/horizontal/vertical, defaults to all), optional max_results (defaults to 10).

crawl_url

Call immediately after search when you need the actual article body for quoting, summarizing, or extracting data.

url (required), reasoning (required), optional max_chars (defaults to 8000 characters).

package_info

Look up specific npm, PyPI, crates.io, or Go package metadata including version, downloads, license, and dependencies. Use when you know the package name.

name (required package name), reasoning (required), registry (npm/pypi/crates/go, defaults to npm).

package_search

Search for packages by keywords or functionality (e.g., "web framework", "json parser"). Use when you need to find packages that solve a specific problem.

query (required search terms), reasoning (required), registry (npm/pypi/crates/go, defaults to npm), optional max_results (defaults to 5).

github_repo

Get GitHub repository health metrics including stars, forks, issues, recent commits, and project details. Use when evaluating open source projects.

repo (required, owner/repo or full URL), reasoning (required), optional include_commits (defaults to true).

translate_error

Find Stack Overflow solutions for error messages and stack traces. Auto-detects language/framework, extracts key terms (CORS, map, undefined, etc.), filters irrelevant results, and prioritizes Stack Overflow solutions. Handles web-specific errors (CORS, fetch).

error_message (required stack trace or error text), reasoning (required), optional language (auto-detected), optional framework (auto-detected), optional max_results (defaults to 5).

api_docs

Auto-discover and crawl official API documentation. Dynamically finds docs URLs using patterns (docs.{api}.com, {api}.com/docs, etc.), searches for specific topics, crawls pages, and extracts overview, parameters, examples, and related links. Works for ANY API - no hardcoded URLs. Perfect for API integration and learning.

api_name (required, e.g., "stripe", "react"), topic (required, e.g., "create customer", "hooks"), reasoning (required), optional max_results (defaults to 2 pages).

extract_data

Extract structured data from HTML pages. Supports tables, lists, fields (via CSS selectors), JSON-LD, and auto-detection. Returns clean JSON output. More efficient than parsing full page text. Perfect for scraping pricing tables, package specs, release notes, or any structured content.

url (required), reasoning (required), extract_type (table/list/fields/json-ld/auto, defaults to auto), optional selectors (CSS selectors for fields mode), optional max_items (defaults to 100).

compare_tech

Compare 2-5 technologies side-by-side. Auto-detects category (framework/database/language) and gathers data from NPM, GitHub, and web search. Returns structured comparison with popularity metrics (downloads, stars), performance insights, and best-use summaries. Fast parallel processing (3-4s).

technologies (required list of 2-5 names), reasoning (required), optional category (auto-detects if not provided), optional aspects (auto-selected by category), optional max_results_per_tech (defaults to 3).

get_changelog

NEW! Get release notes and changelogs for package upgrades. Fetches GitHub releases, highlights breaking changes, and provides upgrade recommendations. Answers "What changed in version X → Y?" and "Are there breaking changes?" Perfect for planning dependency updates.

package (required name), reasoning (required), optional registry (npm/pypi/auto, defaults to auto), optional max_releases (defaults to 5).

check_service_status

NEW! Instantly check if external services are experiencing issues. Covers 25+ popular services (Stripe, AWS, GitHub, OpenAI, Vercel, etc.). Returns operational status, current incidents, and component health. Critical for production debugging - know immediately if the issue is external. Response time < 2s.

service (required name, e.g., "stripe", "aws"), reasoning (required).

Results are automatically trimmed (default 8 KB) so they stay well within MCP response expectations. If truncation happens, the text ends with a note reminding the model that more detail is available on request.

Resources

MCP Resources provide direct data access via URI templates - perfect for quick lookups without tool calls.

Resource URI

Description

Example

package://{registry}/{name}

Package metadata (version, downloads, license, dependencies)

package://npm/express

github://{owner}/{repo}

Repository info (stars, forks, issues, activity)

github://facebook/react

status://{service}

Service health status

status://stripe

changelog://{registry}/{package}

Release notes and changelogs

changelog://npm/typescript

Prompts

MCP Prompts are reusable message templates that guide AI assistants through common workflows.

Prompt

Arguments

Use Case

research_package

package_name, registry

Evaluate a package before adding it as a dependency

debug_error

error_message, language (optional), framework (optional)

Debug an error with context and solutions

compare_technologies

tech1, tech2, tech3 (optional), tech4 (optional), tech5 (optional)

Compare frameworks, databases, or languages

evaluate_repository

owner, repo

Assess a GitHub project's health and activity

check_service_health

services (comma-separated)

Monitor multiple services at once

Configuration

Environment variables let you adapt the server without touching code:

Variable

Default

Description

SEARXNG_BASE_URL

http://localhost:2288/search

Endpoint queried by web_search.

SEARXNG_DEFAULT_CATEGORY

general

Category used when none is provided.

SEARXNG_DEFAULT_RESULTS

5

Default number of search hits.

SEARXNG_MAX_RESULTS

10

Hard cap on hits per request.

SEARXNG_CRAWL_MAX_CHARS

8000

Default character budget for crawl_url.

MCP_MAX_RESPONSE_CHARS

8000

Overall response limit applied to every tool reply.

SEARXNG_MCP_USER_AGENT

web-research-assistant/0.1

User-Agent header for outward HTTP calls.

PIXABAY_API_KEY

(empty)

API key for Pixabay image search. Get free key at pixabay.com/api/docs.

EXA_API_KEY

(empty)

API key for Exa AI neural search. Get key at dashboard.exa.ai.

SEARCH_PROVIDER

auto

Search provider: exa (Exa only), searxng (SearXNG only), or auto (try Exa first, fallback to SearXNG).

MCP_USAGE_LOG

~/.config/web-research-assistant/usage.json

Location for usage analytics data.

Development

The codebase is intentionally modular and organized:

web-research-assistant/
├── src/searxng_mcp/     # Source code
│   ├── config.py        # Configuration and environment
│   ├── search.py        # SearXNG integration
│   ├── exa.py           # Exa AI neural search client
│   ├── crawler.py       # Scrapling wrapper
│   ├── images.py        # Pixabay client
│   ├── registry.py      # Package registries (npm, PyPI, crates, Go)
│   ├── github.py        # GitHub API client
│   ├── errors.py        # Error parser (language/framework detection)
│   ├── api_docs.py      # API docs discovery (NO hardcoded URLs)
│   ├── tracking.py      # Usage analytics
│   └── server.py        # MCP server + 14 tools
├── docs/                # Documentation (27 files)
└── [config files]

Each module is well under 400 lines, making the codebase easy to understand and extend.

Usage Analytics

All tools automatically track usage metrics including:

  • Tool invocation counts and success rates

  • Response times and performance trends

  • Common use case patterns (via the reasoning parameter)

  • Error frequencies and types

Analytics data is stored in ~/.config/web-research-assistant/usage.json and can be analyzed to optimize tool usage and identify patterns. Each tool requires a reasoning parameter that helps categorize why tools are being used, enabling better analytics and insights.

Note: As of the latest update, the reasoning parameter is required for all tools (previously optional with defaults). This ensures meaningful analytics data collection.

Documentation

Comprehensive documentation is available in the docs/ directory:

See the docs README for a complete index.

Available Tools

14 tools
api_docsA
Search and fetch official API documentation with examples and explanations.

Documentation-first approach: fetches human-written docs with context, examples,
and best practices. Much more useful than OpenAPI specs alone.

Discovery strategy:
1. Try common URL patterns (docs.{api}.com, {api}.com/docs, etc.)
2. If patterns fail, search for "{api} API official documentation"
3. Crawl discovered docs and extract relevant content

No hardcoded URLs - works for ANY API by discovering docs dynamically.

Examples:
- api_docs("stripe", "create customer", reasoning="Setting up payments")
- api_docs("github", "create repository", reasoning="Automating repo creation")
- api_docs("spartan", "button component", reasoning="Learning UI library")
ParametersJSON Schema
NameRequiredDescriptionDefault
api_nameYes
reasoningYes
topicYes
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses the dynamic discovery process (common URL patterns, search fallback, crawling) and notes no hardcoded URLs. With no annotations, this adds valuable behavioral context, though details like rate limits or auth are absent.

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 well-structured with front-loaded purpose, followed by comparison, strategy, and concise examples. Every sentence adds 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 complexity, the description covers the key aspects: purpose, strategy, and examples. The presence of an output schema reduces the need to detail return values, making this sufficiently complete for an AI agent.

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 description and examples illustrate the role of 'api_name' and 'topic' and mention default for 'max_results'. But it does not fully explain the 'reasoning' parameter, and schema coverage is 0%, leaving some ambiguity.

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 as searching and fetching official API documentation, distinguishing it from generic web searches or scraping. It explicitly contrasts with OpenAPI specs, emphasizing its value for human-written docs.

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 a documented discovery strategy and examples, guiding when to use the tool (e.g., for any API's official docs). However, it lacks explicit when-not-to-use guidance or alternatives.

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

check_service_statusC

Check if an API service or platform is experiencing issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
serviceYes
reasoningYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It fails to mention whether the tool is read-only, requires authentication, has rate limits, or how it obtains status information. The output schema exists but the description adds no behavioral context beyond the basic purpose.

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 with no wasted words, achieving conciseness. However, it could be restructured to include more detail about parameters or behavior without becoming verbose. It is appropriately front-loaded but lacks depth.

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

Completeness2/5

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

Given the presence of an output schema and the simplicity of the tool (2 required string params), the description is too brief. It does not provide enough context for an agent to understand how to fill parameters or what to expect, especially since parameter semantics are absent. The description should elaborate on what constitutes a 'service' and how to interpret the reasoning input.

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

Parameters1/5

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

The input schema has 0% description coverage, meaning no parameter descriptions are present. The tool description does not explain what 'service' (e.g., service name, URL) or 'reasoning' (e.g., purpose of check) represent, leaving the agent to guess the semantic meaning of these required parameters.

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: checking if an API service or platform is experiencing issues. It uses a specific verb ('check') and resource ('API service or platform'), and it distinguishes itself from sibling tools like web_search, api_docs, etc., which focus on different tasks.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives or when not to use it. The description simply states what it does without contextualizing usage scenarios or exclusions.

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

compare_techA
Compare multiple technologies, frameworks, or libraries side-by-side.

Automatically gathers information about each technology and presents
a structured comparison to help make informed decisions.

Categories:
- "framework": Web frameworks (React, Vue, Angular, etc.)
- "library": JavaScript/Python/etc. libraries
- "database": Databases (PostgreSQL, MongoDB, etc.)
- "language": Programming languages (Python, Go, Rust, etc.)
- "tool": Build tools, CLIs, etc. (Webpack, Vite, etc.)
- "auto": Auto-detect category

Examples:
- compare_tech(["React", "Vue", "Svelte"], reasoning="Choose framework for new project")
- compare_tech(["PostgreSQL", "MongoDB"], category="database", reasoning="Database for user data")
- compare_tech(["FastAPI", "Flask"], aspects=["performance", "learning_curve"], reasoning="Python web framework")
ParametersJSON Schema
NameRequiredDescriptionDefault
technologiesYes
reasoningYes
categoryNoauto
aspectsNo
max_results_per_techNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 must cover behavioral traits. It mentions automated information gathering and structured output, but lacks details on read-only behavior, rate limits, or reliability of auto-detection. It does not contradict any annotations, so no contradiction.

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

Conciseness5/5

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

The description is concise, well-structured with a purpose statement, category list, and clear examples. Every sentence adds value without redundancy, making it easy for an AI agent 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 complexity with 5 parameters, the description covers the essential aspects: purpose, categories, and usage examples. It omits explanation of 'max_results_per_tech', but since an output schema exists, return values are not required. Overall, it provides sufficient context for correct invocation.

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 0%, so the description must add meaning. It explains the 'category' parameter with an enum list and provides examples showing usage of 'technologies', 'reasoning', 'aspects'. However, 'max_results_per_tech' is not described, leaving a gap.

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 compares multiple technologies with specific verb 'Compare' and resource 'technologies, frameworks, or libraries'. It lists categories and examples, differentiating it from sibling tools that perform other tasks like crawling or searching.

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 categories and examples demonstrating when to use the tool. It does not explicitly state when not to use it or alternatives, but the sibling tools are functionally distinct, making misuse unlikely.

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

crawl_urlC

Fetch a URL and return the page text as markdown for quoting or analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
reasoningYes
max_charsNo
countryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It only states the basic fetch-and-convert action. It does not mention authentication requirements, error behavior, rate limits, or any side effects. The presence of an output schema is not referenced.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no unnecessary words. It efficiently conveys the core purpose.

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

Completeness2/5

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

Given the tool has 4 parameters, an output schema, and no annotations, the description is insufficient. It explains neither the parameters nor the output format, and lacks any usage context or error handling information.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must explain parameters. It does not describe any of the four parameters (url, reasoning, max_chars, country), leaving their purpose unclear. The description adds no value beyond the parameter names.

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 fetches a URL and returns page text as markdown for quoting or analysis. This is a specific verb-resource combination and distinguishes it from siblings like web_search (which likely returns search results) and stealth_scrape (which might have a different method).

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 mention of 'for quoting or analysis' implies use cases, but there is no comparison to siblings like stealth_scrape or web_search, nor any exclusion criteria.

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

extract_dataA
Extract structured data from web pages.

Extracts tables, lists, or specific fields from HTML pages and returns
structured data. Much more efficient than parsing full page text.

Extract Types:
- "table": Extract HTML tables as list of dicts
- "list": Extract lists (ul/ol/dl) as structured list
- "fields": Extract specific elements using CSS selectors
- "json-ld": Extract JSON-LD structured data
- "auto": Automatically detect and extract structured content

Examples:
- extract_data("https://pypi.org/project/fastapi/", reasoning="Get package info")
- extract_data("https://github.com/user/repo/releases", reasoning="Get releases", extract_type="list")
- extract_data(
    "https://example.com/product",
    reasoning="Extract product details",
    extract_type="fields",
    selectors={"price": ".price", "title": "h1.product-name"}
  )
ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
reasoningYes
extract_typeNoauto
selectorsNo
max_itemsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Without annotations, description explains extract types and behavior via examples and bullet points. It does not cover authorization, rate limits, or error handling, but the behavioral core is well explained.

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?

Description is well-structured with clear sections, bullet points for extract types, and multiple examples. No superfluous text.

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 presence of output schema, description appropriately focuses on input behavior. Covers main use cases but omits potential limitations like page size or dynamic content.

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 0%, but description compensates by explaining extract_type enums, selectors usage with examples, and implicitly covers url and reasoning. However, max_items is not explained.

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?

Description clearly states 'Extract structured data from web pages' and specifies five extract types (table, list, fields, json-ld, auto), making the verb and resource specific. It differentiates from siblings like crawl_url and web_search by focusing on structured extraction from HTML.

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?

Description notes efficiency advantage over parsing full page text and provides examples, implying use for structured extraction. However, lacks explicit when-not-to-use instructions or comparison to alternatives.

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

get_changelogC

Get changelog and release notes for a package.

ParametersJSON Schema
NameRequiredDescriptionDefault
packageYes
reasoningYes
registryNoauto
max_releasesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose any behavioral traits such as side effects, calling requirements, rate limits, or response structure. The agent receives no additional context beyond the basic action.

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

Conciseness3/5

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

The description is a single sentence, which is concise but at the expense of completeness. It is front-loaded with the key action, but the brevity leads to omissions in other dimensions.

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

Completeness1/5

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

Despite having 4 parameters (2 required), an enum, and an output schema, the description provides no context on how to use parameters, what the output contains, or how the tool behaves. This is insufficient for a tool of this complexity.

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

Parameters1/5

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

The input schema has 0% description coverage, and the description adds no information about the parameters. The schema provides types and defaults but the description does not explain the meaning of 'reasoning', 'registry', or 'max_releases', leaving the agent to infer usage.

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 verb 'Get' and resource 'changelog and release notes for a package', indicating the tool's purpose. However, it does not explicitly distinguish it from sibling tools like 'package_info' or 'package_search', though the specialization is implied.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. For example, if a user wants general package information, they might mistakenly use this tool instead of 'package_info'. The description should mention that this tool is specifically for changelogs or release notes.

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

github_repoA
Fetch GitHub repository information and health metrics.

Returns stars, forks, issues, recent activity, language, license, and description.
Use this to evaluate open source projects before using them.

Examples:
- github_repo("microsoft/vscode", reasoning="Evaluate editor project")
- github_repo("https://github.com/facebook/react", reasoning="Research UI framework")
ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
reasoningYes
include_commitsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It only lists return values but fails to disclose behavioral traits such as rate limits, authentication requirements, error handling, or side effects. The fetch operation is implied read-only but not stated.

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 concise with three lines, front-loads the purpose, and includes useful examples. Every sentence adds value with no redundancy.

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?

The description adequately covers the tool's purpose and returns, but missing parameter details (especially 'include_commits') and behavioral context limit completeness. An output schema exists, which reduces need for return value explanation, but gaps remain.

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

Parameters2/5

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

Schema description coverage is 0% and the description does not add explicit parameter semantics. Examples hint at repo format (owner/name or URL) but do not formally explain. The 'include_commits' parameter is not described.

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 explicitly states the action ('Fetch GitHub repository information and health metrics') and lists the specific data returned (stars, forks, issues, etc.). It clearly distinguishes the tool's purpose among siblings like package_info or web_search.

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 a clear use case ('Use this to evaluate open source projects before using them'), which implies context. However, it does not explicitly state when not to use it or mention alternatives.

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

package_infoA
Look up package information from npm, PyPI, crates.io, or Go modules.

Returns version, downloads, license, dependencies, security status, and repository links.
Use this to quickly evaluate libraries before adding them to your project.

Examples:
- package_info("express", reasoning="Need web framework", registry="npm")
- package_info("requests", reasoning="HTTP client for API", registry="pypi")
- package_info("serde", reasoning="JSON serialization", registry="crates")
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
reasoningYes
registryNonpm

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Describes output fields (version, downloads, etc.) but does not disclose additional behavioral traits such as read-only nature, error handling, or rate limits. Since no annotations exist, the description carries the full burden and this is a moderate gap.

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 concise with four sentences and three helpful examples, front-loading the purpose and key details without 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?

Covers purpose, usage, output fields, and registry options adequately for a lookup tool. Missing details on error conditions or package not found, but overall complete given simplicity.

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 schema has 0% description coverage; the description partly compensates through examples showing parameter usage. However, the 'reasoning' parameter is required but its purpose remains ambiguous despite examples.

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 it looks up package information from specific registries and lists returned fields. It distinguishes from sibling 'package_search' by focusing on detailed info for a specific package rather than searching.

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?

Provides a usage scenario ('evaluate libraries before adding them to your project') but does not explicitly mention when not to use or suggest alternatives like 'package_search' for searching.

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

search_examplesA
Search for code examples, tutorials, and technical articles.

Optimized for finding practical examples and learning resources. Can optionally filter by
time range for the most recent content. Perfect for learning new APIs, finding usage patterns,
or discovering how others solve specific technical problems.

Content Types:
- 'code': GitHub repos, code snippets, gists, Stack Overflow code examples
- 'articles': Blog posts, tutorials, documentation, technical articles
- 'both': Mix of code and written content (default)

Time Ranges:
- 'all': Search all available content (default, recommended for best results)
- 'year', 'month', 'week', 'day': Filter to recent content only

Examples:
- search_examples("FastAPI dependency injection examples", content_type="code")
- search_examples("React hooks tutorial", content_type="articles", time_range="year")
- search_examples("Rust lifetime examples", content_type="both")
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
reasoningYes
content_typeNoboth
time_rangeNoall
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

The description discloses filtering capabilities and default values, but does not clarify if the operation is read-only or if there are any side effects. Since no annotations are provided, the description carries the full burden. It lacks details on response structure (though output schema exists) and potential limitations.

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 well-structured with a clear purpose, bullet points for options, and usage examples. It is somewhat verbose but informative. The most critical information is front-loaded.

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?

The description adequately covers content_type and time_range but omits explanation for the 'reasoning' parameter, which is required and may be unclear. Additionally, it does not describe the return value or how the tool handles edge cases, despite having an output schema. Given the presence of 5 parameters and moderate complexity, it is partially complete.

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 description explains the semantics of content_type and time_range parameters with enumerations and defaults, which adds value beyond the schema. However, it does not explain the 'reasoning' parameter (required) or 'max_results', leaving ambiguity. With 0% schema description coverage, more compensation is expected, but partial coverage is provided.

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: 'Search for code examples, tutorials, and technical articles.' The verb 'search' and resource 'examples' are specific. It distinguishes itself from sibling tools like web_search and search_images by focusing on code and learning resources.

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: 'Perfect for learning new APIs, finding usage patterns, or discovering how others solve specific technical problems.' It also explains the two filtering dimensions. However, it does not explicitly mention when not to use it or direct users to alternative tools.

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

search_imagesA
Search for high-quality stock images using Pixabay.

Returns royalty-free images that are safe to use. Perfect for finding photos,
illustrations, and vector graphics for projects, presentations, or design work.

Image Types:
- 'photo': Real photographs
- 'illustration': Digital illustrations and artwork
- 'vector': Vector graphics (SVG format available)
- 'all': All types (default)

Examples:
- search_images("mountain landscape", image_type="photo")
- search_images("business icons", image_type="vector")
- search_images("technology background", orientation="horizontal")
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
reasoningYes
image_typeNoall
orientationNoall
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It mentions images are royalty-free and safe to use, but lacks details on limitations, rate limits, or authentication. Adequate but not comprehensive.

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 concise, uses bullet points for clarity, and front-loads the main purpose. Every sentence adds 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 output schema exists, the description sufficiently covers source, usage, and image types. It is fairly complete for a search tool, though it omits details on output structure (mitigated by output schema).

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

Parameters2/5

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

Schema description coverage is 0%, so the description should compensate by explaining all parameters. It explains image_type and orientation via examples but does not clarify the 'reasoning' parameter, leaving a key required parameter unexplained.

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 searches for high-quality stock images using Pixabay, specifying the resource (images) and source. It differentiates from sibling tools like web_search by focusing on image search.

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 examples and lists image types, helping users decide when to use the tool. However, it does not explicitly state when not to use it or mention alternatives, but the context is clear.

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

stealth_scrapeA

Scrape a URL using a stealth browser that bypasses anti-bot protections.

Uses scrapling's StealthyFetcher with Patchright (hardened Playwright) to evade
Cloudflare, DataDome, and similar anti-bot systems. Much slower than crawl_url
but works on protected sites.

Requires browser binaries: run 'scrapling install' once before first use.

When to use:
- crawl_url returns a Cloudflare challenge page or empty content
- The target site blocks automated requests
- JavaScript rendering is required for the content to appear
- You need to wait for a specific element to load

Examples:
- stealth_scrape("https://protected-site.com/pricing")
- stealth_scrape("https://spa-app.com/data", wait_selector=".results-table")
ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
reasoningYes
max_charsNo
wait_selectorNo
solve_cloudflareNo
headlessNo
countryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, but the description explains it uses StealthyFetcher with Patchright, is slower than crawl_url, requires browser binaries setup, and can handle Cloudflare and JS rendering. However, it does not disclose error handling if binaries are missing or any rate limits.

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?

Well-structured with a clear opening, setup note, usage list, and examples. Every sentence adds value, no 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?

Covers main purpose, context, and usage scenarios, but omits details on some parameters (reasoning, max_chars, headless, country) and potential error states. Output schema exists, so return values are not required.

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 0%, yet description explains wait_selector and solve_cloudflare implicitly via examples and text. However, it does not document reasoning, max_chars, headless, or country, leaving significant gaps 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 it scrapes a URL using a stealth browser to bypass anti-bot protections, and distinguishes from sibling tool crawl_url by noting it is slower but works on protected sites.

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?

Provides explicit when-to-use conditions (e.g., crawl_url returns Cloudflare challenge, site blocks automated requests, JS rendering needed) and includes two concrete examples, aiding the agent in correct selection.

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

translate_errorA
Find solutions for error messages and stack traces from Stack Overflow and GitHub.

Takes an error message or stack trace and finds relevant solutions with code examples.
Automatically detects language and framework, extracts key error information, and
searches for the best solutions ranked by votes and relevance.

Perfect for:
- Debugging production errors
- Understanding cryptic error messages
- Finding working code fixes
- Learning from similar issues

Examples:
- translate_error("TypeError: Cannot read property 'map' of undefined", reasoning="Debugging React app crash")
- translate_error("CORS policy: No 'Access-Control-Allow-Origin' header", reasoning="Fixing API integration", framework="FastAPI")
- translate_error("error[E0382]: borrow of moved value", reasoning="Learning Rust ownership", language="rust")
ParametersJSON Schema
NameRequiredDescriptionDefault
error_messageYes
reasoningYes
languageNo
frameworkNo
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

It discloses that the tool automatically detects language/framework, extracts key info, and ranks results by votes and relevance. With no annotations provided, these details are valuable, though it doesn't clarify interaction with optional language/framework parameters or rate limits.

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 moderately concise with bullet points and examples, but could be slightly more streamlined. It front-loads the key action and uses examples effectively.

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 (5 params, 2 required, output schema), the description covers the main purpose and behavior but lacks explanation for the reasoning parameter and how optional parameters override auto-detection. Output schema existence reduces need for return value details, but there are still gaps.

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?

Examples illustrate use of language, framework, and reasoning, but the description does not explicitly define the purpose of the reasoning parameter, and language/framework are mentioned as auto-detected without clarifying that they are optional overrides. Schema coverage is 0%, so more explicit parameter descriptions would help.

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 finds solutions for error messages and stack traces from Stack Overflow and GitHub, with automatic detection and ranking. This distinguishes it from siblings like web_search or package_search which are more general.

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 'Perfect for' section lists specific use cases (debugging production errors, understanding cryptic messages, etc.), implicitly guiding when to use. However, it does not explicitly contrast with sibling tools 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.

Tool Schema Changelog

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

  1. 2 tool updatesv0.3.0
    • Changedcrawl_url1 field changed
      • addedInput schema / properties / country
        Added value: +{
        +  "default": "",
        +  "title": "Country",
        +  "type": "string"
        +}
    • Addedstealth_scrape
  2. 13 tool updatesv1.0.0
    • Changedapi_docs1 field changed
      • addedInput schema / title
        Added value: +"api_docsArguments"
    • Changedcheck_service_status1 field changed
      • addedInput schema / title
        Added value: +"check_service_statusArguments"
    • Changedcompare_tech1 field changed
      • addedInput schema / title
        Added value: +"compare_techArguments"
    • Changedcrawl_url1 field changed
      • addedInput schema / title
        Added value: +"crawl_urlArguments"
    • Changedextract_data1 field changed
      • addedInput schema / title
        Added value: +"extract_dataArguments"
    • Changedget_changelog1 field changed
      • addedInput schema / title
        Added value: +"get_changelogArguments"
    • Changedgithub_repo1 field changed
      • addedInput schema / title
        Added value: +"github_repoArguments"
    • Changedpackage_info1 field changed
      • addedInput schema / title
        Added value: +"package_infoArguments"
    • Changedpackage_search1 field changed
      • addedInput schema / title
        Added value: +"package_searchArguments"
    • Changedsearch_examples1 field changed
      • addedInput schema / title
        Added value: +"search_examplesArguments"
    • Changedsearch_images1 field changed
      • addedInput schema / title
        Added value: +"search_imagesArguments"
    • Changedtranslate_error1 field changed
      • addedInput schema / title
        Added value: +"translate_errorArguments"
    • Changedweb_search1 field changed
      • addedInput schema / title
        Added value: +"web_searchArguments"
  3. 13 tool updates
    • First observedapi_docs
    • First observedcheck_service_status
    • First observedcompare_tech
    • First observedcrawl_url
    • First observedextract_data
    • First observedget_changelog
    • First observedgithub_repo
    • First observedpackage_info
    • First observedpackage_search
    • First observedsearch_examples
    • First observedsearch_images
    • First observedtranslate_error
    • First observedweb_search

TDQS

A3.5/5.0

Scored across 14 tools

Disambiguation5/5

Each tool targets a distinct research task (e.g., web_search vs. api_docs vs. compare_tech), with clear descriptions that prevent overlap. Even similar tools like crawl_url and stealth_scrape are differentiated by use cases.

Naming Consistency4/5

Names mostly follow a verb_noun or noun_noun pattern with underscores, but there are minor inconsistencies (e.g., 'github_repo' vs. 'check_service_status'). Overall readable and predictable.

Tool Count5/5

14 tools are well-scoped for a web research assistant, covering searching, fetching, extracting, and analyzing without being overwhelming or too few.

Completeness4/5

Covers core research workflows (search, fetch, extract, compare, check status, find packages/images/errors). Minor gaps like direct social media scraping are acceptable for the stated purpose.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Provides 14 enhanced intelligent search tools for both international platforms (GitHub, StackOverflow, NPM, etc.) and Chinese platforms (CSDN, Juejin, WeChat docs, etc.). Each tool includes smart URL generation, search tips, and related suggestions for comprehensive technical research.
    14
    12
    14
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides privacy-focused web search capabilities through SearXNG metasearch engine, enabling web, image, video, and news searches without tracking. Includes comprehensive research tools that aggregate and analyze results from multiple search engines.
    3
    4
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    Tools for AI assistant's deep research: * Google search + webpage reading (incl. JS-rendered pages) * Document & decks analysis * YouTube transcript extraction * Patents + academic paper search * Company and competitors research * Prompts for comprehensive-research, fact-check, summarize-url, news-briefing, patent-portfolio-analysis, competitive-analysis, literature-review, technical-deep-dive
    8
    157
    35
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides free web search, content fetching, image search, and deep research via SearXNG, no API keys required.
    -