Skip to main content
Glama
pulspeed

@pulspeed/mcp-server

by pulspeed

@pulspeed/mcp-server

Website performance monitoring for AI agents.

Pulspeed MCP server exposes 10 tools for scanning sites, reading Core Web Vitals, detecting regressions, and getting AI-powered recommendations — all callable by Claude, Cursor, Windsurf, and any MCP-compatible agent.

npm version License: MIT


Quick Setup

Get an API key

Sign up at pulspeed.aiSettings → API Tokens → create a token.

Claude Code (CLI)

claude mcp add pulspeed -e PULSPEED_API_KEY=your_token_here -- npx -y @pulspeed/mcp-server

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "pulspeed": {
      "command": "npx",
      "args": ["-y", "@pulspeed/mcp-server"],
      "env": {
        "PULSPEED_API_KEY": "your_token_here"
      }
    }
  }
}

Cursor

Edit .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):

{
  "mcpServers": {
    "pulspeed": {
      "command": "npx",
      "args": ["-y", "@pulspeed/mcp-server"],
      "env": {
        "PULSPEED_API_KEY": "your_token_here"
      }
    }
  }
}

Windsurf

Edit ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "pulspeed": {
      "command": "npx",
      "args": ["-y", "@pulspeed/mcp-server"],
      "env": {
        "PULSPEED_API_KEY": "your_token_here"
      }
    }
  }
}

Related MCP server: Lighthouse MCP

Tools

All tools that identify a site accept either url or site_id.

scan_site

Trigger a PageSpeed Insights scan. Creates the site automatically if not yet tracked. Blocks until done (~30–60s) by default.

Param

Type

Required

Description

url

string

URL to scan

strategy

mobile | desktop

Default: mobile

wait

boolean

true (default) = wait for result; false = async, returns job_id

bulk_scan

Scan multiple URLs at once (max 10). All jobs are dispatched immediately.

Param

Type

Required

Description

urls

string[]

1–10 URLs

strategy

mobile | desktop

Default: mobile

wait

boolean

false (default) = async; true = sequential with results

list_sites

List all monitored sites with latest scores and scan settings.

get_site_metrics

Core Web Vitals for a site with trend analysis and score history.

Param

Type

Required

Description

url

string

✓ or site_id

Site URL

site_id

number

✓ or url

Pulspeed site ID

period

24h | 7d | 30d | 90d

History window (default: 7d)

get_recommendations

AI-powered optimisation recommendations from the latest scan analysis. Requires Developer or Scale plan.

compare_snapshots

Compare two scans with % deltas and a human-readable assessment (🟢 Significant improvement🔴 Significant regression).

Param

Type

Description

url / site_id

Site identifier (compares latest two)

snapshot_id_a

number

Specific newer snapshot

snapshot_id_b

number

Specific older snapshot

list_regressions

Find consecutive scans where the performance score dropped significantly.

Param

Type

Description

url / site_id

Site identifier

threshold

number

Min score drop to count (default: 3)

limit

number

Scan history to analyse (default: 20, max: 50)

get_usage

Current billing-period consumption: scans used/remaining, AI analyses, plan limits.

set_performance_budget

Set metric thresholds for a site. Violations trigger threshold.exceeded webhook events on the next scan.

Param

Type

Description

url / site_id

Site identifier

performance_score

{ min: number }

e.g. { min: 80 }

lcp

{ max: number }

Max LCP in ms, e.g. { max: 2500 }

fcp

{ max: number }

Max FCP in ms

tbt

{ max: number }

Max TBT in ms

ttfb

{ max: number }

Max TTFB in ms

cls

{ max: number }

Max CLS, e.g. { max: 0.1 }

get_raw_audit

Full Lighthouse audit data for a specific audit key — detailed resource-level breakdown.

Param

Type

Required

Description

url / site_id

✓ or snapshot_id

Site identifier

snapshot_id

number

Specific snapshot (default: latest)

audit_key

string

Lighthouse audit key

Common audit keys: render-blocking-resources, bootup-time, unused-javascript, uses-optimized-images, network-requests, uses-text-compression.


Example Prompts

"Scan https://mysite.com and tell me the performance score"

"What's the LCP trend for mysite.com over the last 30 days?"

"My site slowed down today — what changed?"

"Scan all pages: homepage, /about, /blog and compare their scores"

"Set a performance budget: score ≥ 80, LCP ≤ 2500ms"

"Show me the render-blocking resources slowing down mysite.com"

Example: Diagnose a regression

User: "My Lighthouse score dropped 12 points overnight. What happened?"

→ list_regressions(url="https://mysite.com", threshold=5)
   "🔴 CRITICAL −12 pts: 78 → 66 on 2026-02-22 (snapshot #142)"

→ compare_snapshots(url="https://mysite.com")
   "LCP: 2100ms → 3800ms (+81% ✗)  TBT: 180ms → 520ms (+189% ✗)"

→ get_raw_audit(url="https://mysite.com", audit_key="bootup-time")
   "analytics-v2.js — 1840ms execution. Saves 1.2s if deferred."

Agent: "A new analytics script blocks the main thread for 1.84s,
        causing LCP and TBT to spike. Defer or async-load it."

Environment Variables

Variable

Required

Default

Description

PULSPEED_API_KEY

API token from pulspeed.ai/settings

PULSPEED_BASE_URL

https://pulspeed.ai/api/v1

Override for self-hosted


Plans

All plans include MCP access. Quotas apply:

Plan

Scans/month

AI Analysis

Webhooks

Free

30

5/month

Developer ($29)

500

Included

5 endpoints

Scale ($79)

2,000

Included

20 endpoints


Development

git clone https://github.com/pulspeed/mcp-server
cd mcp-server
npm install
npm run build    # compile TypeScript → dist/
npm run dev      # watch mode
npm start        # run compiled server

License

MIT © Pulspeed

Available Tools

10 tools
bulk_scanA

Scan multiple URLs at once. By default runs scans asynchronously and returns job IDs for polling. Set wait=true to run sequentially and return all results (slower, may take several minutes).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYesList of URLs to scan (max 10)
waitNoIf true, wait for all scans to complete and return results. If false (default), dispatch all jobs and return job IDs immediately.
strategyNoScan strategy: mobile or desktop (default: mobile)

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description discloses key behaviors: async default, synchronous option with wait=true, and performance impact. However, it does not mention rate limits, authentication, or potential side effects.

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?

Two sentences, front-loaded with purpose, no unnecessary words. Ideal structure.

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

Completeness4/5

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

Given no output schema, the description explains return types (job IDs vs results) but not their structure. Strategy parameter is not addressed. Still, core functionality is well covered.

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%, so the description adds limited value beyond parameter descriptions. The mention of max 10 URLs is already in the schema. The async/sync behavior is tied to wait, which is also described in schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool scans multiple URLs at once, contrasting with the sibling scan_site which likely scans a single URL. It provides a specific verb and resource.

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

Usage Guidelines3/5

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

The description gives guidance on when to use async vs synchronous mode, but does not explicitly address when to choose this tool over alternatives like scan_site for single URLs.

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

compare_snapshotsA

Compare two performance snapshots for a website. Shows metric deltas with percentage changes and a human-readable assessment. By default compares the latest two snapshots, or specify snapshot IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoThe URL of the website to compare snapshots for
site_idNoThe Pulspeed site ID (alternative to URL)
snapshot_id_aNoID of the first (newer) snapshot to compare
snapshot_id_bNoID of the second (older) snapshot to compare

TDQS

A4/5.0
Behavior3/5

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

No annotations provided; description discloses output format but lacks details on error handling, prerequisites, or whether it modifies data. Implies read-only operation.

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?

Two sentences efficiently describe purpose, output, default behavior, and optional parameters. No unnecessary words.

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?

Explains output includes metric deltas and a human-readable assessment. With no output schema, this provides adequate context. Could specify which metrics are compared.

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

Parameters4/5

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

Schema covers all 4 parameters; description adds context about default behavior (latest two snapshots) and the optional nature of snapshot IDs, going beyond schema.

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?

Clearly states the tool compares two performance snapshots for a website, showing metric deltas and a human-readable assessment. Distinguishes from sibling tools like list_sites or get_site_metrics.

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

Usage Guidelines3/5

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

Provides default behavior (latest two snapshots) and optional explicit IDs, but does not explicitly state when to use this tool versus alternatives like get_site_metrics or get_recommendations.

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

get_raw_auditA

Get the raw Lighthouse audit data for a specific audit key from the latest snapshot of a site (e.g. 'render-blocking-resources', 'bootup-time', 'unused-javascript'). Returns detailed audit items useful for debugging specific performance issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoThe URL of the website
site_idNoThe Pulspeed site ID (alternative to URL)
audit_keyYesLighthouse audit key to retrieve, e.g. 'render-blocking-resources', 'bootup-time', 'unused-javascript', 'uses-optimized-images', 'network-requests'
snapshot_idNoSpecific snapshot ID to query. Defaults to the latest snapshot.

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It correctly implies a read operation but does not explicitly disclose behavioral traits such as authentication needs, rate limits, or whether it modifies data.

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?

Two concise sentences with no unnecessary words. The purpose is front-loaded in the first sentence, and the second sentence adds context on use case.

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

Completeness4/5

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

Given 4 parameters, no output schema, and no nested objects, the description is mostly complete. It explains what the tool returns ('detailed audit items') and the source ('from the latest snapshot'), though it could briefly state that the output is an array or object.

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 schema already documents all parameters. The description adds examples of audit_key values but does not provide additional semantic meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'raw Lighthouse audit data for a specific audit key' with examples. It is distinct from sibling tools in purpose but does not explicitly differentiate from similar audit-related tools like get_recommendations.

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

Usage Guidelines3/5

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

The description implies usage for debugging performance issues ('useful for debugging specific performance issues'), but lacks explicit guidance on when to use this tool versus alternatives or when not to use it.

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

get_recommendationsA

Get AI-powered performance recommendations for a monitored website. Requires Pro or Team plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoThe URL of the website to get recommendations for
site_idNoThe Pulspeed site ID (alternative to URL)

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description partially discloses behavior (AI-powered, plan requirement) but does not mention side effects, rate limits, or whether the operation is read-only. This is adequate but not exhaustive.

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?

Two sentences, no unnecessary words. The first sentence states the purpose, the second adds a prerequisite. Highly efficient.

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

Completeness3/5

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

The description lacks details about the output format (e.g., list of recommendations) and does not explain what 'monitored' implies. Given the complexity (no output schema), it could be more 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%, so the schema already documents both parameters. The description adds no additional meaning beyond the parameter descriptions found in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get AI-powered performance recommendations') and the resource ('for a monitored website'). It effectively distinguishes from sibling tools like get_raw_audit and get_site_metrics by specifying 'recommendations'.

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

Usage Guidelines3/5

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

The description mentions the prerequisite ('Requires Pro or Team plan') but lacks guidance on when to use this tool versus alternatives, or how to choose between the two input parameters (url vs. site_id).

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

get_site_metricsA

Get performance metrics for a monitored website, including Core Web Vitals (FCP, LCP, TTI, TBT, TTFB, CLS), trend analysis, and historical data over a specified period.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoThe URL of the website to get metrics for
periodNoTime period for history (default: 7d)
site_idNoThe Pulspeed site ID (alternative to URL)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must fully convey behavioral traits. It mentions the tool returns metrics and trend analysis but does not disclose that it is a read-only operation, potential side effects, rate limits, or authentication requirements.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the key purpose and lists included metrics without unnecessary details.

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

Completeness3/5

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

Given no annotations and no output schema, the description covers what the tool does and its returned data types. However, it lacks details on whether url or site_id is required, the output format, and whether historical data is aggregated or per-time-step.

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%, so parameters are well-documented. The description adds context about metrics and trend analysis but does not elaborate on the relationship between url and site_id, or the default behavior of the period parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'performance metrics for a monitored website', listing specific metrics like Core Web Vitals. It distinguishes from siblings by focusing on retrieval rather than scanning or comparisons.

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

Usage Guidelines3/5

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

The description implies usage for retrieving historical metrics but does not provide explicit guidance on when to use this tool versus alternatives like scan_site or compare_snapshots. No exclusions or best practices are mentioned.

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

get_usageA

Get current API usage statistics: how many scans and AI analyses have been used this month, remaining quota, and plan limits.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It clearly explains the output (scans, AI analyses, quota, limits) and the verb 'Get' implies a read-only operation. However, it does not explicitly state that no side effects occur, and it omits any auth requirements or rate limits. Still, it is sufficiently transparent for a simple statistics tool.

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

Conciseness5/5

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

The description is a single sentence that front-loads the purpose and immediately details the return values. Every word is informative, and there is no redundancy or filler. It is as concise as possible while being complete.

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 no parameters, no output schema, and sibling tools that perform distinctly different actions (scanning, comparing, auditing), this description fully covers what the tool does. It tells the agent exactly what information it will receive, which is sufficient for selection and invocation.

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

Parameters4/5

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

The input schema has zero parameters, so the baseline is 4 per evaluation rules. The description does not need to add parameter documentation as there are none. It correctly omits any parameter-related text.

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 the specific verb 'Get' and clearly names the resource 'API usage statistics'. It lists the exact data returned (scans, AI analyses, remaining quota, plan limits), which distinguishes this tool from siblings like bulk_scan, scan_site, etc., that perform different operations.

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

Usage Guidelines3/5

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

The description states what the tool does but provides no guidance on when to use it versus alternatives. No mention of when it is appropriate to call this tool (e.g., before scanning to check limits) or when not to use it. The context is implied but not explicit.

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

list_regressionsB

Show recent performance regressions for a site: consecutive scans where the performance score dropped significantly. Helps identify when and by how much the site degraded.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoThe URL of the website
limitNoNumber of recent snapshots to analyse (default: 20)
site_idNoThe Pulspeed site ID (alternative to URL)
thresholdNoMinimum score drop to be considered a regression (default: 3)

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It mentions it reads data (regressions) but lacks specifics: no mention of data freshness, pagination, rate limits, or whether it's read-only. The return format is only vaguely implied ('when and by how much').

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?

Two sentences, front-loaded with the primary action. Every sentence serves a clear purpose. No redundant or filler content.

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

Completeness2/5

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

No output schema exists, yet the description only vaguely mentions showing 'when and by how much' the site degraded. It does not specify what the output contains (e.g., list of snapshots, dates, scores). Also, with 4 optional parameters, it doesn't clarify that either url or site_id is likely needed – it treats them as optional, but the phrase 'for a site' suggests one is required.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description does not add parameter-level details beyond the schema; it only reinforces the concept of regression detection. No extra semantic value provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Show') and resource ('recent performance regressions for a site'), and defines what regressions are (consecutive scans with significant drop). This clearly distinguishes it from sibling tools like get_site_metrics or compare_snapshots.

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

Usage Guidelines3/5

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

The description implies usage when identifying regressions ('Helps identify when and by how much the site degraded'), but it does not explicitly state prerequisites (e.g., need for historical scans) or compare with alternatives. No guidance on when not to use this tool.

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

list_sitesA

List all websites being monitored by Pulspeed. Returns site names, URLs, scan frequency, and strategy.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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 describes a read operation that returns specific fields, but does not mention pagination, rate limits, or any constraints. This is minimal but not misleading.

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?

One sentence efficiently states the tool's purpose and return information. No wasted words.

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

Completeness4/5

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

Given no parameters and no output schema, the description adequately explains the return values. It lacks any mention of ordering or pagination, but for a simple listing tool, it is sufficient.

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?

Input schema has no parameters and schema description coverage is 100%. Per guidelines, baseline is 3. The description adds no parameter info, which is acceptable as there are none to describe.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all websites monitored by Pulspeed and specifies the returned fields (names, URLs, scan frequency, strategy). This distinguishes it from siblings like scan_site or get_site_metrics.

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

Usage Guidelines3/5

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

The description implicitly communicates when to use (when you need a list of all sites) but does not provide explicit guidance on alternatives or when not to use. Given the tool's simplicity, this is adequate but lacks explicit differentiation.

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

scan_siteA

Trigger a PageSpeed Insights scan for a website URL. Creates the site if not already tracked. By default waits for the scan to complete and returns performance metrics (30-60 seconds). Set wait=false to dispatch asynchronously and get a job_id for polling.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe full URL to scan (e.g., https://example.com)
waitNoIf true (default), wait for scan to complete and return results. If false, dispatch asynchronously and return job_id immediately.
strategyNoScan strategy: mobile or desktop (default: mobile)

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It reveals that the site is created if untracked, the default wait duration (30-60 seconds), and the async polling option. However, it does not mention rate limits, authentication, or return structure details.

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

Conciseness5/5

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

The description is three sentences, front-loaded with the action, and every sentence earns its place. No filler or redundancy.

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

Completeness4/5

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

Given three parameters, no output schema, and no annotations, the description covers the main workflow, async option, and time expectation. It could mention return value structure (e.g., performance metrics object) but remains reasonably complete for a simple scan tool.

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

Parameters4/5

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

Input schema covers 100% of parameters with descriptions. The description adds valuable context: the url parameter triggers site creation if needed, and the wait parameter explains the sync vs async tradeoff. The strategy parameter is not elaborated but is well-documented in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it triggers a PageSpeed Insights scan for a single URL, creating the site if needed. It distinguishes from bulk_scan and other sibling tools by focusing on a single URL scan with optional async behavior.

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

Usage Guidelines3/5

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

The description provides guidance on the wait parameter (default synchronous vs async polling) but does not explicitly compare to sibling tools like bulk_scan or compare_snapshots. It lacks 'when to use' and 'when not to use' guidance.

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

set_performance_budgetA

Set performance budget thresholds for a site. When a scan violates these thresholds, webhook events (threshold.exceeded, performance.regression) will fire. Pass null to remove all budgets.

ParametersJSON Schema
NameRequiredDescriptionDefault
clsNoCumulative Layout Shift budget
fcpNoFirst Contentful Paint budget in milliseconds
lcpNoLargest Contentful Paint budget in milliseconds
tbtNoTotal Blocking Time budget in milliseconds
urlNoThe URL of the website
ttfbNoTime to First Byte budget in milliseconds
site_idNoThe Pulspeed site ID (alternative to URL)
performance_scoreNoMinimum acceptable performance score (0-100)

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description discloses key side effects: that violating thresholds triggers webhook events and that passing null removes all budgets. This goes beyond basic function but does not mention authorization needs or whether it overwrites existing budgets.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose, and every sentence provides unique information. No wasted words.

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

Completeness3/5

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

Given the absence of an output schema and annotations, the description adequately explains purpose and side effects but does not describe the return value or provide examples of how to structure nested parameters. It is minimally viable but not 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%, so baseline is 3. The description adds value by noting that passing null removes all budgets, but does not provide additional per-parameter context beyond what the schema already contains.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'set' and the resource 'performance budget thresholds for a site'. It distinguishes from sibling tools like scan_site and get_site_metrics, which are for scanning or reading metrics, while this tool is for configuration.

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

Usage Guidelines3/5

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

The description implies usage for setting thresholds but provides no explicit guidance on when to use this tool versus alternatives like scan_site or get_site_metrics. It does not mention when not to use it or what prerequisites exist.

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. Dates show when Glama detected each change.

  1. 10 tool updatesv1.1.0
    • First observedbulk_scan
    • First observedcompare_snapshots
    • First observedget_raw_audit
    • First observedget_recommendations
    • First observedget_site_metrics
    • First observedget_usage
    • First observedlist_regressions
    • First observedlist_sites
    • First observedscan_site
    • First observedset_performance_budget

TDQS

A4/5.0
Disambiguation5/5

Each tool targets a distinct aspect of performance monitoring: scanning (single or bulk), metrics, audit details, recommendations, budgets, usage, regressions, and site listing. Even similar tools like bulk_scan and scan_site are differentiated by their input type and behavior.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., scan_site, list_sites, set_performance_budget). No mixing of conventions or vague verbs.

Tool Count5/5

With 10 tools, the set is well-scoped for a performance monitoring API. Each tool serves a clear purpose without unnecessary overlap or missing essential functions.

Completeness4/5

The tool set covers core operations: scanning, metrics, comparisons, budgets, recommendations, and usage. A minor gap is the absence of a tool to delete a site or snapshot, but the provided functionality is sufficient for common workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables AI models to analyze webpage performance using the Google PageSpeed Insights API, providing real-time performance scores and improvement suggestions.
    1
    257
    12
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI models to perform Google Lighthouse website performance analysis, including Core Web Vitals, accessibility, SEO audits, and actionable optimization recommendations. Provides comprehensive web performance insights through natural language interactions.
    1,354
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to control and inspect a live Chrome browser for automated web debugging, performance analysis, and Lighthouse audits. It allows agents to capture screenshots, monitor network requests, and measure Core Web Vitals using plain-English prompts.
    3,288,165
    Apache 2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pulspeed/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server