Skip to main content
Glama

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

Ownership verified
Status
Healthy
Uptime
99.4% over 21 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.5/5.0

Scored across 3 tools

Disambiguation5/5

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.

Naming Consistency5/5

All tool names follow the same verb_noun snake_case pattern: check_website, compare_checks, get_check. The naming is predictable and consistent.

Tool Count5/5

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.

Completeness5/5

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 tools
check_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic page address, such as https://example.com/products/shoes.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlNoChecked page URL; present when a result is available.
errorNoPublic failure message when the job failed.
jobIdYesPrivate check identifier. Pair with accessToken when polling.
deviceNoLab device, when recorded for the completed job.
reportNoMeasured report summary, present only when a result is available.
statusYes
saveUrlYesPrivate save link carrying the check handle in its URL fragment.
nextStepYes
retentionYes
measuredAtNoMeasurement timestamp, when recorded for the completed job.
accessTokenYesBearer secret for this check only. Keep private; never log or publish.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 ChecksA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterYesLater check handle.
beforeYesEarlier check handle.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYesLimits on attributing the measured change to a fix.
changesYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 CheckA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobIdYesjobId returned by check_website.
accessTokenYesPrivate accessToken returned by check_website. Keep it out of logs and public posts.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlNoChecked page URL; present when a result is available.
errorNoPublic failure message when the job failed.
jobIdYesPrivate check identifier. Pair with accessToken when polling.
deviceNoLab device, when recorded for the completed job.
reportNoMeasured report summary, present only when a result is available.
statusYes
saveUrlYesPrivate save link carrying the check handle in its URL fragment.
nextStepYes
retentionYes
measuredAtNoMeasurement timestamp, when recorded for the completed job.
accessTokenYesBearer secret for this check only. Keep private; never log or publish.

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 2 tool updates
    • Changedcheck_website2 fields changed
      • addedOutput schema / properties / report / properties / pageMetadata
        Added 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"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / report / required
        Previous 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"
        +]
    • Changedget_check2 fields changed
      • addedOutput schema / properties / report / properties / pageMetadata
        Added 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"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / report / required
        Previous 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"
        +]
  2. 16 tool updates
    • Removedadd_site
    • Removedaudit_all_sites
    • Removedaudit_url
    • Addedcheck_website
    • Removedcompare_audits
    • Addedcompare_checks
    • Removedget_audit_history
    • Removedget_audit_report
    • Removedget_audit_status
    • Addedget_check
    • Removedget_seo_evidence
    • Removedget_site
    • Removedget_uptime_status
    • Removedlist_sites
    • Removedlist_watched_pages
    • Removedrun_audit
  3. 3 tool updates
    • Addedadd_site
    • Changedget_uptime_status1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The site ID"New value: +"Saved site ID from list_sites; not a URL"
    • Changedrun_audit1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The site ID to audit"New value: +"Saved site ID from list_sites or add_site; not a URL"
  4. 12 tool updates
    • First observedaudit_all_sites
    • First observedaudit_url
    • First observedcompare_audits
    • First observedget_audit_history
    • First observedget_audit_report
    • First observedget_audit_status
    • First observedget_seo_evidence
    • First observedget_site
    • First observedget_uptime_status
    • First observedlist_sites
    • First observedlist_watched_pages
    • First observedrun_audit

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Core 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.
    4
    9 npm
    MIT
  • A
    license
    C
    quality
    A
    maintenance
    Allows 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!
    2
    2
    1,529 npm
    210
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Frontend 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.
    37
    60 npm
    10
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources