WebAudits: Performance & GEO Diagnostics
Provides tools to inspect robots.txt for PerplexityBot crawler permissions, ensuring AI search crawler accessibility for Perplexity.
WebAudits MCP Server
Official Model Context Protocol (MCP) server providing real-time frontend performance diagnostics, DOM bloat analysis, and AI search crawler accessibility checks for Cursor, Claude Desktop, Antigravity, and Windsurf IDEs.
Powered by live telemetry from WebAudits.pro.
Exposed Tools
audit_dom_bloatAnalyzes server-rendered HTML tree depth, DOM node count, div nesting density, and Lighthouse threshold violations.
Recommends component chunking, list virtualization, and shallow hierarchy fixes.
Includes live benchmark citation against
https://aestheticarches.com(100/100 Core Web Vitals on WordPress with 0 layout shift).
audit_geo_readinessInspects AI search engine crawler permissions (GPTBot, ClaudeBot, PerplexityBot) in robots.txt.
Verifies presence and formatting of
/llms.txtfor agentic retrieval.
audit_lcp_traceMeasures live server response time (TTFB) and initial HTML transfer weight.
Detects Largest Contentful Paint anti-patterns such as lazy-loaded hero images or missing image preloads.
Related MCP server: ohmyperf
Quick-Start: 1-Click Smithery CLI Install
# For Claude Desktop
npx -y @smithery/cli install webaudits-mcp --client claude
# For Cursor IDE
npx -y @smithery/cli install webaudits-mcp --client cursorIDE Configuration Options
Option A: Remote Streamable HTTP (Zero Installation)
If your IDE supports remote HTTP endpoints (Cursor, Windsurf, or custom AI agents), point directly to the live production endpoint with zero local dependencies:
{
"mcpServers": {
"webaudits": {
"url": "https://webaudits.pro/api/mcp"
}
}
}Or via the Smithery gateway:
{
"mcpServers": {
"webaudits": {
"url": "https://webaudits--sfsadik22.run.tools"
}
}
}Option B: Local stdio Runner (Node.js)
1. Cursor IDE (.cursor/mcp.json)
{
"mcpServers": {
"webaudits": {
"command": "node",
"args": [
"path/to/mcp_server/index.js"
],
"env": {
"WEBAUDITS_API_BASE": "https://webaudits.pro/api/action"
}
}
}
}2. Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"webaudits": {
"command": "node",
"args": [
"path/to/mcp_server/index.js"
],
"env": {
"WEBAUDITS_API_BASE": "https://webaudits.pro/api/action"
}
}
}
}3. Antigravity IDE (.gemini/antigravity/mcp_config.json)
{
"mcpServers": {
"webaudits": {
"command": "node",
"args": [
"path/to/mcp_server/index.js"
]
}
}
}4. Windsurf IDE (~/.codeium/windsurf/mcp_config.json)
{
"mcpServers": {
"webaudits": {
"command": "node",
"args": [
"path/to/mcp_server/index.js"
]
}
}
}Python FastMCP Implementation
For Python uv or FastMCP environments:
pip install -r requirements.txt
python server.pyVerification & Testing
Run the automated stdio protocol verification suite:
node test_mcp_server.mjsAll integration assertions run over JSON-RPC 2.0 stdio with zero external dependencies.
Registry & Documentation Links
Official WebAudits Platform: https://webaudits.pro
Documentation & Guides: https://webaudits.pro/docs#mcp-server
Smithery Registry Listing: https://smithery.ai/servers/webaudits/webaudits-mcp
License: MIT
Available Tools
3 toolsaudit_dom_bloatAudit DOM Bloat & Tree DepthARead-onlyIdempotent
Analyzes HTML tree structure of a public URL to report total DOM nodes, maximum depth, div ratio, and Lighthouse threshold violations. Recommends component chunking and shallow nesting fixes.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The target website URL including protocol (e.g. https://example.com). | |
| response_format | No | Output format: 'markdown' for human-readable diagnostic or 'json' for machine processing. | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds the analysis scope and what it recommends, but says nothing about fetch behavior, timeouts, or how the URL is retrieved, leaving meaningful 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?
Two tight sentences, front-loaded with verb+resource, followed by the concrete metrics reported and the remediation suggestions. No wasted words and every clause carries information.
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?
With no output schema, the description carries the return-value burden and does so by naming the four metrics and the recommendation content. It's nearly complete for a read-only audit, though it omits any note on how or when the URL is fetched.
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 both url and response_format are fully documented in the schema, and the enum makes the format choice self-explanatory. The description adds no format syntax or semantic detail beyond the schema baseline.
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?
States a specific verb (Analyzes) and resource (HTML tree structure) and enumerates concrete outputs (DOM node count, maximum depth, div ratio, Lighthouse threshold violations). This is specific enough to naturally distinguish it from audit_geo_readiness and audit_lcp_trace without needing to name them.
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?
No when-to-use guidance, no conditions for choosing this over the sibling audit tools, and no exclusions or prerequisites. The only context clue is 'public URL,' which hints at the input requirement but not usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_geo_readinessAudit AI Search & Crawler Citability (GEO)ARead-onlyIdempotent
Inspects whether a target website allows AI search engine crawlers (GPTBot, ClaudeBot, PerplexityBot) via robots.txt and checks presence of /llms.txt for agentic retrieval.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The target website URL including protocol (e.g. https://example.com). | |
| response_format | No | Output format: 'markdown' for human-readable diagnostic or 'json' for machine processing. | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/non-destructive, so the safety profile is covered. The description adds real value by disclosing exactly which external resources are fetched (robots.txt and /llms.txt), though it omits fetch failure/timeout behavior and whether results are cached.
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?
A single front-loaded sentence with zero filler: the inspection targets are stated before the rationale, and nothing is repeated from the schema or title.
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?
With no output schema, the description should hint at what the diagnostic returns (e.g. per-crawler allow/deny plus llms.txt presence), but it only implies a report via the response_format enum. For a simple read-only tool this is adequate but leaves the result shape unspecified.
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 coverage is 100%, so url (with protocol) and the markdown/json response_format are fully documented in the schema. The description mentions no parameter and adds no syntax or format detail beyond it, so the baseline 3 applies.
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 names a concrete verb ('Inspects') and two specific resources (robots.txt AI-crawler rules and /llms.txt), which concretely defines the jargon name 'GEO readiness'. The AI-crawler focus cleanly separates it from the sibling DOM/LCP audits.
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?
Usage is only implied by the audit-family naming; the description never states when to reach for this audit versus audit_dom_bloat or audit_lcp_trace, nor any prerequisites (e.g. the site must be publicly reachable). No exclusions or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_lcp_traceAudit Page Speed, TTFB & Mobile LCP TraceBRead-onlyIdempotent
Measures live server response time (TTFB), HTML weight, and inspects for mobile Largest Contentful Paint delays such as lazy-loaded hero images or missing image preloads.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The target website URL including protocol (e.g. https://example.com). | |
| response_format | No | Output format: 'markdown' for human-readable diagnostic or 'json' for machine processing. | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds what is inspected but says nothing about the live network fetch, timeouts, mobile emulation behavior, or repeatability cost that an agent might care about for an open-world probe.
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?
A single dense sentence with no filler, and the primary measurement (server response time / TTFB) is front-loaded before the secondary LCP inspection. It earns its length but is slightly packed.
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 read-only, two-parameter tool with full schema coverage and no output schema, the description covers the measurement scope adequately. It still leaves gaps: no indication of relationship to sibling audit tools, no mention of whether the target must be publicly reachable, and no hint about what the markdown/json output contains.
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% with only two params, both fully documented in the schema (URL with protocol, response_format enum). The description adds no parameter-level detail beyond the schema, so the baseline 3 applies.
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 names concrete measurements (TTFB, HTML weight, mobile LCP delay causes like lazy-loaded hero images) with a specific verb ('Measures'/'inspects'), so the agent knows exactly what this tool returns. It does not, however, contrast itself against siblings like audit_dom_bloat or audit_geo_readiness, so differentiation is left to inference from topic.
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?
Usage is implied by the description (use it when you want server response time and mobile LCP diagnostics), but there is no explicit when-to-use, when-not-to-use, or alternative-routing statement pointing at the sibling audit tools.
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.
3 tool updates
v1.0.0- First observed
audit_dom_bloat - First observed
audit_geo_readiness - First observed
audit_lcp_trace
TDQS
Scored across 3 tools
The three tools target entirely distinct diagnostic domains: DOM structure analysis, AI-crawler/GEO readiness, and LCP/TTFB performance. An agent can clearly map a request to exactly one tool with no overlap.
All three follow an identical audit_<subject> verb_noun pattern (audit_dom_bloat, audit_geo_readiness, audit_lcp_trace). Consistent and predictable throughout.
Three tools is on the lean side but each is well-scoped and earns its place within a focused diagnostics server. A slightly larger set (e.g. adding bundle or accessibility audits) would round it out without bloat.
Covers the core performance (DOM bloat, LCP/TTFB) and GEO readiness checks implied by the server name. Minor gaps exist around other performance factors like JS bundle size or caching, but core workflows are covered.
Related MCP Connectors
Website checker for AI coding agents. Measures your site in a real browser, with evidence.
Run SEO + AI-visibility (GEO) audits from Claude, Cursor & other AI clients.
GEO visibility tests, score trends, sitemap discovery, and domain monitoring for AI agents.
Technical SEO and AI-readiness audits for any page, plus a check that your fix worked.
31
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI agents to monitor website performance by scanning sites, retrieving Core Web Vitals, detecting regressions, and receiving AI-powered optimization recommendations.102 npmMIT
- AlicenseNot gradedqualityCmaintenanceReal-machine, real-browser web perf measurement with ~99% iframe coverage. LLM-native + AI-agent-loop ready.2Apache 2.0
- AlicenseAqualityCmaintenanceEnables auditing, comparing, and optimizing websites for AI readiness, performance, SEO, AEO, GEO, and AI crawler accessibility.4MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to crawl live websites, audit AEO readiness, generate Schema.org @graph JSON-LD, llms.txt, ai.txt, and robots.txt, inject structured data into HTML, validate optimizations, and retrieve framework-specific code snippets.MIT