Webby MCP Server
Provides website performance testing through Google PageSpeed Insights API, analyzing Core Web Vitals and Google ranking signals for both mobile and desktop.
Integrates Lighthouse testing capabilities for comprehensive website analysis including performance metrics, SEO evaluation, and accessibility scoring through multiple testing platforms.
Enables security analysis through Mozilla Observatory API, testing HTTP security headers, CSP policies, HSTS configuration, and overall security posture of websites.
Performs detailed website performance analysis using Google PageSpeed Insights, providing Core Web Vitals measurements, performance scores, and optimization recommendations.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Webby MCP Serverrun a comprehensive performance test on our homepage"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Webby - Comprehensive Website Validator MCP Server
A Model Context Protocol (MCP) server that provides comprehensive website testing across performance, accessibility, SEO, and security dimensions.
Features
π Performance Testing
WebPageTest β - Real browser testing via Playwright automation (300 tests/month free, no API key)
Google PageSpeed Insights β - Core Web Vitals and Google ranking signals (25K API calls/day free)
GTmetrix β - Lighthouse + custom metrics with historical tracking (requires API key)
βΏ Accessibility Testing
Axe DevTools β - Fast WCAG scans via Playwright + axe-core (free, open-source)
WAVE β - WCAG compliance and contrast analysis (requires API key)
π SEO Testing
PageSpeed Insights SEO β - Uses Lighthouse SEO (free, comprehensive)
π Security Testing
Mozilla Observatory β - HTTP security headers analysis (CSP, HSTS) - Free API, 1 scan/min
SSL Labs β - Comprehensive SSL/TLS certificate testing - Free API (requires email)
Installation
cd ~/mcp-servers/servers/src/webby
npm install
npm run buildMCP Tools (11 Total)
Performance Tools (3)
validate_performance_pagespeed
{
url: string,
strategy?: 'mobile' | 'desktop', // default: mobile
apiKey?: string // optional, for higher quota
}
// Returns: Performance score, Core Web Vitals, metricsvalidate_performance_webpagetest β¨ NEW
{
url: string,
location?: string, // e.g., 'Dulles:Chrome'
runs?: number, // default: 1
waitForResults?: boolean, // default: false (returns test ID immediately)
timeout?: number // default: 300000 (5 min)
}
// Returns: Test ID + results URL immediately OR full results if waitForResults=true
// Metrics: Load Time, FCP, LCP, Speed Index, TTI, TBT, CLS, Performance Gradevalidate_performance_gtmetrix
{
url: string,
apiKey: string, // required
location?: string, // e.g., 'vancouver-canada'
browser?: string // e.g., 'chrome'
}
// Returns: Lighthouse score, PageSpeed score, load time, page sizeAccessibility Tools (2)
validate_accessibility_axe
{
url: string,
wcagLevel?: string // wcag2a, wcag2aa, wcag2aaa, wcag21aa, wcag22aa
}
// Returns: Violations by severity (critical, serious, moderate, minor), passes, incompletevalidate_accessibility_wave
{
url: string,
apiKey: string, // required
reporttype?: 1 | 2 | 3 | 4 // detail level (default: 2)
}
// Returns: Errors, contrast errors, alerts, WAVE report URL, credits remainingSecurity Tools (2)
validate_security_mozilla_observatory
{
url: string,
forceRescan?: boolean // default: false
}
// Returns: Grade (A+ to F), score, tests passed/failed, details URLvalidate_security_ssl_labs
{
url: string,
email: string, // required by API
maxAge?: number, // cached report age in hours
startNew?: boolean, // force new assessment
waitForComplete?: boolean, // wait for completion (can take 2-5 min)
maxWaitMinutes?: number // default: 5
}
// Returns: Grade (A+ to F), endpoint details, protocol info, statusCategory Runners (4)
validate_all_performance
{
url: string,
pagespeedApiKey?: string,
gtmetrixApiKey?: string,
webpagetestEnabled?: boolean, // enable browser automation
webpagetestWaitForResults?: boolean // wait for WPT completion
}
// Returns: Results from PageSpeed + optionally WebPageTest + optionally GTmetrixvalidate_all_accessibility
{
url: string,
waveApiKey?: string, // optional
wcagLevel?: string // for Axe
}
// Returns: Results from Axe + optionally WAVEvalidate_all_seo
{
url: string
}
// Returns: SEO analysis from PageSpeed Insights (Lighthouse SEO)validate_all_security
{
url: string,
email: string, // for SSL Labs
waitForSSL?: boolean // wait for SSL Labs completion
}
// Returns: Results from Mozilla Observatory + SSL LabsMaster Runner (1)
validate_comprehensive
{
url: string,
email: string, // required for SSL Labs
categories?: string[], // ['performance', 'accessibility', 'seo', 'security']
pagespeedApiKey?: string,
gtmetrixApiKey?: string,
waveApiKey?: string,
wcagLevel?: string,
waitForSSL?: boolean
}
// Returns: Complete analysis across all selected categories with overall health scoreResponse Format
{
"tool": "webpagetest",
"success": true,
"url": "https://example.com",
"test_id": "250107_AiDcA4_ABC",
"results_url": "https://www.webpagetest.org/result/250107_AiDcA4_ABC/",
"status": "complete",
"summary": {
"loadTime": 2500,
"firstContentfulPaint": 1200,
"speedIndex": 2300,
"largestContentfulPaint": 2100,
"timeToInteractive": 3500,
"totalBlockingTime": 250,
"cumulativeLayoutShift": 0.05
},
"performance_grade": "A",
"security_grade": "A+"
}Implementation Status
β Fully Implemented (9 tools)
validate_performance_pagespeed- Google PageSpeed Insights APIvalidate_performance_webpagetest- Playwright browser automation β¨validate_performance_gtmetrix- GTmetrix APIvalidate_accessibility_axe- Playwright + axe-corevalidate_accessibility_wave- WAVE APIvalidate_security_mozilla_observatory- Mozilla Observatory APIvalidate_security_ssl_labs- SSL Labs API with pollingvalidate_all_*- All 4 category orchestratorsvalidate_comprehensive- Master orchestrator
β All Tools Functional
No placeholders - all 11 tools are fully implemented and working!
API Quotas & Limits
Tool | Free Limit | API Key Required | Implementation |
Mozilla Observatory | 1 scan/min per domain | No | β Direct API |
SSL Labs | Unlimited (rate limited) | Email only | β Direct API |
PageSpeed Insights | 25,000/day | Optional (free) | β Direct API |
WebPageTest | 300/month | No | β Browser automation |
GTmetrix | Limited credits | Yes (free tier) | β Direct API |
Axe | Unlimited | No | β Browser automation |
WAVE | Varies by plan | Yes (paid) | β Direct API |
Browser Automation
WebPageTest and Axe use Playwright for headless browser automation:
Singleton browser instance - Reused across tests for efficiency
Configurable timeouts - Default 5 minutes for WebPageTest, 1 minute for Axe
Graceful cleanup - Browser closed on MCP server shutdown
No API keys needed - Free access via web UI automation
Project Structure
webby/
βββ src/
β βββ performance/
β β βββ pagespeed.ts β
Google API
β β βββ webpagetest.ts β
Playwright automation
β β βββ gtmetrix.ts β
GTmetrix API
β βββ accessibility/
β β βββ axe.ts β
Playwright + axe-core
β β βββ wave.ts β
WAVE API
β βββ security/
β β βββ mozilla-observatory.ts β
Mozilla API
β β βββ ssl-labs.ts β
SSL Labs API + polling
β βββ shared/
β β βββ browser-utils.ts β
Playwright utilities
β βββ orchestrator/
β βββ run-all.ts β
All orchestrators
βββ dist/ # Compiled JavaScript
βββ index.ts # Main MCP server entry
βββ package.json
βββ README.mdUsage Examples
Quick WebPageTest (instant response)
validate_performance_webpagetest("https://example.com")
// Returns test ID immediately, check results later at provided URLComplete WebPageTest (wait for results)
validate_performance_webpagetest("https://example.com", {
waitForResults: true,
timeout: 300000 // 5 minutes
})
// Waits for test completion, returns full metricsRun all performance tests
validate_all_performance("https://example.com", {
webpagetestEnabled: true, // Enable browser automation
webpagetestWaitForResults: false // Get test ID instantly
})
// Returns: PageSpeed + WebPageTest resultsComprehensive validation
validate_comprehensive("https://example.com", {
email: "your@email.com", // For SSL Labs
categories: ["performance", "security"],
webpagetestEnabled: true
})
// Returns: Full analysis with overall health scoreLicense
MIT
Available Tools
12 toolsvalidate_accessibility_axeB
Analyze website accessibility using Axe. Free, open-source, finds ~57% of WCAG issues with zero false positives.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| wcagLevel | No | WCAG level (wcag2a, wcag2aa, wcag2aaa, wcag21aa, wcag22aa) |
TDQS
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 discloses behavioral traits like 'Free, open-source' and 'finds ~57% of WCAG issues with zero false positives,' which adds context on cost and accuracy. However, it lacks critical details such as rate limits, authentication needs, error handling, or what the analysis entails (e.g., runtime, output format). For a tool with no annotations, this is a significant gap in behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise and front-loaded, consisting of a single sentence that efficiently conveys key information: purpose, technology, cost, and performance metrics. Every part earns its place without redundancy, making it easy to parse and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (accessibility analysis with parameters), no annotations, no output schema, and moderate schema coverage, the description is incomplete. It lacks details on output format, error cases, prerequisites, or how results are returned, which are crucial for an agent to use the tool effectively. The description provides basic context but falls short of being fully informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (one parameter has a description, one does not). The description adds no specific parameter information beyond what the schema provides; it doesn't explain the 'url' or 'wcagLevel' parameters. Since schema coverage is moderate, the description doesn't compensate for the undocumented parameter, resulting in a baseline score of 3 for minimal added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Analyze website accessibility using Axe' specifies the verb (analyze) and resource (website accessibility) with the technology (Axe). It distinguishes from siblings by mentioning 'Free, open-source' and 'finds ~57% of WCAG issues with zero false positives,' which differentiates it from other validation tools, though not explicitly naming alternatives. However, it doesn't fully specify scope (e.g., vs. validate_accessibility_wave), keeping it from a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for accessibility analysis with Axe, but provides no explicit guidance on when to use this tool versus alternatives like validate_accessibility_wave or validate_all_accessibility. It mentions 'Free, open-source' and performance metrics, which hint at context, but lacks clear when/when-not statements or named alternatives, leaving usage somewhat ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_accessibility_waveC
Analyze website accessibility using WAVE. Tests WCAG compliance, errors, and contrast issues. Requires API key.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| apiKey | Yes | WAVE API key (required) | |
| reporttype | No | Detail level (1-4) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the requirement for an API key, which is useful context, but lacks details on rate limits, authentication needs beyond the key, error handling, or what the analysis entails (e.g., is it a one-time scan or continuous?). For a tool with no annotations, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: two sentences that directly state the purpose and a key requirement. Every sentence adds valueβthe first explains what the tool does, and the second notes the API key need. It could be slightly more structured by explicitly listing parameters, but it avoids unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (accessibility analysis tool with 3 parameters, no annotations, and no output schema), the description is incomplete. It lacks details on output format, error cases, performance implications, or how it differs from sibling tools. Without annotations or output schema, the description should provide more context to be fully helpful for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (2 out of 3 parameters have descriptions). The description adds minimal param semantics: it implies the tool tests 'WCAG compliance, errors, and contrast issues' which relates to the 'url' parameter, but doesn't explain the 'reporttype' enum values (1-4) or provide additional context beyond the schema. With moderate schema coverage, the baseline is 3 as the description doesn't significantly compensate for gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Analyze website accessibility using WAVE. Tests WCAG compliance, errors, and contrast issues.' It specifies the verb ('analyze'), resource ('website accessibility'), and method ('using WAVE'), distinguishing it from siblings like 'validate_accessibility_axe' which uses a different tool. However, it doesn't explicitly differentiate from 'validate_all_accessibility' which might also cover accessibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides minimal usage guidance: it mentions 'Requires API key' as a prerequisite, but offers no explicit guidance on when to use this tool versus alternatives like 'validate_accessibility_axe' or 'validate_all_accessibility'. There's no mention of specific scenarios, limitations, or comparisons with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_all_accessibilityC
Run all accessibility tests (Axe + optionally WAVE if API key provided).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| waveApiKey | No | Optional WAVE API key | |
| wcagLevel | No | WCAG level for Axe |
TDQS
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 mentions running tests but doesn't disclose behavioral traits such as execution time, rate limits, error handling, or what happens if tests fail. For a tool with no annotations and potential external API calls, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action and includes key details (Axe + WAVE, API key condition). There is no wasted text, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of running multiple accessibility tests, no annotations, and no output schema, the description is incomplete. It doesn't cover what the tool returns, how results are formatted, or any dependencies like network requirements, leaving the agent with insufficient context for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (2 out of 3 parameters have descriptions), so the baseline is 3. The description adds minimal value beyond the schema by implying that 'waveApiKey' enables WAVE testing, but it doesn't explain parameter interactions or provide additional context for 'wcagLevel' or 'url'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Run all accessibility tests') and specifies which tests (Axe + optionally WAVE), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'validate_accessibility_axe' or 'validate_accessibility_wave', which would require a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions that WAVE is optional if an API key is provided, giving some context, but it lacks explicit guidance on when to use this tool versus alternatives like the individual Axe or WAVE tools, or other comprehensive validation tools. No when-not-to-use scenarios or clear prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_all_performanceB
Run all available performance tests (PageSpeed Insights + optionally WebPageTest + optionally GTmetrix).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| pagespeedApiKey | No | Optional PageSpeed API key | |
| gtmetrixApiKey | No | Optional GTmetrix API key | |
| webpagetestEnabled | No | Run WebPageTest via browser automation (default: false) | |
| webpagetestWaitForResults | No | Wait for WebPageTest to complete (default: false) |
TDQS
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 mentions the tools involved (PageSpeed Insights, WebPageTest, GTmetrix) but doesn't describe what 'run' entailsβwhether it's synchronous/asynchronous, what outputs to expect, rate limits, authentication needs beyond API keys, or error handling. For a multi-tool integration with 5 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. Every word contributes to understanding the tool's scope, though it could be slightly more structured (e.g., clarifying the relationship between parameters and test execution).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of running multiple performance tools with 5 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what results to expect, how failures are handled, or the operational impact (e.g., timeouts, costs). For a tool that likely produces rich performance data, this leaves too much undefined.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, providing a solid baseline. The description adds minimal value beyond the schemaβit implies that parameters control which optional tests are run (WebPageTest, GTmetrix) but doesn't explain interactions (e.g., if 'webpagetestEnabled' is false, does it skip WebPageTest entirely?). No additional syntax or format details are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Run all available performance tests') and specifies the resources (PageSpeed Insights, WebPageTest, GTmetrix). It distinguishes from siblings by focusing on comprehensive performance testing rather than individual tools or other validation types like accessibility/security. However, it doesn't explicitly differentiate from 'validate_comprehensive' which might also include performance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by mentioning 'all available performance tests' and optional components, suggesting this is for comprehensive performance assessment. However, it provides no explicit guidance on when to use this versus sibling tools like 'validate_performance_pagespeed' or 'validate_comprehensive', nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_all_securityB
Run all security tests (Mozilla Observatory + SSL Labs).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| Yes | Email for SSL Labs | ||
| waitForSSL | No | Wait for SSL Labs to complete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions running tests but lacks details on behavioral traits such as execution time, rate limits, authentication needs, or what happens during 'waitForSSL'. This is inadequate for a tool with parameters and no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It is front-loaded and appropriately sized, making it easy to parse without unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and incomplete parameter documentation, the description is insufficient. It does not cover return values, error handling, or tool behavior, leaving significant gaps for a security testing tool with multiple parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (2 out of 3 parameters have descriptions). The description does not add meaning beyond the schema, as it does not explain parameter roles or interactions. With moderate schema coverage, the baseline is 3, but it fails to compensate for the undocumented 'url' parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Run' and the resource 'all security tests', specifying which tests (Mozilla Observatory + SSL Labs). It distinguishes from sibling tools like 'validate_security_mozilla_observatory' and 'validate_security_ssl_labs' by indicating it runs both, but could be more specific about scope or integration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for security testing, but does not explicitly state when to use this tool versus alternatives like individual security tools or the comprehensive 'validate_comprehensive'. No guidance on prerequisites or exclusions is provided, leaving context inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_all_seoC
Run SEO analysis using PageSpeed Insights (includes Lighthouse SEO).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
TDQS
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 mentions the tool used (PageSpeed Insights with Lighthouse SEO) but doesn't describe key traits like whether it's a read-only operation, potential rate limits, authentication needs, or what the analysis entails (e.g., report format, execution time). This leaves significant gaps for an agent to understand the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It is front-loaded and appropriately sized for its purpose, earning a high score for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (SEO analysis), lack of annotations, no output schema, and low schema coverage, the description is incomplete. It doesn't explain what the analysis returns, potential errors, or behavioral aspects, making it inadequate for an agent to fully understand the tool's context and usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 1 parameter with 0% description coverage, so the description must compensate. It implies the parameter is a URL for analysis but doesn't specify format constraints (e.g., must be a valid HTTP/HTTPS URL) or provide any additional semantic details. This adds minimal value beyond what the schema name 'url' suggests, meeting the baseline for low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Run SEO analysis') and the resource/tool used ('using PageSpeed Insights (includes Lighthouse SEO)'), making the purpose evident. However, it doesn't explicitly differentiate from sibling tools like 'validate_comprehensive' or 'validate_all_performance', which might also involve SEO aspects, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as 'validate_comprehensive' or 'validate_all_performance', nor does it mention any prerequisites or exclusions. It implies usage for SEO analysis but lacks explicit context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_comprehensiveC
Run comprehensive validation across all categories (performance, accessibility, SEO, security).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| Yes | Email for SSL Labs (required) | ||
| categories | No | Categories to test (default: all) | |
| pagespeedApiKey | No | ||
| gtmetrixApiKey | No | ||
| waveApiKey | No | ||
| wcagLevel | No | ||
| waitForSSL | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It states the tool runs validation but doesn't mention critical behaviors like execution time, rate limits, authentication needs (implied by API keys in schema but not described), or what 'comprehensive' entails operationally. This is a significant gap for a tool with 8 parameters and no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part earns its place by conveying the tool's scope and action, making it highly concise and well-structured for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, no annotations, no output schema, low schema coverage), the description is incomplete. It doesn't address behavioral aspects, parameter usage, or output expectations, leaving the agent with insufficient context to invoke the tool effectively beyond a basic understanding of its scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low at 25%, with only 2 of 8 parameters having descriptions. The description adds minimal value beyond the schema, mentioning 'categories' implicitly but not explaining parameter interactions (e.g., how API keys relate to categories, what 'waitForSSL' does). It fails to compensate for the coverage gap, leaving most parameters poorly documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Run comprehensive validation across all categories (performance, accessibility, SEO, security).' It specifies the verb ('Run comprehensive validation') and scope ('across all categories'), though it doesn't explicitly differentiate from the many sibling validation tools listed, which focus on specific categories or methods.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus the many sibling alternatives (e.g., validate_accessibility_axe, validate_performance_gtmetrix). It mentions 'all categories' but doesn't specify scenarios where this comprehensive approach is preferred over targeted validations, leaving the agent without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_performance_gtmetrixC
Analyze website performance using GTmetrix. Requires API key (free tier available).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| apiKey | Yes | GTmetrix API key (required) | |
| location | No | Test location (e.g., vancouver-canada) | |
| browser | No | Browser type (e.g., chrome) |
TDQS
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 mentions the API key requirement, which is useful context about authentication needs, but fails to describe what the tool actually does (e.g., runs performance tests, returns metrics like load time/scores), potential rate limits, whether it's a read-only analysis or has side effects, or what the output looks like. This leaves significant gaps for a tool with 4 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the core purpose, consisting of two efficient sentences. However, the second sentence about the API key could be integrated more smoothly, and there's room to add crucial behavioral details without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (4 parameters, no annotations, no output schema), the description is incomplete. It lacks essential details: what the analysis entails, typical outputs (e.g., performance scores, recommendations), error handling, or how it differs from sibling tools. This makes it inadequate for an agent to use the tool effectively without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 75% (3 of 4 parameters have descriptions), providing a solid baseline. The description adds minimal value beyond the schemaβit implies 'url' and 'apiKey' are needed but doesn't explain parameter interactions or provide examples beyond what's in the schema descriptions. This meets the baseline for adequate but not exceptional coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Analyze') and resource ('website performance using GTmetrix'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its sibling performance tools (validate_performance_pagespeed, validate_performance_webpagetest), which would require specifying what makes GTmetrix analysis unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions that an API key is required and notes a free tier is available, which provides some basic context. However, it offers no guidance on when to choose this tool over the other performance validation siblings (pagespeed, webpagetest) or when to prefer this versus comprehensive tools like validate_all_performance or validate_comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_performance_pagespeedA
Analyze website performance using Google PageSpeed Insights. Returns Core Web Vitals and performance scores. Free API with 25K requests/day.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to analyze | |
| strategy | No | Device type (default: mobile) | |
| apiKey | No | Optional API key for higher quota |
TDQS
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 an analysis tool (implied non-destructive), mentions the free API with rate limits ('25K requests/day'), and notes optional authentication ('Optional API key for higher quota'). This covers important behavioral aspects like rate limits and auth needs, though it could add more on error handling or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise and front-loaded, with two sentences that efficiently convey purpose, return values, and key behavioral traits (API quota and optional key). Every sentence earns its place without redundancy, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 fairly complete. It covers purpose, return values, and behavioral aspects like rate limits and auth. However, it lacks details on output structure or error cases, which could be helpful for an agent invoking the tool without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 (url, strategy, apiKey). The description adds minimal value beyond the schema, mentioning the API key's purpose for higher quota, but does not provide additional semantics like URL formatting or strategy implications. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Analyze website performance') and resource ('using Google PageSpeed Insights'), distinguishing it from sibling tools like validate_performance_gtmetrix or validate_performance_webpagetest by specifying the exact service used. It also mentions the return values ('Core Web Vitals and performance scores'), which helps differentiate its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for performance analysis with PageSpeed Insights but does not explicitly state when to use this tool versus alternatives like validate_performance_gtmetrix or validate_all_performance. It mentions the free API quota, which provides some context, but lacks clear guidance on exclusions or specific scenarios for choosing this tool over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_performance_webpagetestA
Analyze website performance using WebPageTest via browser automation. Free 300 tests/month. Returns test ID immediately or waits for full results.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to analyze | |
| location | No | Test location (e.g., Dulles:Chrome) | |
| runs | No | Number of test runs (default: 1) | |
| waitForResults | No | Wait for test to complete (default: false, returns test ID immediately) | |
| timeout | No | Timeout in milliseconds (default: 300000 = 5 minutes) |
TDQS
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 behavioral traits: the free tier limit ('Free 300 tests/month'), the immediate vs. waiting behavior ('Returns test ID immediately or waits for full results'), and the automation method ('via browser automation'). It doesn't cover error handling, rate limits beyond the monthly cap, or authentication needs, but provides substantial operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise and well-structured in three sentences. The first sentence states the core purpose, the second provides important constraints (free tier), and the third explains the key behavioral choice. Every sentence earns its place with zero waste, and information is front-loaded appropriately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters, no annotations, and no output schema, the description provides adequate but incomplete context. It covers the purpose, constraints, and key behavior but doesn't explain what the output looks like (test ID format, result structure) or potential error conditions. Given the complexity and lack of structured output documentation, there are clear gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 5 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema. It mentions the waitForResults behavior generally but doesn't elaborate on parameter semantics. The baseline score of 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Analyze website performance using WebPageTest via browser automation.' It specifies the verb (analyze), resource (website performance), and method (WebPageTest via browser automation). However, it doesn't explicitly distinguish this tool from its sibling performance tools like 'validate_performance_gtmetrix' or 'validate_performance_pagespeed' beyond mentioning WebPageTest specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context with 'Free 300 tests/month' and mentions the waitForResults behavior, but it doesn't explicitly state when to use this tool versus alternatives like validate_performance_gtmetrix or validate_performance_pagespeed. The guidance is implied rather than explicit, lacking clear when/when-not instructions or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_security_mozilla_observatoryB
Analyze HTTP security headers using Mozilla Observatory. Tests CSP, HSTS, etc. Free API, 1 scan per minute per domain.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| forceRescan | No | Force new scan (default: false) |
TDQS
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 adds useful context: 'Free API, 1 scan per minute per domain' informs about cost and rate limits, and 'Analyze HTTP security headers' implies a read-only operation. However, it doesn't detail error handling, response format, or what happens during a scan (e.g., timeouts, retries), leaving gaps for a tool with no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with two sentences: the first states the purpose, and the second adds behavioral context. It's front-loaded with the core function, and each sentence adds value without redundancy. However, it could be slightly more structured by explicitly separating usage guidelines.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and 2 parameters with 50% schema coverage, the description is moderately complete. It covers the tool's purpose and some behavioral traits (rate limits, cost) but lacks details on parameters, return values, and error handling. For a security analysis tool, this leaves significant gaps in understanding how to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (only 'forceRescan' has a description). The description adds no parameter-specific information beyond what the schema provides. It mentions 'domain' in the rate limit context, which loosely relates to the 'url' parameter but doesn't explain format or constraints. With low coverage, the description fails to compensate, resulting in a baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Analyze HTTP security headers using Mozilla Observatory. Tests CSP, HSTS, etc.' It specifies the verb ('analyze'), resource ('HTTP security headers'), and method ('Mozilla Observatory'), distinguishing it from sibling tools like validate_security_ssl_labs. However, it doesn't explicitly differentiate from other security tools beyond mentioning the specific focus on headers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some implied usage context by mentioning 'Free API, 1 scan per minute per domain,' which suggests rate limits and when to use it for scanning. However, it lacks explicit guidance on when to choose this tool over alternatives like validate_security_ssl_labs or validate_all_security, and no exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_security_ssl_labsA
Analyze SSL/TLS configuration using SSL Labs. Comprehensive certificate and protocol analysis. Long-running (may take minutes).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| Yes | Your email (required by API) | ||
| maxAge | No | Max cached report age in hours | |
| startNew | No | Force new assessment | |
| waitForComplete | No | Wait for completion (default: false) | |
| maxWaitMinutes | No | Max wait time in minutes (default: 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and adds valuable behavioral context: it discloses the tool's long-running nature ('may take minutes'), which is crucial for agent planning. However, it doesn't mention authentication requirements (email parameter is documented in schema but not explained in description), rate limits, or what happens during the wait period.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with three short sentences that each earn their place: first states core purpose, second adds scope detail, third provides crucial behavioral warning. No wasted words and front-loaded with the essential action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with no annotations and no output schema, the description provides adequate but incomplete context. It covers the core purpose and a critical behavioral trait (long-running), but lacks information about return values, error conditions, or how results are structured. The high schema coverage helps, but more context would be beneficial given the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high at 83%, so the baseline is 3. The description doesn't add any parameter-specific information beyond what's in the schema (all 6 parameters are documented in schema with descriptions for 5 of them). No additional syntax, format, or usage details are provided in the description text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Analyze SSL/TLS configuration using SSL Labs' with specific mention of 'comprehensive certificate and protocol analysis.' It distinguishes from security siblings by specifying SSL Labs as the analysis engine, but doesn't explicitly contrast with validate_security_mozilla_observatory or other security tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage guidance through 'Long-running (may take minutes)' which suggests when to expect delays, but doesn't explicitly state when to use this vs. alternatives like validate_security_mozilla_observatory or validate_all_security. No explicit when-not-to-use or prerequisite guidance is provided.
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.
12 tool updates
- First observed
validate_accessibility_axe - First observed
validate_accessibility_wave - First observed
validate_all_accessibility - First observed
validate_all_performance - First observed
validate_all_security - First observed
validate_all_seo - First observed
validate_comprehensive - First observed
validate_performance_gtmetrix - First observed
validate_performance_pagespeed - First observed
validate_performance_webpagetest - First observed
validate_security_mozilla_observatory - First observed
validate_security_ssl_labs
TDQS
Scored across 12 tools
The tools have clear distinctions between categories (accessibility, performance, security, SEO) and specific tool implementations (e.g., Axe vs. WAVE), but there is significant overlap in the 'validate_all_' and 'validate_comprehensive' tools, which aggregate other tools and could cause confusion about when to use individual vs. bundled validations. The descriptions help clarify, but the redundancy creates ambiguity in tool selection.
All tool names follow a consistent 'validate_' prefix with descriptive suffixes (e.g., 'accessibility_axe', 'performance_pagespeed'), using snake_case uniformly. This predictable pattern makes it easy for agents to understand the purpose and category of each tool at a glance, with no deviations in naming style.
With 12 tools, the count is reasonable for a web validation server covering multiple domains (accessibility, performance, security, SEO), though it feels slightly heavy due to the inclusion of both individual and aggregated tools. The scope is well-defined, and each tool serves a specific purpose, but the aggregation tools add some bulk that might be streamlined.
The tool set provides comprehensive coverage for web validation, including multiple tools per category (e.g., three performance tools, two accessibility tools) and aggregated options for broader testing. There are no obvious gaps; agents can perform detailed or holistic validations across all key web quality aspects without dead ends.
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
Validate HTML/CSS, audit SEO and JSON-LD, check links, and capture responsive screenshots.
Continuous website testing by Validoria β monitor security, SEO, performance, and accessibility.
Rule-based site audits: accessibility, SEO, security headers, performance. Metered per call.
AI QA tester β real browsers scan sites for bugs, SEO, perf, and accessibility issues via chat.