Skip to main content
Glama
nks-hub

rybbit-mcp

by nks-hub

Web Vitals

rybbit_get_performance
Read-onlyIdempotent

Retrieve Core Web Vitals (LCP, CLS, INP, FCP, TTFB) with p50-p99 percentiles to monitor performance, optionally by page, browser, or OS.

Instructions

Get Core Web Vitals performance metrics (LCP, CLS, INP, FCP, TTFB) with p50, p75, p90, p99 percentiles. Optionally break down by page path, browser, or OS.

Input Schema

NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
endDateNoEnd date in ISO format (YYYY-MM-DD)
filtersNoArray of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}]
timeZoneNoIANA timezone (e.g., Europe/Prague). Default: UTC
dimensionNoBreak down performance by dimension. Default: overview (aggregated)
startDateNoStart date in ISO format (YYYY-MM-DD)
pastMinutesEndNoAlternative to dates: minutes ago end (default 0 = now)
pastMinutesStartNoAlternative to dates: minutes ago start (e.g., 60 = last hour)

Output Schema

NameRequiredDescriptionDefault
dataNoPer-dimension rows when dimension!=overview
cls_p50No
cls_p75No
cls_p90No
cls_p99No
fcp_p50No
fcp_p75No
fcp_p90No
fcp_p99No
inp_p50No
inp_p75No
inp_p90No
inp_p99No
lcp_p50No
lcp_p75No
lcp_p90No
lcp_p99No
ttfb_p50No
ttfb_p75No
ttfb_p90No
ttfb_p99No
totalCountNoTotal rows across all pages

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.8.1
    • changedInput schema / properties / filters / items / properties / parameter / description
      Previous value: -"Filter dimension. One of: browser, browser_version, operating_system, operating_system_version, language, country, region, city, device_type, device_model, app_version, dimensions, referrer, hostname, pathname, page_title, querystring, event_name, channel, utm_source, utm_medium, utm_campaign, utm_term, utm_content, entry_page, exit_page, user_id, lat, lon, timezone, vpn, crawler, datacenter, company, company_type, company_domain, asn_org, asn_type, asn_domain, tag. Custom URL parameters use the prefix 'url_param:NAME' (e.g., 'url_param:campaign_id'). Note: user_id filter checks BOTH the device hash (user_id) and app-provided ID (identified_user_id). device_model and app_version are populated only for app-type sites tracked via SDK."New value: +"Filter dimension. One of: browser, browser_version, operating_system, operating_system_version, language, country, region, city, device_type, device_model, app_version, dimensions, referrer, hostname, pathname, page_title, querystring, event_name, channel, utm_source, utm_medium, utm_campaign, utm_term, utm_content, entry_page, exit_page, user_id, lat, lon, timezone, tag. Custom URL parameters use the prefix 'url_param:NAME' (e.g., 'url_param:campaign_id'). Note: user_id filter checks BOTH the device hash (user_id) and app-provided ID (identified_user_id). device_model and app_version are populated only for mobile-type sites (legacy: app) tracked via SDK."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "cls_p50": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "cls_p75": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "cls_p90": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "cls_p99": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "data": {
      +      "description": "Per-dimension rows when dimension!=overview",
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "dimension": {
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "fcp_p50": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "fcp_p75": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "fcp_p90": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "fcp_p99": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "inp_p50": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "inp_p75": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "inp_p90": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "inp_p99": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "lcp_p50": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "lcp_p75": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "lcp_p90": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "lcp_p99": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "totalCount": {
      +      "description": "Total rows across all pages",
      +      "type": "number"
      +    },
      +    "ttfb_p50": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "ttfb_p75": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "ttfb_p90": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "ttfb_p99": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
  2. Changed1 schema field changedv0.4.3
    • changedInput schema / properties / filters / items / properties / parameter / description
      Previous value: -"Filter dimension: browser, operating_system, language, country, region, city, device_type, referrer, hostname, pathname, page_title, querystring, event_name, channel, utm_source, utm_medium, utm_campaign, utm_term, utm_content, entry_page, exit_page, user_id. Note: user_id filter checks BOTH the device hash (user_id) and app-provided ID (identified_user_id)."New value: +"Filter dimension. One of: browser, browser_version, operating_system, operating_system_version, language, country, region, city, device_type, device_model, app_version, dimensions, referrer, hostname, pathname, page_title, querystring, event_name, channel, utm_source, utm_medium, utm_campaign, utm_term, utm_content, entry_page, exit_page, user_id, lat, lon, timezone, vpn, crawler, datacenter, company, company_type, company_domain, asn_org, asn_type, asn_domain, tag. Custom URL parameters use the prefix 'url_param:NAME' (e.g., 'url_param:campaign_id'). Note: user_id filter checks BOTH the device hash (user_id) and app-provided ID (identified_user_id). device_model and app_version are populated only for app-type sites tracked via SDK."
  3. First observedv0.5.2

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare this as a safe, idempotent, read-only operation, so the safety profile is covered. The description adds useful behavioral context by naming the exact statistics computed (p50/p75/p90/p99) and the available groupings, but it says nothing about default time window behavior, permission requirements, or result volume.

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 tightly written sentences with zero filler; the metric set and percentiles are front-loaded, and the optional breakdown is stated last where it belongs. Every clause carries information.

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, the description need not explain return values, and the annotations cover the safety profile. It adequately conveys what is measured and how results can be segmented, though the absence of any time-range hint (despite startDate/endDate/pastMinutes params) is a minor gap.

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 all 8 parameters are already documented in the schema, including the filter dimensions and timezone handling. The description's mention of breakdown dimensions only echoes the existing 'dimension' enum values, adding no new syntax or format detail, so the baseline 3 applies.

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?

States a specific verb and resource ('Get Core Web Vitals performance metrics') and enumerates the exact metrics (LCP, CLS, INP, FCP, TTFB) plus the aggregation granularity (p50/p75/p90/p99). It does not, however, differentiate itself from the closely named sibling rybbit_get_performance_timeseries, so an agent must infer the distinction (snapshot percentiles vs. time series).

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 phrase 'Optionally break down by page path, browser, or OS' implies when to use the dimension parameter, but there is no explicit guidance on when to choose this tool over rybbit_get_performance_timeseries, rybbit_get_metric, or rybbit_get_overview. Usage is implied rather than stated.

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