Nimo
Server Details
Find what slows your website down. Run a free check in Claude Code, Cursor or ChatGPT. No account needed to try it. Save your result with a free Nimo account, then check again after your fixes. No card needed. Learn more: https://heynimo.com/for/coding-assistants
- Status
- Healthy
- Uptime
- 99.4% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 3 tools
Each tool has a clearly distinct role: check_website starts a check, get_check retrieves its result, and compare_checks compares two existing checks. There is no overlap or ambiguity between them.
All tool names follow the same verb_noun snake_case pattern: check_website, compare_checks, get_check. The naming is predictable and consistent.
Three tools is well-scoped for the server's purpose of running and retrieving website speed checks. Each tool covers a necessary step without unnecessary bloat.
The tool surface covers the full workflow: start a check, retrieve its status/result, and compare two checks. No critical missing operation is evident for the stated domain.
Available Tools
3 toolscheck_websiteCheck a WebsiteAInspect
Start a free speed check of one public webpage. Returns jobId and private accessToken; use get_check to read it. Uses one free check. No account needed. Do not repeat to poll.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public page address, such as https://example.com/products/shoes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | Checked page URL; present when a result is available. |
| error | No | Public failure message when the job failed. |
| jobId | Yes | Private check identifier. Pair with accessToken when polling. |
| device | No | Lab device, when recorded for the completed job. |
| report | No | Measured report summary, present only when a result is available. |
| status | Yes | |
| saveUrl | Yes | Private save link carrying the check handle in its URL fragment. |
| nextStep | Yes | |
| retention | Yes | |
| measuredAt | No | Measurement timestamp, when recorded for the completed job. |
| accessToken | Yes | Bearer secret for this check only. Keep private; never log or publish. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and openWorldHint=true, so the mutation nature is known. The description adds valuable context beyond the annotations: it consumes one free check, requires no account, and returns a private accessToken. It also instructs not to poll, which is a behavioral trait not in annotations.
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?
Three sentences with no filler: purpose first, then return info and usage, then constraints. Every clause adds necessary information for correct selection and invocation.
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 single parameter, existing output schema, and accurate annotations, the description covers lifecycle (start, read via get_check), resource consumption, account requirements, and polling prohibition. Nothing an agent needs to call correctly is missing.
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% and already explains the 'url' parameter with an example. The description adds 'public webpage' but the schema also says 'Public page address', so no additional semantic meaning beyond the schema is provided. Baseline of 3 is appropriate.
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 states a specific action ('Start') and resource ('speed check of one public webpage'), and contrasts with the sibling tool by naming that it returns jobId/accessToken for get_check. This makes the tool's purpose distinct from compare_checks and get_check without ambiguity.
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?
Explicitly tells the agent to use get_check to read the result and warns not to repeat to poll, which provides clear invocation guidance. It does not mention compare_checks, but that tool's purpose is evidently different; the core usage context is well defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_checksCompare Two ChecksARead-onlyIdempotentInspect
Compare two completed checks of the same page and device, before and after a change. Uses the handles from check_website. No new check is started. Both unsaved results must still be available.
| Name | Required | Description | Default |
|---|---|---|---|
| after | Yes | Later check handle. | |
| before | Yes | Earlier check handle. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | Limits on attributing the measured change to a fix. |
| changes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, so safety is covered. The description adds genuinely useful behavioral context beyond them: no new check is started, and both results must still be unsaved/available, which is a real operational constraint. It could say more about how long results remain comparable.
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?
Four short, front-loaded sentences; the core action comes first, followed by the source of inputs, the non-side-effect guarantee, and the precondition. No sentence is wasted.
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 an output schema present, return values need not be explained, and the description covers prerequisites, input origin, and the no-new-check behavior. The 'must still be available' constraint could be sharpened (how long, what happens otherwise) to be fully complete.
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% and each nested field (jobId, accessToken) is already documented with origin and secrecy guidance. 'Uses the handles from check_website' largely restates what the schema already says, adding little new meaning, 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?
States a specific verb and resource ('Compare two completed checks of the same page and device, before and after a change') and immediately distinguishes itself from check_website by clarifying 'No new check is started.' An agent can tell this apart from starting a check or fetching a single check without inspecting schemas.
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?
Gives clear context for use (before/after a change, using handles from check_website) and a meaningful precondition ('Both unsaved results must still be available'). It does not explicitly name what to use instead when results are no longer available, so it stops short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_checkRead a CheckARead-onlyIdempotentInspect
Read the status and result of a check_website call. Does not start work or spend another check. Pending means wait 5 seconds. A completed result includes measurements, suggested fixes and a free save link.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | jobId returned by check_website. | |
| accessToken | Yes | Private accessToken returned by check_website. Keep it out of logs and public posts. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | Checked page URL; present when a result is available. |
| error | No | Public failure message when the job failed. |
| jobId | Yes | Private check identifier. Pair with accessToken when polling. |
| device | No | Lab device, when recorded for the completed job. |
| report | No | Measured report summary, present only when a result is available. |
| status | Yes | |
| saveUrl | Yes | Private save link carrying the check handle in its URL fragment. |
| nextStep | Yes | |
| retention | Yes | |
| measuredAt | No | Measurement timestamp, when recorded for the completed job. |
| accessToken | Yes | Bearer secret for this check only. Keep private; never log or publish. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavior beyond the annotations: it will not consume additional checks, pending requires a 5-second wait, and completed results include measurements, suggested fixes, and a save link. This is helpful operational context that annotations alone do not provide.
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?
Three short sentences with no filler. The core read behavior is front-loaded, followed by a key behavioral note and expected result contents. Every sentence earns its place.
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?
The description covers invocation context, polling behavior, and result contents. Combined with a complete input schema, a detailed output schema, and informative annotations, nothing essential is missing for an agent to call this tool correctly.
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 parameters are already fully documented with value patterns and security guidance for accessToken. The description does not add parameter-level detail beyond what the schema provides, so the baseline of 3 is appropriate.
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 uses a specific verb and resource: 'Read the status and result of a check_website call.' It clearly differentiates itself from check_website by stating it does not start work, so an agent can distinguish this polling/read tool from its sibling.
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 tells the agent to use this tool after a check_website call, provides the pending polling cadence ('wait 5 seconds'), and states that it does not trigger new work. It does not explicitly contrast with compare_checks, but the context is clear enough for selecting this tool.
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.
2 tool updates
- Changed
check_website2 fields changed- added
Output schema / properties / report / properties / pageMetadataAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "issueCount": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "status": { + "enum": [ + "complete", + "issues", + "unavailable" + ], + "type": "string" + } + }, + "required": [ + "status", + "issueCount" + ], + "type": "object" + }, + { + "type": "null" + } + ] +} - changed
Output schema / properties / report / requiredPrevious value: -[ - "metrics", - "metricProvenance", - "primaryFinding", - "lcpEvidence", - "actions", - "dismissedFindings", - "runConditions", - "recommendations", - "sectionCounts", - "truncatedSections", - "warnings", - "limitations", - "nextDiagnosticStep" -]New value: +[ + "metrics", + "metricProvenance", + "primaryFinding", + "lcpEvidence", + "actions", + "dismissedFindings", + "runConditions", + "recommendations", + "sectionCounts", + "truncatedSections", + "warnings", + "pageMetadata", + "limitations", + "nextDiagnosticStep" +]
- Changed
get_check2 fields changed- added
Output schema / properties / report / properties / pageMetadataAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "issueCount": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "status": { + "enum": [ + "complete", + "issues", + "unavailable" + ], + "type": "string" + } + }, + "required": [ + "status", + "issueCount" + ], + "type": "object" + }, + { + "type": "null" + } + ] +} - changed
Output schema / properties / report / requiredPrevious value: -[ - "metrics", - "metricProvenance", - "primaryFinding", - "lcpEvidence", - "actions", - "dismissedFindings", - "runConditions", - "recommendations", - "sectionCounts", - "truncatedSections", - "warnings", - "limitations", - "nextDiagnosticStep" -]New value: +[ + "metrics", + "metricProvenance", + "primaryFinding", + "lcpEvidence", + "actions", + "dismissedFindings", + "runConditions", + "recommendations", + "sectionCounts", + "truncatedSections", + "warnings", + "pageMetadata", + "limitations", + "nextDiagnosticStep" +]
16 tool updates
- Removed
add_site - Removed
audit_all_sites - Removed
audit_url - Added
check_website - Removed
compare_audits - Added
compare_checks - Removed
get_audit_history - Removed
get_audit_report - Removed
get_audit_status - Added
get_check - Removed
get_seo_evidence - Removed
get_site - Removed
get_uptime_status - Removed
list_sites - Removed
list_watched_pages - Removed
run_audit
3 tool updates
- Added
add_site - Changed
get_uptime_status1 field changed- changed
Input schema / properties / siteId / descriptionPrevious value: -"The site ID"New value: +"Saved site ID from list_sites; not a URL"
- Changed
run_audit1 field changed- changed
Input schema / properties / siteId / descriptionPrevious value: -"The site ID to audit"New value: +"Saved site ID from list_sites or add_site; not a URL"
12 tool updates
- First observed
audit_all_sites - First observed
audit_url - First observed
compare_audits - First observed
get_audit_history - First observed
get_audit_report - First observed
get_audit_status - First observed
get_seo_evidence - First observed
get_site - First observed
get_uptime_status - First observed
list_sites - First observed
list_watched_pages - First observed
run_audit
Related MCP Connectors
Live status and health checks for AI coding providers: Claude, Cursor, Copilot, Codex and more.
- gtmetrixOAuthcom.gtmetrix
Analyze web performance and get optimization insights from GTmetrix, directly in your AI workflow.
AI QA tester — real browsers scan sites for bugs, SEO, perf, and accessibility issues via chat.
Run SEO + AI-visibility (GEO) audits from Claude, Cursor & other AI clients.
Related MCP Servers
- AlicenseAqualityDmaintenanceCore Web Vitals analysis powered by Lighthouse. Four tools: analyze a URL, compare two URLs, check against thresholds, or crawl an entire site. Works with Claude Code, Cursor, Windsurf, and any MCP-compatible AI tool.49 npmMIT
- AlicenseCqualityAmaintenanceAllows AI assistants such as Cursor/Cline/GitHub Copilot to use Google's lighthouse tool to measure perf metrics for your webpage. You can then run an agentic loop and get the assistants to optimize those metrics!221,529 npm210MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants and coding agents to audit, compare, and optimize websites for performance, SEO, AEO, GEO, and AI crawler accessibility directly from chat or development workflows.MIT
- AlicenseBqualityCmaintenanceFrontend expert for Claude Code. Captures screenshots, runs Lighthouse + axe-core accessibility audits + code analysis, generates an expert review, and auto-fixes everything — 12 tools, completely free for Pro plan users.3760 npm10MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.