Skip to main content
Glama
nks-hub

rybbit-mcp

by nks-hub

@nks-hub/rybbit-mcp

Build Status npm version License: MIT TypeScript MCP SDK

MCP server for Rybbit Analytics — query statistics, errors, users, sessions, funnels, goals, and performance metrics directly from Claude Code or any MCP-compatible client.


Why?

Instead of manually checking the Rybbit dashboard, let your AI assistant query analytics data directly:

  • "How many users visited the site today?"

  • "Show me the top pages by bounce rate this week"

  • "What errors occurred in the last hour?"

  • "Show user journey from homepage to checkout"

  • "Compare browser usage between mobile and desktop"


Related MCP server: agentops-mcp

Quick Start

No install needed. Just configure your MCP client to run via npx:

{
  "mcpServers": {
    "rybbit": {
      "command": "npx",
      "args": ["-y", "@nks-hub/rybbit-mcp"],
      "env": {
        "RYBBIT_URL": "https://your-rybbit-instance.com",
        "RYBBIT_API_KEY": "your-api-key"
      }
    }
  }
}

Add this to your ~/.claude/settings.json or project .claude/settings.json.

CLI shorthand:

claude mcp add rybbit -e RYBBIT_URL=https://your-instance.com -e RYBBIT_API_KEY=your-key -- npx -y @nks-hub/rybbit-mcp

Installation (from source)

For development or contributing:

git clone https://github.com/nks-hub/rybbit-mcp.git
cd rybbit-mcp
npm install && npm run build

Then point your MCP config to the local build:

{
  "mcpServers": {
    "rybbit": {
      "command": "node",
      "args": ["path/to/rybbit-mcp/build/index.js"],
      "env": {
        "RYBBIT_URL": "https://your-rybbit-instance.com",
        "RYBBIT_API_KEY": "your-api-key"
      }
    }
  }
}

Usage

Ask Claude Code anything about your analytics data. The MCP tools are automatically available.


Features

Feature

Description

32 Analytics Tools

Complete coverage of Rybbit API — overview, metrics, sessions, users, events, errors, performance, funnels, goals, journeys, site management

Flexible Auth

API key (recommended) or email/password authentication

Smart Filtering

Filter by 22 dimensions (browser, country, UTM, page, device, etc.) with 8 comparison types

Time Ranges

Date ranges (YYYY-MM-DD) or relative time (pastMinutesStart)

Time Series

Configurable bucket granularity from minutes to years

Pagination

Built-in page/limit support for large datasets

Response Truncation

Auto-truncation at 25k chars to prevent context bloat

Actionable Errors

Error messages guide the LLM toward correct tool usage


Authentication

Supports two authentication methods:

Method

Environment Variables

Use Case

API Key

RYBBIT_API_KEY

Recommended for production

Email/Password

RYBBIT_EMAIL, RYBBIT_PASSWORD

Development/testing

Both require RYBBIT_URL pointing to your Rybbit instance.


Tools (32)

Configuration & Site Management

Tool

Description

rybbit_get_config

Get server version and configuration

rybbit_list_sites

List all sites and organizations

rybbit_create_site

Create a new site (type: web or mobile; legacy alias app maps to mobile — mobile sites auto-disable bot filtering)

rybbit_delete_site

Delete a site permanently

rybbit_get_site_id

Look up site ID by domain name

rybbit_update_site_config

Update site tracking config (IP, errors, replay, etc.)

Real-time & Overview

Tool

Description

rybbit_live_users

Current active users count

rybbit_get_overview

Aggregated metrics (sessions, pageviews, users, bounce rate, duration)

rybbit_get_overview_timeseries

Metrics as time-series with configurable buckets

rybbit_get_session_locations

Geographic session data with coordinates for map visualization

Metrics & Dimensions

Tool

Description

rybbit_get_metric

Breakdown by dimension (browser, OS, country, page, UTM, etc.)

rybbit_get_retention

User retention cohort analysis

Sessions

Tool

Description

rybbit_list_sessions

Session list with filtering by IP, identified users, min duration, and pagination

rybbit_get_session

Full session detail with events and user traits

Users

Tool

Description

rybbit_list_users

Users with search, sort (first/last seen, pageviews, sessions, duration), and identified-only filter

rybbit_get_user

User detail with traits and activity

rybbit_get_user_traits

Trait keys, values, or find users by trait

rybbit_get_user_event_breakdown

Per-user event count breakdown

Events

Tool

Description

rybbit_list_events

Raw event records with filtering

rybbit_get_event_names

Custom event names and counts

rybbit_get_event_properties

Property breakdowns per event

rybbit_get_event_timeseries

Event count trends over time with configurable buckets

rybbit_get_outbound_links

Outbound link clicks with URLs and counts

Errors

Tool

Description

rybbit_get_errors

Error types/counts, individual instances, or timeseries for a specific error

Performance (Web Vitals)

Tool

Description

rybbit_get_performance

Core Web Vitals (LCP, CLS, INP, FCP, TTFB) with percentiles

rybbit_get_performance_timeseries

Web Vitals trends over time

Funnels & Goals

Tool

Description

rybbit_list_funnels

Saved funnels with step definitions

rybbit_analyze_funnel

Ad-hoc funnel analysis with custom steps

rybbit_get_funnel_step_sessions

Sessions that reached or dropped off at a funnel step

rybbit_list_goals

Goals with conversion metrics

rybbit_get_goal_sessions

Sessions that completed a specific goal

Journeys

Tool

Description

rybbit_get_journeys

User navigation path analysis


Common Parameters

All analytics tools support these optional parameters:

Parameter

Type

Description

siteId

string

Site identifier (required)

startDate

string

Start date YYYY-MM-DD

endDate

string

End date YYYY-MM-DD

timeZone

string

IANA timezone (e.g., Europe/Prague)

filters

array

Filter array [{parameter, type, value[]}]

pastMinutesStart

number

Minutes ago (alternative to date range)

Filter Parameters

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

Filter Types

equals, not_equals, contains, not_contains, regex, not_regex, greater_than, less_than

Time Buckets

minute, five_minutes, ten_minutes, fifteen_minutes, hour, day, week, month, year


Development

# Install dependencies
npm install

# Build
npm run build

# Watch mode
npm run dev

# Type checking
npx tsc --noEmit

Requirements

  • Node.js: 18+

  • Rybbit Analytics: Self-hosted or cloud instance


Contributing

Contributions are welcome! For major changes, please open an issue first.

  1. Fork the repository

  2. Create your feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'feat: description')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request

Support

License

MIT License — see LICENSE for details.



Available Tools

40 tools
rybbit_analyze_funnelAnalyze FunnelA
Read-onlyIdempotent

Analyze a custom funnel by defining steps (page visits or events). Returns visitor counts and drop-off rates at each step.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
startDateNoStart date (YYYY-MM-DD)
endDateNoEnd date (YYYY-MM-DD)
timeZoneNoIANA timezone (default UTC)
filtersNoFilters to apply
pastMinutesStartNoMinutes ago start
pastMinutesEndNoMinutes ago end
stepsYesFunnel steps to analyze (minimum 2)

TDQS

A3.7/5.0
Behavior3/5

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

Annotations provide readOnlyHint, destructiveHint, idempotentHint, openWorldHint. Description adds that it returns visitor counts and drop-off rates, which is consistent but adds little beyond annotations. No contradictions.

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?

Single sentence that is front-loaded with the core purpose. No extraneous information; every word is necessary.

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?

For a tool with 8 parameters and no output schema, the description is minimal. It does not explain the step structure in detail or how return values map, though schema covers parameters well. Adequate but not complete for complex usage contexts.

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% with detailed parameter descriptions. Description repeats 'steps (page visits or events)' but does not add new parameter semantics beyond the schema. Baseline 3 as schema does the heavy lifting.

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 analyzes a custom funnel with steps (page visits or events) and returns visitor counts and drop-off rates. Distinguishes from siblings like rybbit_list_funnels and rybbit_create_funnel.

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?

Implies usage for analyzing funnels but lacks explicit guidance on when to use this tool over alternatives (e.g., when to use rybbit_list_funnels instead). No exclusions or prerequisites mentioned.

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

rybbit_create_funnelCreate FunnelA

Save a new named funnel definition. Steps are evaluated in order. Pass an existing funnel report ID to overwrite that funnel instead of creating a new one.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
nameYesFunnel display name
stepsYesFunnel steps in order (minimum 2)
reportIdNoOptional existing funnel report ID to overwrite (instead of creating a new one)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations indicate mutation (readOnlyHint=false) and variability (openWorldHint=true). Description adds that steps are evaluated in order and overwrite behavior, which aligns with annotations without contradiction.

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, front-loaded with essential purpose, and no extraneous information.

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?

Description covers purpose and behavior but omits return value (e.g., created funnel ID or confirmation). No output schema exists, so agent lacks response format info. Adequate but not fully complete.

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?

All parameters have schema descriptions (100% coverage). Description adds value by clarifying the reportId usage for overwriting and that steps are evaluated in order, beyond the schema alone.

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?

Description clearly states the tool saves a new funnel definition or overwrites an existing one, with specific verb 'Save' and resource 'funnel definition'. It distinguishes from sibling tools like rybbit_create_goal or rybbit_delete_funnel by focusing on creating/overwriting funnels.

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?

Describes when to use (create new or overwrite) and mentions steps order, but does not explicitly state when not to use or recommend alternatives like rybbit_analyze_funnel or rybbit_list_funnels.

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

rybbit_create_goalCreate GoalA

Create a new conversion goal for a site. Goal can be path-based (URL match) or event-based (custom event triggered).

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
nameNoOptional display name for the goal
goalTypeYes'path' = URL pattern, 'event' = custom event
configYesGoal configuration. Use pathPattern for path goals or eventName for event goals.

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate non-read-only and non-destructive behavior. The description adds 'Create' which is consistent. It does not elaborate on side effects, permissions, or other behavioral nuances beyond what annotations 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?

The description is a single, well-structured sentence that immediately conveys the tool's purpose and key differentiator (path vs. event). 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 the tool's complexity (4 parameters, nested object) and the complete schema annotations, the description is adequate. However, it does not mention return values or confirmation of creation, which could be helpful but is not critical.

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% with detailed descriptions for all parameters. The description only repeats the high-level concept of path vs. event, adding minimal value beyond 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 tool creates a new conversion goal for a site and specifies two types (path-based and event-based), distinguishing it from sibling tools like rybbit_update_goal, rybbit_list_goals, and rybbit_delete_goal.

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 implies usage for creating conversion goals, but lacks explicit guidance on when to use path vs. event types or when not to use this tool. However, the context of sibling tools (e.g., update, delete) makes the purpose clear.

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

rybbit_create_siteCreate SiteA

Create a new site in Rybbit. Use type 'web' for websites (domain like 'example.com') or type 'app' for mobile apps (package name like 'com.example.app'). Returns the created site with its siteId for tracking integration.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain of the site (e.g. 'example.com') or package name for apps (e.g. 'com.example.app')
nameNoDisplay name for the site (defaults to domain)
organizationIdYesOrganization ID to add the site to. Use rybbit_list_sites to find organization IDs.
typeNoSite type: 'web' for websites (default), 'app' for mobile apps

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate mutation (readOnlyHint=false), and the description confirms creation. It adds value by explaining the return value (siteId) beyond 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?

Two sentences covering purpose, usage, and return value with 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?

Description covers creation details and return value. Lacks error handling or idempotency info, but is sufficient given openWorldHint and schema richness.

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% but the description adds examples for 'type' and format for 'domain', and mentions default for 'name', providing extra context.

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 creates a site and distinguishes between 'web' and 'app' types, which is specific and differentiates it from sibling tools like delete_site or list_sites.

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?

Provides explicit guidance on when to use 'web' vs 'app' types and how to find organizationId via rybbit_list_sites. Lacks explicit 'when not to use' but is still clear.

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

rybbit_delete_funnelDelete FunnelA
DestructiveIdempotent

Permanently delete a saved funnel. This action cannot be undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
funnelIdYesFunnel ID to delete (from rybbit_list_funnels)

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already indicate destructive and idempotent behavior. The description reinforces irreversibility ('cannot be undone'), adding useful context. No contradictions found.

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?

Single sentence with no wasted words. Front-loads the key action and consequence. Highly efficient.

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?

Despite no output schema, the description adequately covers the core purpose and effect. Could mention return value (e.g., success confirmation) but not critical for a simple delete action.

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 baseline is 3. The description does not add new meaning beyond what the schema already provides for both parameters.

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 action ('permanently delete') and resource ('saved funnel'). The title 'Delete Funnel' and sibling tools like rybbit_create_funnel and rybbit_list_funnels provide strong differentiation.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. The implication is that it is for permanent deletion only, but no 'when not to use' or alternative recommendations are given.

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

rybbit_delete_goalDelete GoalA
DestructiveIdempotent

Permanently delete a goal. This action cannot be undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
goalIdYesNumeric goal ID to delete

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate destructive and idempotent nature. Description adds 'cannot be undone' reinforcing irreversibility. No contradictions, but missing details like auth needs or 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 short sentences, no redundant words, front-loaded with the key action and consequence.

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?

Simple delete operation, annotations cover key traits. Lacks mention of prerequisites (e.g., goal must exist) and error cases, but overall sufficient for such a straightforward action.

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% with clear descriptions for siteId and goalId. Tool description adds no extra parameter information 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 it deletes a goal permanently. Differentiates from siblings like create_goal, update_goal, list_goals by the 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?

Implied usage for deletion but no explicit when-to-use, when-not-to-use, or alternatives. Lacks guidance on prerequisites or comparison with other tools like disabling a goal.

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

rybbit_delete_siteDelete SiteA
Destructive

Delete a site from Rybbit. This permanently removes the site and its replay data. Use rybbit_list_sites or rybbit_get_site_id to find site IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false. The description reinforces this and adds the important detail that replay data is also permanently removed, providing valuable behavioral context beyond the 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?

Two sentences, no wasted words. The action and key consequence are front-loaded, and the guidance is appended efficiently.

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 tool's simplicity (single required parameter, no output schema), the description covers all essential aspects: what it does, the destructive nature, and how to obtain the required input. No gaps.

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?

With 100% schema description coverage, the baseline is 3. The description does not add new information about the parameter beyond what is in the schema (siteId as numeric ID or domain identifier).

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 'Delete a site' and specifies the resource ('site from Rybbit'), and it distinguishes from sibling tools like rybbit_create_site or rybbit_list_sites by explicitly mentioning permanence and destruction.

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 provides explicit guidance on how to find the required site ID using rybbit_list_sites or rybbit_get_site_id, which helps the agent know prerequisites. It does not explicitly state when not to use it, but the context is clear.

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

rybbit_get_configGet Rybbit ConfigA
Read-onlyIdempotent

Get Rybbit server version and configuration

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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, and non-destructive behavior. The description adds value by specifying the return content (version and configuration), which is not covered by 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?

The description is a single, concise sentence with no unnecessary words, achieving maximum efficiency for the information conveyed.

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 covers the tool's purpose. It could optionally hint at the output structure, but the current text is sufficient for a simple config retrieval 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?

The tool has zero parameters; schema coverage is 100%. The description does not need to add parameter info, and the baseline for 0 parameters is 4. No additional parameter semantics are required.

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 retrieves 'Rybbit server version and configuration', using a specific verb and resource, and is distinct from sibling tools which focus on operational data like funnels, events, or sessions.

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?

No explicit guidance on when to use this tool versus alternatives. The purpose is implied for server info, but no exclusions or context hints (e.g., prerequisites) are provided.

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

rybbit_get_errorsError TrackingA
Read-onlyIdempotent

Get error tracking data. Workflow: (1) type='names' to see error types and counts, (2) type='events' with errorMessage to see individual instances with stack traces, (3) type='timeseries' with errorMessage to see trends over time.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
startDateNoStart date in ISO format (YYYY-MM-DD)
endDateNoEnd date in ISO format (YYYY-MM-DD)
timeZoneNoIANA timezone (e.g., Europe/Prague). Default: UTC
filtersNoArray of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}]
pastMinutesStartNoAlternative to dates: minutes ago start (e.g., 60 = last hour)
pastMinutesEndNoAlternative to dates: minutes ago end (default 0 = now)
pageNoPage number, 1-indexed (default: 1)
limitNoResults per page (default: 20-50 depending on endpoint, max 200)
typeNo'names' for error type summary with counts, 'events' for individual error instances with stack traces, 'timeseries' for error count trends over time for a specific error. Default: names
errorMessageNoError message filter (required for type='events' and type='timeseries'). Use type='names' first to discover error messages.
bucketNoTime bucket for timeseries type (default: day)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate readOnly, destructive, idempotent, and openWorld hints. The description adds behavioral context beyond annotations by detailing the multi-step process and the necessity of errorMessage for certain types.

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 a numbered workflow; concise and front-loaded, 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?

Given the tool's complexity (12 parameters, 3 types) and no output schema, the description provides a useful high-level workflow. It covers the main usage patterns but could mention error message discovery more explicitly.

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 adds value by explaining the role of 'type' and 'errorMessage' in the workflow, complementing the schema's parameter descriptions.

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 'Get error tracking data' and outlines a three-step workflow (names, events, timeseries), distinguishing it from sibling tools that deal with events or other analytics.

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 provides a step-by-step workflow: use type='names' to discover error types, then type='events' with errorMessage for instances, and type='timeseries' for trends. It explains the requirement for errorMessage in events and timeseries, but does not explicitly compare to sibling tools.

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

rybbit_get_event_namesEvent NamesA
Read-onlyIdempotent

Get all custom event names and their occurrence counts for a site. Useful for discovering what events are being tracked.

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

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds no further behavioral context beyond stating it returns counts, which is sufficient.

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, front-loaded with action and purpose, 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?

While the description explains the output (names and counts), it does not specify the return format or structure. Given the tool's simplicity, this is adequate but could be improved.

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 baseline is 3. The description does not add parameter-specific details beyond what the schema provides.

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 'Get all custom event names and their occurrence counts for a site' with a specific verb and resource, and distinguishes from sibling tools by focusing on event names and counts.

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 says 'Useful for discovering what events are being tracked', providing a usage context, but does not explicitly mention when not to use or name alternative tools.

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

rybbit_get_event_propertiesEvent PropertiesA
Read-onlyIdempotent

Get property breakdowns for a specific custom event. Returns the distinct property keys and values with counts.

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

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds that the tool returns distinct property keys/values with counts, providing output context beyond annotations. However, it omits performance or data freshness details, but annotations cover safety sufficiently.

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

Conciseness4/5

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

The description is a single sentence that is front-loaded with purpose, containing no wasted words. It could be slightly more structured (e.g., listing output fields), but it remains concise and clear.

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 the tool's simplicity (get event properties) and the absence of an output schema, the description effectively conveys the return format. It lacks comparison to overlapping tools like rybbit_get_user_event_breakdown, but for a straightforward query, it is largely 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?

Schema coverage is 100% with all parameters documented descriptively. The description does not add additional parameter meaning beyond summarizing the tool's purpose. Baseline score of 3 is appropriate since the schema does the heavy lifting.

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 retrieves property breakdowns for a specific custom event, specifying the output includes distinct keys, values, and counts. It effectively distinguishes from siblings like rybbit_get_event_names (lists event names) and rybbit_get_event_timeseries (timeseries data).

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 does not provide explicit guidance on when to use this tool versus alternatives like rybbit_get_user_event_breakdown. It implies usage for exploring event properties but lacks when-not-to-use or alternative suggestions.

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

rybbit_get_event_timeseriesEvent Time SeriesB
Read-onlyIdempotent

Get custom event counts as time-series data with configurable buckets. Useful for analyzing event trends over time.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
startDateNoStart date in ISO format (YYYY-MM-DD)
endDateNoEnd date in ISO format (YYYY-MM-DD)
timeZoneNoIANA timezone (e.g., Europe/Prague). Default: UTC
filtersNoArray of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}]
pastMinutesStartNoAlternative to dates: minutes ago start (e.g., 60 = last hour)
pastMinutesEndNoAlternative to dates: minutes ago end (default 0 = now)
bucketNoTime bucket granularity (default: day). Use 'hour' for last 24h, 'week'/'month' for long ranges

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already declare safe, read-only, idempotent behavior. Description adds only high-level purpose ('get custom event counts') without detailing behavioral traits like return format, limits, or how bucketing works. No contradiction.

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

Conciseness4/5

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

Two short sentences, no unnecessary words. Front-loaded with the action. Could be slightly more informative but efficient for a simple purpose.

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?

Complex tool (8 params, nested filters) with no output schema. Description fails to explain return value shape, whether it aggregates over event names, or how filters interact. Insufficient for full autonomy.

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%; the description says 'configurable buckets' referring to bucket parameter but adds no significant meaning beyond what's in the schema. Baseline score 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?

Description clearly states it retrieves custom event counts as time-series data with configurable buckets. Distinguishes from sibling timeseries tools like overview_timeseries and performance_timeseries by focusing on custom events.

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 a vague usage hint ('useful for analyzing event trends'), but no explicit when-to-use or when-not-to-use compared to other timeseries tools. Lacks guidance on selection criteria.

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

rybbit_get_funnel_step_sessionsFunnel Step SessionsA
Read-onlyIdempotent

Get the sessions that reached (or dropped off at) a specific funnel step. Useful for drilling into why users drop off at a particular funnel step.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
stepNumberYesThe funnel step number to get sessions for (1-indexed)
modeYes'reached' = sessions that made it to this step, 'dropped' = sessions that dropped off at this step
startDateNoStart date (YYYY-MM-DD)
endDateNoEnd date (YYYY-MM-DD)
timeZoneNoIANA timezone (default UTC)
filtersNoFilters to apply
pastMinutesStartNoMinutes ago start
pastMinutesEndNoMinutes ago end
stepsYesThe funnel steps definition (same as used in rybbit_analyze_funnel)
pageNoPage number, 1-indexed (default: 1)
limitNoResults per page (default: 20-50 depending on endpoint, max 200)

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the agent knows it's safe. The description adds no further behavioral details beyond what the schema (e.g., mode parameter) provides. It does not mention pagination behavior, rate limits, or authorization 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 two sentences long, front-loaded with the core purpose, and contains no extraneous information. Every word is valuable.

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 complexity (12 parameters) and no output schema, the description is minimal. It does not explain the return format (e.g., list of session objects with IDs or details). While the schema documents inputs well, the absence of output info leaves the agent guessing about the response structure.

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 baseline is 3. The description does not add any additional meaning beyond the parameter descriptions in the schema. It rephrases the mode parameter but offers no new insight.

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 retrieves sessions for a specific funnel step, with the ability to filter by reached or dropped. It distinguishes itself from sibling tools like rybbit_analyze_funnel and rybbit_get_goal_sessions by focusing on individual step drilling.

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 explicitly says it's useful for drilling into user drop-off at a particular step, providing clear use-case context. It does not list exclusions or alternatives, but the sibling names and schema parameters (steps, stepNumber) imply when to use it vs. other funnel tools.

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

rybbit_get_goal_sessionsGoal SessionsA
Read-onlyIdempotent

Get sessions that completed a specific goal. Useful for analyzing which users and sessions triggered goal conversions.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
goalIdYesGoal ID to get sessions for. Use rybbit_list_goals to find goal IDs.
startDateNoStart date (YYYY-MM-DD)
endDateNoEnd date (YYYY-MM-DD)
timeZoneNoIANA timezone (default UTC)
filtersNoFilters to apply
pastMinutesStartNoMinutes ago start
pastMinutesEndNoMinutes ago end
pageNoPage number, 1-indexed (default: 1)
limitNoResults per page (default: 20-50 depending on endpoint, max 200)

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true, so the description's added value is limited. It adds that sessions must have 'completed a specific goal', which is useful context beyond 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?

Two sentences, front-loaded with purpose, no redundant information. Every word earns its place.

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 the complexity (10 parameters, no output schema), the description is minimal but sufficient for core use. It doesn't mention pagination or defaults, but the schema covers them. Slightly incomplete for advanced use, but adequate.

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%, with detailed parameter descriptions (e.g., filters parameter explains dimensions and user_id note). The tool description adds no extra meaning beyond 'completed a specific goal', so marginal value. Baseline 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 clearly states the tool gets sessions that completed a specific goal, using a specific verb and resource. It distinguishes from sibling tools like rybbit_get_funnel_step_sessions and rybbit_list_sessions by focusing on goal conversions.

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 explains the tool is useful for analyzing users and sessions that triggered goal conversions, providing clear context. It hints at when to use it but doesn't explicitly exclude alternatives or compare to siblings, though the purpose is well-defined.

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

rybbit_get_journeysUser JourneysA
Read-onlyIdempotent

Get user journey (flow) analysis showing the most common navigation paths through the site. Shows sequences of pages users visit and how many sessions follow each path.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
startDateNoStart date (YYYY-MM-DD)
endDateNoEnd date (YYYY-MM-DD)
timeZoneNoIANA timezone (default UTC)
filtersNoFilters to apply
pastMinutesStartNoMinutes ago start
pastMinutesEndNoMinutes ago end
stepsNoNumber of journey steps to analyze (default 3)
journeyLimitNoMax number of journey paths to return (default 100)

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, so the description does not need to cover safety. It adds moderate behavioral context by describing the output (sequences and session counts), but lacks details on limitations, sampling, or data freshness.

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 verb and resource, with no unnecessary words or repetitions. Every sentence adds value.

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 9 parameters (all optional except siteId) and no output schema, the description explains the return value adequately (sequences and session counts). Additional output schema would improve completeness, but the description is sufficient for an agent to understand what the tool returns.

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%, with all parameters documented in the input schema. The description does not add extra meaning beyond the schema, which is acceptable given the high coverage, warranting a baseline score of 3.

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', the resource 'user journey (flow) analysis', and explains it shows 'common navigation paths' with session counts, distinguishing it from siblings like funnel analysis or session listing.

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 analyzing navigation paths but provides no explicit guidance on when to use this tool versus alternatives like rybbit_analyze_funnel or rybbit_list_sessions, nor any exclusions or prerequisites.

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

rybbit_get_metricMetric BreakdownA
Read-onlyIdempotent

Get metric breakdown by dimension. Use parameter='pathname' for top pages, 'browser'/'operating_system'/'device_type' for tech stats, 'country'/'city' for geo, 'utm_source'/'utm_campaign' for marketing, 'referrer'/'channel' for traffic sources, 'entry_page'/'exit_page' for user flow. Returns sorted list with counts, percentages, bounce rate, and session duration.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
startDateNoStart date in ISO format (YYYY-MM-DD)
endDateNoEnd date in ISO format (YYYY-MM-DD)
timeZoneNoIANA timezone (e.g., Europe/Prague). Default: UTC
filtersNoArray of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}]
pastMinutesStartNoAlternative to dates: minutes ago start (e.g., 60 = last hour)
pastMinutesEndNoAlternative to dates: minutes ago end (default 0 = now)
parameterYesMetric dimension to break down by. device_model and app_version apply only to app-type sites tracked via SDK.
pageNoPage number, 1-indexed (default: 1)
limitNoResults per page (default: 20-50 depending on endpoint, max 200)

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds behavioral detail by specifying the sorted return format with counts, percentages, bounce rate, and session duration. No contradictions. However, it doesn't discuss pagination behavior or rate limits, which are partially covered by schema.

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 paragraph of 4 sentences, front-loaded with the core purpose. Every sentence adds value—examples, return fields. No wasted words.

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?

Despite 10 parameters and no output schema, the description covers purpose, parameter usage guidance, and return structure. It addresses the tool's complexity well. The only minor gap is a lack of explicit guidance on when to use this vs other get_* tools, but the comprehensive examples implicitly differentiate it.

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% (all parameters have descriptions), so baseline is 3. The description adds value by explaining how the 'parameter' field is used in practice (e.g., 'pathname for top pages') and noting that device_model and app_version only apply to app-type sites. This goes beyond 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 'Get metric breakdown by dimension' and provides specific examples (top pages, tech stats, geo, marketing, traffic sources, user flow). This distinguishes it from sibling tools like get_overview or get_performance.

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 gives explicit guidance on which dimension values to use for different analysis purposes (e.g., 'Use parameter='pathname' for top pages'). It doesn't explicitly say when not to use this tool, but the level of detail allows the agent to infer appropriate usage.

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

rybbit_get_overviewSite OverviewA
Read-onlyIdempotent

Get aggregated overview metrics for a site: sessions, pageviews, unique users, pages per session, bounce rate, and average session duration. Supports date range and filters.

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

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds context about returned metrics but no additional behavioral traits beyond what annotations 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?

Two sentences, front-loaded with metrics list, no unnecessary words. Every sentence adds value.

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?

Despite no output schema, description lists returned metrics. Could clarify whether data is daily breakdown or totals, but is sufficient for agent understanding.

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 description adds no new meaning beyond what the schema already provides. Baseline score 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?

Description uses a specific verb ('Get') and resource ('overview metrics for a site'), lists the exact metrics, and distinguishes from siblings like rybbit_get_overview_timeseries and rybbit_get_metric.

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?

Description implies use for aggregate overview with date range and filters, but does not explicitly state when to use this tool versus alternatives or provide exclusions.

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

rybbit_get_overview_timeseriesOverview Time SeriesA
Read-onlyIdempotent

Get overview metrics as time-series data with configurable time buckets (minute, hour, day, week, month). Returns arrays of data points for charting trends.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
startDateNoStart date in ISO format (YYYY-MM-DD)
endDateNoEnd date in ISO format (YYYY-MM-DD)
timeZoneNoIANA timezone (e.g., Europe/Prague). Default: UTC
filtersNoArray of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}]
pastMinutesStartNoAlternative to dates: minutes ago start (e.g., 60 = last hour)
pastMinutesEndNoAlternative to dates: minutes ago end (default 0 = now)
bucketNoTime bucket granularity (default: day). Use 'hour' for last 24h, 'week'/'month' for long ranges

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint, covering safety. The description adds output format context (arrays for charting) but does not disclose any additional behavioral traits like rate limits or result size bounds. With annotations present, the description adds marginal value.

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, well-structured sentence of 20 words. It front-loads the core action and resource, includes key differentiators (time buckets, data format), and contains no extraneous 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?

Given the tool has 8 parameters, no output schema, and rich annotations, the description is complete enough to convey the core purpose and return type. It could mention the specific metrics included in 'overview' or clarify data point structure, but the context is sufficient for a read-only, well-annotated tool.

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 thoroughly. The description only mentions configurable buckets and return format, adding no new parameter-specific semantics beyond what the schema provides. Baseline 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 clearly states the verb 'Get', the resource 'overview metrics as time-series data', and notes configurable time buckets and return format (arrays for charting). It distinguishes from siblings like rybbit_get_overview (snapshot) and rybbit_get_metric (single metric), providing a specific and actionable purpose.

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 configurable time buckets but does not explicitly instruct when to use this tool versus alternatives like rybbit_get_overview. The schema includes hints on bucket selection (e.g., 'Use hour for last 24h'), but no direct comparisons or exclusions are given.

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

rybbit_get_page_titlesGet Page TitlesA
Read-onlyIdempotent

Get the most-viewed page titles for a site, broken down by pageviews and unique sessions. Complements rybbit_get_metric with parameter='pathname' by giving the human-readable page title instead of just the path.

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

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, and open-world behavior. The description adds that the tool breaks down by pageviews and unique sessions, providing concrete output details beyond 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?

Two concise sentences: first states what the tool does and its output, second explains its relationship to a sibling. Every sentence is essential and front-loaded.

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 read-only nature, good annotations, and clear parameters, the description fully captures the tool's purpose and output without needing an output schema.

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 parameters are well-documented. The description adds value by clarifying that output includes page titles and metrics, which goes beyond individual parameter descriptions.

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 retrieves the most-viewed page titles for a site, broken down by pageviews and unique sessions, and distinguishes it from the sibling rybbit_get_metric by highlighting human-readable titles over paths.

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 explicitly frames the tool as a complement to rybbit_get_metric with parameter='pathname', providing clear context for when to use it instead of the sibling. While it doesn't list exclusions, the guidance is sufficient.

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

rybbit_get_performanceWeb VitalsA
Read-onlyIdempotent

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.

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

TDQS

A3.6/5.0
Behavior4/5

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

Annotations (readOnlyHint=true) already declare safety. The description adds useful behavioral details about the returned metrics and percentiles, exceeding baseline expectations.

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 core purpose, and zero wasted words. All information is essential.

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?

Adequate for understanding the basic functionality given thorough schema descriptions. However, it lacks mention of the output format or aggregation versus time series, leaving some context incomplete for a complex 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?

Schema coverage is 100%, so baseline is 3. The description adds value by specifying the returned metrics and percentiles, and highlighting the optional breakdown dimensions beyond the schema's enumeration.

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?

Clearly states 'Get Core Web Vitals performance metrics' with specific metrics and percentiles. However, it does not differentiate from the sibling rybbit_get_performance_timeseries, which could cause confusion.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like rybbit_get_performance_timeseries. Lacks context for selection.

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

rybbit_get_performance_timeseriesWeb Vitals Time SeriesB
Read-onlyIdempotent

Get Core Web Vitals performance metrics as time-series data for trend analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
startDateNoStart date in ISO format (YYYY-MM-DD)
endDateNoEnd date in ISO format (YYYY-MM-DD)
timeZoneNoIANA timezone (e.g., Europe/Prague). Default: UTC
filtersNoArray of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}]
pastMinutesStartNoAlternative to dates: minutes ago start (e.g., 60 = last hour)
pastMinutesEndNoAlternative to dates: minutes ago end (default 0 = now)
bucketNoTime bucket granularity (default: day). Use 'hour' for last 24h, 'week'/'month' for long ranges

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, etc. The description adds no behavioral context beyond stating it returns time-series data. It does not disclose rate limits, data freshness, or what happens with missing 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?

The description is a single, clear, front-loaded sentence with no wasted words. It efficiently conveys the core purpose.

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 8 parameters and no output schema, the description is minimal. It does not specify which Core Web Vitals metrics are returned (e.g., LCP, FID, CLS) or units. While adequate for basic understanding, it leaves gaps for detailed use.

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% with detailed parameter descriptions. The tool's description does not add meaning beyond the schema; it does not explain parameter interactions or provide examples. Baseline 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 clearly states the verb 'Get', the resource 'Core Web Vitals performance metrics', and the format 'time-series data for trend analysis'. It distinguishes this tool from siblings like rybbit_get_performance (aggregate) and rybbit_get_overview_timeseries (different metrics).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as rybbit_get_performance or rybbit_get_overview_timeseries. There is no mention of prerequisites, exclusions, or context for selection.

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

rybbit_get_retentionUser RetentionA
Read-onlyIdempotent

Get user retention cohort analysis showing how many users return over time periods.

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

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already signal read-only, idempotent behavior. The description adds that it shows returning users over time periods, which clarifies the output scope. No contradictions, and no additional side effects are relevant.

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 (14 words) that front-loads the verb and resource. Every word earns its place with no redundancy.

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 tool has 7 parameters and no output schema, the description lacks details about the return format (e.g., columns, period granularity). It adequately states the purpose but leaves the agent uninformed about what exact data to expect.

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 100% description coverage for all 7 parameters, so the description adds no additional meaning. The baseline of 3 is appropriate as the tool description does not compensate further.

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 retrieves user retention cohort analysis, specifying the action ('get') and resource ('user retention'). It distinguishes from sibling tools like rybbit_get_metric or rybbit_get_overview by focusing on cohort retention over time periods.

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 does not explicitly guide when to use this tool versus alternatives like rybbit_get_metric or rybbit_get_overview_timeseries. Usage must be inferred from the purpose, leaving room for improvement.

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

rybbit_get_sessionSession DetailA
Read-onlyIdempotent

Get detailed session information including all page views, events, user traits, device info, location, and full event timeline. Use rybbit_list_sessions first to find session IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
sessionIdYesSession ID to retrieve

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds useful context by listing what data is included (page views, events, traits, etc.), aligning with the read-only nature. No contradictions.

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: first lists contents, second provides usage hint. No redundant words, efficient and front-loaded.

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?

No output schema exists, but the description enumerates what is returned. Lacks mention of pagination or size limits, but for a single session retrieval this is generally 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?

Schema description coverage is 100%; both siteId and sessionId are documented in the schema. The description vaguely ties sessionId to retrieving session information but adds no further detail beyond 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 retrieves detailed session information including page views, events, user traits, device info, location, and timeline. It distinguishes from sibling rybbit_list_sessions, which only lists session IDs.

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 advises to use rybbit_list_sessions first to find session IDs. Provides clear context for when to use this tool versus alternatives, though no negative exclusions are given.

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

rybbit_get_session_locationsSession LocationsA
Read-onlyIdempotent

Get geographic session location data with coordinates. Returns latitude, longitude, city, country, and session count for map visualization and geographic analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
startDateNoStart date in ISO format (YYYY-MM-DD)
endDateNoEnd date in ISO format (YYYY-MM-DD)
timeZoneNoIANA timezone (e.g., Europe/Prague). Default: UTC
filtersNoArray of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}]
pastMinutesStartNoAlternative to dates: minutes ago start (e.g., 60 = last hour)
pastMinutesEndNoAlternative to dates: minutes ago end (default 0 = now)
pageNoPage number, 1-indexed (default: 1)
limitNoResults per page (default: 20-50 depending on endpoint, max 200)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations (readOnlyHint, destructiveHint, idempotentHint) indicate safe, read-only behavior. The description adds contextual detail about returned data (coordinates, city, country, session count) without contradicting annotations, providing transparency beyond structured fields.

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, efficient sentence that front-loads key information (verb, resource, output) without extraneous words or repetition.

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 the tool's complexity (9 parameters, no output schema), the description adequately states return fields and use case. Schema covers parameters fully. The openWorldHint allows for extra fields, so description is sufficiently 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 description coverage is 100%, so the schema already documents parameters thoroughly. The description does not add new parameter semantics beyond the schema, though it reinforces the purpose of the returned data. Baseline 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 clearly states the tool retrieves geographic session location data with coordinates, city, country, and session count, specifying the action ('get') and resource ('session locations'). It distinguishes itself from sibling tools like 'rybbit_get_session' which returns session details, not geographic data.

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 implies usage for map visualization and geographic analysis, providing context for when to use this tool. However, it does not explicitly state when not to use it or mention alternatives, though sibling differentiation is clear from the tool name.

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

rybbit_get_site_idGet Site ID by DomainA
Read-onlyIdempotent

Look up a site by domain name. Returns the numeric siteId used for analytics API queries. Note: for SDK tracking setup, use the hash siteId returned by rybbit_create_site instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain to search for (e.g. 'example.com'). Partial match supported.

TDQS

A4.3/5.0
Behavior4/5

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

Beyond annotations (readOnlyHint, idempotentHint, etc.), the description adds that partial domain matching is supported and that the returned siteId is numeric. This provides useful behavioral context without contradicting 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?

The description is two sentences long, front-loaded with the action, and includes a crucial usage note. Every sentence is necessary and there is no fluff.

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?

For a simple lookup tool with one parameter and comprehensive annotations, the description covers purpose, return value, and alternative use case. No output schema is needed as the return is straightforward.

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?

The schema already provides a clear description of the single parameter 'domain' with an example and mention of partial match. The description does not add additional meaning beyond the schema, so baseline score 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 clearly states the action 'Look up a site by domain name' and the result 'Returns the numeric siteId used for analytics API queries.' It distinguishes from sibling rybbit_list_sites by implication and explicitly contrasts with rybbit_create_site for SDK setup.

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 provides a clear note on when not to use this tool: 'for SDK tracking setup, use the hash siteId returned by rybbit_create_site instead.' It also implies usage for analytics API queries, but does not explicitly compare to other siblings like rybbit_list_sites.

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

rybbit_get_userUser DetailA
Read-onlyIdempotent

Get detailed information about a specific user including their traits, session history, and activity summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
userIdYesUser ID (identified_user_id or internal user ID)

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, so the agent knows it is a safe read operation. The description adds specific detail about returned data (traits, session history, activity summary) beyond annotations, without contradiction.

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

Conciseness4/5

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

The description is a single sentence that is clear and to the point. It could be improved by structuring the list of returned items, but it is not verbose or wasteful.

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?

For a get operation with no output schema, the description lists what is returned (traits, session history, activity summary). However, 'activity summary' is somewhat vague. It does not mention pagination or limits, but that is less critical for a single-user lookup.

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%: both siteId and userId have descriptions. The tool description does not add new parameter meaning beyond repeating that siteId is numeric/domain and userId can be identified_user_id or internal ID. Baseline 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 'Get' and resource 'specific user' with explicit inclusions of traits, session history, and activity summary. This clearly distinguishes it from sibling tools like rybbit_get_user_traits (only traits) and rybbit_get_session (single session).

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?

No explicit when-to-use or when-not-to-use is provided. The description implies the need for a user ID but does not mention alternatives such as rybbit_get_user_traits for just traits. Usage context is implied but not clarified.

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

rybbit_get_user_event_breakdownUser Event BreakdownA
Read-onlyIdempotent

Get event count breakdown for a specific user. Shows how many times each event_name was triggered by this user. Accepts either the Rybbit user_id (device hash) or the identified_user_id (app-provided user ID). Useful for analyzing per-user behavior like ad_click, chat_message_sent, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
startDateNoStart date in ISO format (YYYY-MM-DD)
endDateNoEnd date in ISO format (YYYY-MM-DD)
timeZoneNoIANA timezone (e.g., Europe/Prague). Default: UTC
filtersNoArray of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}]
pastMinutesStartNoAlternative to dates: minutes ago start (e.g., 60 = last hour)
pastMinutesEndNoAlternative to dates: minutes ago end (default 0 = now)
userIdYesUser ID — either Rybbit device hash (user_id) or app-provided ID (identified_user_id). Both are checked.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false. The description adds that it returns per-event counts and accepts two ID types, which goes beyond annotations. It doesn't mention pagination, but annotations handle safety.

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 fluff, front-loaded with main purpose. Every sentence contributes value.

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 what is returned (per-event counts). It covers the key behavior. Could mention date range applicability, but overall sufficient for a read-only analytic 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?

Schema coverage is 100%, so baseline 3. The description adds meaningful context for userId (dual ID acceptance) and gives examples of event names, adding value beyond 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 gets an event count breakdown for a specific user, with specific verbs and resource. It distinguishes from sibling tools like get_user (general info) and get_user_session_count (session count).

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 mentions it accepts either Rybbit user_id or identified_user_id and is useful for analyzing per-user behavior. It provides clear context but lacks explicit when-not-to-use or alternatives, though siblings make it implicit.

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

rybbit_get_user_session_countUser Session CountA
Read-onlyIdempotent

Get the per-day session count for a single user across the requested time range. Useful for plotting user engagement intensity (calendar heatmap or sparkline).

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
userIdYesUser ID — either identified_user_id or device hash user_id
startDateNoStart date (YYYY-MM-DD)
endDateNoEnd date (YYYY-MM-DD)
timeZoneNoIANA timezone (default UTC)
pastMinutesStartNo
pastMinutesEndNo

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds that it returns per-day session counts across a time range, which aligns with the annotations. It does not disclose additional behaviors like rate limits or handling of missing data, but given the annotations, the description provides sufficient extra context.

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 extremely concise, consisting of two sentences with no unnecessary words. It is front-loaded with the core purpose and immediately adds a relevant 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 the tool's simplicity (per-day count for a user), the description is mostly complete. It explains the output (per-day session count) and a use case. However, it does not specify the exact return structure (e.g., array of {date, count}), which could be inferred. No output schema exists, so a bit more detail might help, but it's still adequate.

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 71%, so the schema already documents most parameters. The description does not add parameter-specific details beyond the schema. The reference to 'time range' implies the date parameters, but this is already covered in the schema. Baseline 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 clearly states the verb 'Get' and the resource 'per-day session count for a single user across the requested time range'. It also provides a specific use case (plotting user engagement intensity with calendar heatmap or sparkline), which differentiates it from sibling tools like rybbit_get_session or rybbit_list_sessions.

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 gives context on when to use the tool (for per-day user engagement intensity), but does not explicitly state when not to use it or mention alternatives. However, the description is sufficient to infer its purpose relative to siblings.

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

rybbit_get_user_traitsUser TraitsA
Read-onlyIdempotent

Get user trait keys, values, or find users by trait. mode='keys' lists all trait keys. mode='values' (default when key is provided) returns distinct values for a trait key. mode='users' finds users matching a specific trait key+value pair (case-insensitive).

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
modeNo'keys' to list trait keys, 'values' to get values for a key, 'users' to find users by trait. Default: 'keys' if no key provided, 'values' if key is provided.
keyNoTrait key (required for 'values' and 'users' modes)
valueNoTrait value (required for 'users' mode)
limitNoMax results to return

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive nature. Description adds useful context: case-insensitive matching for 'users' mode and default mode behavior (keys if no key). This goes beyond annotations and clarifies behavior.

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 pack all necessary information. Front-loaded with the core action, then details each mode in order. 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?

Description covers all three modes and parameters adequately. No output schema, but the agent can infer return types from mode descriptions. It lacks explicit mention of pagination or result structure, but given the annotations and schema, it is largely complete.

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%, but description adds meaning: explains default mode based on key presence and case-insensitivity for value. It clarifies the interaction between mode and key parameters, which is not fully captured in schema descriptions.

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?

Description clearly states the tool's purpose: retrieving user trait keys, values, or finding users by trait. It distinguishes between three modes with specific verbs ('list', 'returns', 'finds'), uniquely identifying its function among sibling tools.

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 explicitly explains when to use each mode: 'keys' for listing all keys, 'values' for distinct values when a key is provided, and 'users' for matching key-value pairs. It does not discuss alternatives or when-not-to-use, but the tool is specific enough that the guidance is clear.

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

rybbit_list_eventsList EventsA
Read-onlyIdempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
startDateNoStart date in ISO format (YYYY-MM-DD)
endDateNoEnd date in ISO format (YYYY-MM-DD)
timeZoneNoIANA timezone (e.g., Europe/Prague). Default: UTC
filtersNoArray of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}]
pastMinutesStartNoAlternative to dates: minutes ago start (e.g., 60 = last hour)
pastMinutesEndNoAlternative to dates: minutes ago end (default 0 = now)
pageNoPage number, 1-indexed (default: 1)
limitNoResults per page (default: 20-50 depending on endpoint, max 200)
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.

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate read-only and idempotent. Description adds useful behavioral context (returns individual records with specific fields, event_name filtering returns only matching, not sessions). No contradictions.

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, front-loaded sentences. First defines purpose and output, second clarifies a key behavioral detail. 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?

No output schema, so description compensates by listing returned fields. Covers pagination and filtering. Could mention default pagination values but schema covers that. Sufficient for a straightforward list tool.

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 baseline is 3. The description does not add meaningful new parameter semantics beyond what the schema already provides.

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 verb 'List' and resource 'raw events for a site'. Specifies return fields (timestamps, types, etc.) and distinguishes from siblings like rybbit_list_sessions.

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 guidance on event_name filtering behavior but lacks explicit comparison to alternative tools or when-to-use scenarios. With many sibling tools, more explicit usage context would help.

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

rybbit_list_funnelsList FunnelsA
Read-onlyIdempotent

List all saved funnels for a site with their step definitions.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds that it returns step definitions, but lacks details on pagination, ordering, or rate limits. It provides some extra context but not extensive behavioral disclosure.

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, well-structured sentence that immediately conveys the tool's action and key detail (step definitions). No extraneous 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?

Given the low complexity (one parameter, no nested objects, no output schema), the description adequately covers the return value (list with step definitions). However, it could mention whether the list is ordered or has limits, but overall it is reasonably 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?

The schema already provides a description for the single parameter (siteId) with 100% coverage. The description does not add any new semantic meaning beyond what is in the schema, so a baseline score of 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?

The description clearly states the verb 'list', the resource 'funnels', and the scope 'for a site', with added detail about including step definitions. It distinguishes from siblings like rybbit_create_funnel and rybbit_analyze_funnel.

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 appropriate usage (when you need to list funnels) but provides no explicit guidance on when to avoid this tool in favor of alternatives, such as rybbit_analyze_funnel for detailed analysis.

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

rybbit_list_goalsList GoalsA
Read-onlyIdempotent

List all goals for a site with their current conversion metrics and configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
startDateNoStart date (YYYY-MM-DD)
endDateNoEnd date (YYYY-MM-DD)
timeZoneNoIANA timezone (default UTC)
filtersNoFilters to apply
pastMinutesStartNoMinutes ago start
pastMinutesEndNoMinutes ago end

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate read-only and idempotent behavior. The description adds useful context that the tool returns conversion metrics and configuration, but does not disclose potential limitations like pagination or performance impacts.

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, front-loaded sentence that captures the action, resource, and key output information without any 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?

For a simple list tool, the description is mostly complete. However, it does not mention optional filters (e.g., startDate, endDate) that could affect results, nor does it specify output format or pagination, which may be needed for completeness.

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 input schema already documents all parameters thoroughly. The description adds no additional parameter-level information beyond what the schema provides.

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 lists all goals for a site and specifies the returned data (conversion metrics and configuration). This distinguishes it from sibling tools like rybbit_create_goal or rybbit_delete_goal.

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 listing goals but does not provide explicit guidance on when to use this tool versus alternatives, such as when to filter or compare with other list or get tools.

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

rybbit_list_sessionsList SessionsA
Read-onlyIdempotent

List sessions for a site with filtering and pagination. Returns session ID, user info, device, location, pages visited, duration, bounce status, and IP address (if site has trackIp enabled). Supports client-side IP filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
startDateNoStart date in ISO format (YYYY-MM-DD)
endDateNoEnd date in ISO format (YYYY-MM-DD)
timeZoneNoIANA timezone (e.g., Europe/Prague). Default: UTC
filtersNoArray of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}]
pastMinutesStartNoAlternative to dates: minutes ago start (e.g., 60 = last hour)
pastMinutesEndNoAlternative to dates: minutes ago end (default 0 = now)
pageNoPage number, 1-indexed (default: 1)
limitNoResults per page (default: 20-50 depending on endpoint, max 200)
ipNoFilter sessions by IP address (exact or partial match, client-side). Requires site to have trackIp enabled.
identifiedOnlyNoOnly return sessions from identified users. Default: false.
minDurationNoMinimum session duration in seconds.

TDQS

A3.9/5.0
Behavior4/5

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

The description adds valuable behavioral context beyond annotations: it specifies conditional return of IP address (trackIp dependent) and client-side IP filtering. While annotations already indicate read-only and idempotent, the description enriches understanding of output fields and filtering behavior.

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 concise sentences that front-load the purpose, then list key return fields and a notable feature (IP filtering). Every sentence adds value with no fluff.

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 complexity of 12 parameters and no output schema, the description provides a comprehensive overview of tool capabilities (list, filter, paginate, return fields). Combined with the richly documented schema, the description is complete for agent decision-making.

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% with detailed parameter descriptions. The description does not add significant new meaning to parameters beyond summarizing return fields and IP filtering. Baseline 3 is appropriate as schema does the heavy lifting.

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 'List' and resource 'sessions', and specifies the scope 'for a site with filtering and pagination'. It distinguishes from sibling tools like rybbit_get_session by implying list vs single session retrieval, and from other list tools by resource type.

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives. It lacks explicit when-to-use, when-not-to-use, or mentions of specific sibling tools like rybbit_get_session for single session details.

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

rybbit_list_sitesList SitesA
Read-onlyIdempotent

List all sites and organizations the authenticated user has access to

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?

Annotations declare read-only, idempotent, and open world. The description adds behavior beyond annotations by specifying that results include both sites and organizations, and are limited to the authenticated user's access, which is useful context.

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?

Single sentence with no wasted words; front-loads the action and scope efficiently.

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 zero parameters, clear annotations, and a straightforward list operation, the description fully covers what the tool does and its scope. No output schema needed for such a simple tool.

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?

There are no parameters (schema coverage 100%), so baseline score of 3 is appropriate. Description adds no parameter info as none exist.

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 lists sites and organizations, distinguishing it from siblings like list_events or list_funnels by specifying both resource types and the scope of authenticated user access.

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 implies usage for retrieving all accessible sites and organizations, but does not explicitly state when to prefer it over specific get tools like get_site_id. Still, the simplicity of a no-parameter list makes usage obvious.

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

rybbit_list_usersList UsersA
Read-onlyIdempotent

List users for a site. Returns user IDs, session counts, first/last seen dates, and user traits. Supports filtering by any analytics dimension. Use 'search' param to find users by username/email/name (case-insensitive partial match).

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
startDateNoStart date in ISO format (YYYY-MM-DD)
endDateNoEnd date in ISO format (YYYY-MM-DD)
timeZoneNoIANA timezone (e.g., Europe/Prague). Default: UTC
filtersNoArray of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}]
pastMinutesStartNoAlternative to dates: minutes ago start (e.g., 60 = last hour)
pastMinutesEndNoAlternative to dates: minutes ago end (default 0 = now)
pageNoPage number, 1-indexed (default: 1)
limitNoResults per page (default: 20-50 depending on endpoint, max 200)
searchNoSearch users by trait value (e.g. username, email). Uses case-insensitive partial matching (ILIKE).
searchFieldNoWhich field to search in (default: 'username'). Only used when 'search' is provided.
identifiedOnlyNoOnly return identified users (users with identified_user_id). Default: false.
sortByNoSort field (default: 'last_seen'). 'duration' sorts by total time spent (aggregated from sessions, requires date range).
sortOrderNoSort direction (default: 'desc')

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, which the description does not contradict. The description adds useful disclosure of return fields (user IDs, session counts, etc.) and behavioral traits like case-insensitive partial match for search, enhancing transparency beyond what annotations 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?

The description is three sentences, front-loaded with the core purpose, and contains no superfluous text. Every sentence earns its place by conveying essential functionality, return data, and filtering/search capabilities with clarity.

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 the tool has 14 parameters (all documented in schema), no output schema, and comprehensive annotations, the description provides sufficient context: it states the return fields, mentions filtering and search, and implies pagination exists (though not detailed). It does not explain time range or sorting, but the schema covers those. Overall, it is adequately complete for a list tool.

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 coverage is 100% with detailed descriptions for all 14 parameters. The description adds contextual information (e.g., 'any analytics dimension' for filters, 'case-insensitive partial match' for search) but largely duplicates schema content. No parameter is left undocumented by the schema, so the description's added value is marginal, yielding a baseline score of 3.

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 users for a site, specifies the returned data (user IDs, session counts, dates, traits), and mentions filtering and search capabilities. The verb 'list' plus resource 'users' is specific and distinguishes it from siblings like 'get_user' (single user) and 'live_users' (real-time).

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 listing users with filtering and search, but does not explicitly state when not to use it or mention alternative tools for different needs (e.g., single user detail via get_user, real-time via live_users). The context is clear but lacks exclusions or direct sibling comparisons.

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

rybbit_live_usersLive User CountA
Read-onlyIdempotent

Get the current number of live/active users on a site in real-time

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, destructiveHint, and idempotentHint true, so the safety profile is clear. The description adds 'real-time' context, which is helpful, but lacks details on behavior like caching, rate limits, or authentication requirements. With strong annotations, the description adds modest value.

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 with no wasted words. It is front-loaded with the core action and resource, making it easy for an AI agent to parse quickly.

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?

For a simple read-only tool with one parameter and strong annotations, the description adequately conveys the purpose and usage context. It could optionally mention the output format (e.g., returns a number), but this is not critical given the simplicity.

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 covers the single parameter siteId with a description, achieving 100% schema coverage. The description does not add further meaning beyond what the schema provides, so baseline score 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 clearly states the verb 'Get', the resource 'current number of live/active users', and the context 'on a site in real-time'. It distinguishes itself from siblings like rybbit_get_metric (historical) and rybbit_list_users (list of users, not live count).

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 real-time active user count, but it does not provide explicit guidance on when to use this tool versus alternatives (e.g., rybbit_get_metric for historical data). No when-not-to-use or alternative references are given.

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

rybbit_site_has_dataSite Has DataA
Read-onlyIdempotent

Check whether a site has received any tracking events yet. Useful for verifying SDK integration before drilling into analytics.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds context about checking for tracking events and SDK verification, aligning perfectly and providing extra value.

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 followed by use case. No superfluous words.

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 tool's simplicity (one parameter, boolean outcome) and rich annotations, the description is complete enough for agent understanding.

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 the description does not add new information about the siteId parameter beyond what the schema provides. Baseline 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 clearly states the verb 'check' and the resource 'site having received tracking events', distinguishing it from sibling tools that perform deeper analytics.

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 mentions it's useful for verifying SDK integration before drilling into analytics, implying when to use it. It could be improved by explicitly stating when not to use it or listing alternatives.

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

rybbit_update_goalUpdate GoalB
Idempotent

Update an existing goal's name, type, or configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
goalIdYesNumeric goal ID to update
nameNo
goalTypeYes
configYesGoal configuration. Use pathPattern for path goals or eventName for event goals.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already indicate non-destructive idempotent update. The description adds no new behavioral traits beyond confirming it modifies the goal, which is minimal value.

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 concise sentence (10 words) effectively summarizes the tool's purpose with zero filler. Every word is earned.

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 tool has 5 parameters with nested config and conditional logic, the description is too sparse. It does not clarify required identifiers (siteId, goalId), the dependency of config on goalType, or what happens after update (no output schema).

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 60%, so the description's mention of updating 'name, type, or configuration' provides some context but duplicates the schema fields. It adds no additional meaning beyond what the schema's parameter descriptions offer.

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 tool updates an existing goal's name, type, or configuration, aligning with the action of update. It distinguishes from sibling creation/deletion tools, though 'type' is slightly imprecise to 'goalType'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like rybbit_create_goal or when not to use it. The description lacks context about prerequisites or conditions.

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

rybbit_update_site_configUpdate Site ConfigA
Idempotent

Update configuration for an existing Rybbit site. Toggle tracking features like IP tracking, session replay, error tracking, button clicks, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (numeric ID or domain identifier)
nameNoDisplay name for the site
domainNoDomain (web sites) or package name (app sites). Normalized server-side.
publicNoMake site stats publicly accessible
saltUserIdsNoSalt user IDs for privacy
blockBotsNoBlock known bots from tracking
excludedIPsNoIP addresses or CIDR ranges to exclude from tracking (max 100)
excludedCountriesNoISO 3166-1 alpha-2 country codes to exclude from tracking (max 250)
tagsNoTags for grouping/filtering sites (max 20, each up to 50 chars)
trackIpNoTrack visitor IP addresses
trackErrorsNoTrack JavaScript errors
trackOutboundNoTrack outbound link clicks
trackUrlParamsNoTrack URL parameters
trackInitialPageViewNoTrack initial page view automatically
trackSpaNavigationNoTrack SPA navigation events
trackButtonClicksNoTrack button click events
trackCopyNoTrack text copy events
trackFormInteractionsNoTrack form interaction events
sessionReplayNoEnable session replay recording
webVitalsNoTrack Core Web Vitals metrics

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate idempotent and non-destructive update behavior. The description adds that it toggles tracking features, but does not disclose merge vs replace semantics, error handling, or prerequisites beyond site existence. It provides minimal additional context beyond annotations.

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

Conciseness4/5

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

Two sentences, front-loaded with purpose and example features. No filler, but could be slightly more precise by noting that non-tracking fields are also updatable. Generally efficient and well-structured.

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 20 parameters and no output schema, the description covers the general purpose and highlights common toggles but omits update semantics (e.g., partial vs full replace) and behavior on missing optional fields. Still functional for basic selection but not fully comprehensive.

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 provides 100% description coverage for all 20 parameters. The description mentions a subset (tracking features) but does not add new meaning or clarify interaction between parameters, such as whether updating one field resets others. At baseline 3 due to full schema coverage.

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 specifies the verb 'update' and the resource 'existing Rybbit site', and lists example features like IP tracking and session replay. It differentiates from sibling tools like create, delete, and get by focusing on updating existing configs.

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 use for updating an existing site's configuration but does not explicitly state when to use this tool over alternatives like rybbit_get_config for reading or rybbit_create_site for new sites. No exclusions or when-not guidance provided.

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

TDQS

A3.8/5.0
Disambiguation5/5

Each tool targets a distinct analytical operation with clear descriptions, preventing confusion. Even closely related tools (e.g., get_overview vs get_metric) have well-documented differences.

Naming Consistency5/5

All tools follow a consistent 'rybbit_verb_noun' pattern, with verbs like get, list, create, delete, update, and analyze. The only minor deviation is rybbit_site_has_data, which still fits the naming style.

Tool Count2/5

With 40 tools, the server exceeds the recommended 25-tool threshold for a well-scoped MCP server. While the domain is broad, many tools could be consolidated (e.g., get_event_names/properties/timeseries into one parameterized tool).

Completeness4/5

The tool set covers the full lifecycle of sites, funnels, goals, sessions, events, users, and performance metrics. Minor gaps exist, such as no tool for bulk data export or organizational management, but core analytics needs are met.

Maintenance

ActivityStale
ResponsivenessSyncing

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
    A
    quality
    B
    maintenance
    Connects Google Analytics 4 data to Claude, Cursor and other MCP clients, enabling natural language queries of website traffic, user behavior, and analytics data with access to 200+ GA4 dimensions and metrics.
    10
    235
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Exposes analytics from Claude Code transcripts as MCP tools, enabling cost, audit, safety, and efficiency queries through natural language.
    4
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Connects MCP clients like Claude Desktop to Google Analytics 4 Data API, enabling natural language queries for reports, top pages, traffic sources, conversions, realtime users, and period comparisons.
    7
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Exposes Rybbit Analytics as MCP tools for querying site traffic, page views, visitor sessions, and live visitor counts through natural language.
    9
    MIT

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/nks-hub/rybbit-mcp'

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