Skip to main content
Glama
nks-hub

rybbit-mcp

by nks-hub

List Events

rybbit_list_events
Read-onlyIdempotent

Lists raw event records for a site with filtering and pagination, including timestamps, types, pathnames, and properties. Filter by event name to match only events; paginate backward with timestamps.

Instructions

List raw events for a site with filtering and pagination. Returns individual event records with timestamps, types, pathnames, event names, and properties. When filtering by event_name, only matching events are returned (not entire sessions). Use beforeTimestamp from a previous response's cursor.oldestTimestamp to paginate backwards through history.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, 1-indexed (default: 1)
limitNoResults per page (default: 20-50 depending on endpoint, max 200)
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
eventNameNoFilter to only return events with this exact event_name (e.g., 'ad_click'). More precise than using the filters array which returns entire sessions.
startDateNoStart date in ISO format (YYYY-MM-DD)
afterTimestampNoReturn events strictly newer than this timestamp (UTC). Mirrors beforeTimestamp for forward pagination.
pastMinutesEndNoAlternative to dates: minutes ago end (default 0 = now)
beforeTimestampNoReturn events strictly older than this timestamp (UTC 'YYYY-MM-DD HH:mm:ss'). Use cursor.oldestTimestamp from previous page.
pastMinutesStartNoAlternative to dates: minutes ago start (e.g., 60 = last hour)

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataNo
cursorNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv0.8.1
    • addedInput schema / properties / afterTimestamp
      Added value: +{
      +  "description": "Return events strictly newer than this timestamp (UTC). Mirrors beforeTimestamp for forward pagination.",
      +  "type": "string"
      +}
    • addedInput schema / properties / beforeTimestamp
      Added value: +{
      +  "description": "Return events strictly older than this timestamp (UTC 'YYYY-MM-DD HH:mm:ss'). Use cursor.oldestTimestamp from previous page.",
      +  "type": "string"
      +}
    • 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": {
      +    "cursor": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "hasMore": {
      +          "type": "boolean"
      +        },
      +        "oldestTimestamp": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        }
      +      },
      +      "required": [
      +        "hasMore",
      +        "oldestTimestamp"
      +      ],
      +      "type": "object"
      +    },
      +    "data": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "event_name": {
      +            "type": "string"
      +          },
      +          "properties": {
      +            "description": "Raw JSON-encoded property bag",
      +            "type": "string"
      +          },
      +          "properties_parsed": {
      +            "additionalProperties": {},
      +            "description": "Same as `properties`, parsed into an object (added by MCP wrapper)",
      +            "type": "object"
      +          },
      +          "type": {
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "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.9/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds genuine behavioral nuance: that event_name filtering narrows to matching events rather than whole sessions, which is not expressible via 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, front-loaded with purpose, then filter caveat, then pagination recipe. No filler and each sentence carries actionable 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?

An output schema exists, so return values needn't be re-explained, and the description still summarizes them. For a 12-parameter filtered-list tool with full schema coverage, it is complete; only explicit sibling disambiguation is absent.

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 coverage is 100%, so baseline is 3. The description goes beyond by tying beforeTimestamp to the prior response's cursor.oldestTimestamp and spelling out the event_name-vs-filters distinction, adding cross-parameter semantics the schema does not state.

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 ('List raw events for a site') and enumerates the returned record shape. The word 'raw' implicitly distinguishes it from aggregate siblings like get_event_aggregate, but no sibling is named explicitly.

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?

Gives concrete mechanics — event_name filtering returns only matching events, and beforeTimestamp/cursor.oldestTimestamp drives backward pagination. However, it never says when to choose this over list_sessions or the event-aggregate tools, so sibling routing is left to inference.

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