rybbit-mcp
The rybbit-mcp server provides 32 tools to query and manage a Rybbit Analytics instance directly from MCP-compatible AI clients, covering real-time visitors, site management, user behavior, events, errors, performance, funnels, goals, and journeys.
Site Management: List/create/delete/update sites, look up site IDs by domain, update tracking config (IP tracking, session replay, error tracking, bot blocking, excluded IPs/countries, etc.), and verify SDK integration.
Real-Time & Overview: Get live active user counts, aggregated metrics (sessions, pageviews, unique users, bounce rate, session duration), time-series trends with configurable bucket granularity, and geographic session data for map visualization.
Metrics & Dimensions: Break down metrics by browser, OS, country, city, page, UTM parameters, referrer, device type, channel, entry/exit pages, app version, and more. Also supports page title analysis and user retention cohorts.
Sessions: List sessions with filters (IP, identified users, min duration, dimension), get full session details including page views, events, user traits, device info, and event timeline.
Users: List users with search/sort/filters, view detailed profiles (traits, session history, activity summary), query user trait keys/values, find users by trait, get per-user event breakdowns, and per-day session counts.
Events: List raw events, discover custom event names and counts, get property breakdowns for specific events, view event count trends as time series, and track outbound link clicks.
Error Tracking: Get error type summaries, individual error instances with stack traces, and error trends over time.
Performance (Web Vitals): Get Core Web Vitals (LCP, CLS, INP, FCP, TTFB) with p50/p75/p90/p99 percentiles, broken down by page, browser, or OS, with time-series trend support.
Funnels: List saved funnels, analyze ad-hoc funnels with custom steps (conversion rates & drop-off), get sessions that reached or dropped off at specific steps, and create/delete funnels.
Goals: List, create, update, and delete goals (path-based or event-based with property filters); get sessions that completed a specific goal.
User Journeys: Analyze common page navigation sequences across sessions with configurable step depth (2–10 steps).
Filtering & Time Ranges: Filter by 22+ dimensions with 8 comparison types. Use absolute dates (YYYY-MM-DD) or relative time (pastMinutesStart), with IANA timezone support. Built-in pagination for large datasets.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@rybbit-mcpShow me the top pages by bounce rate this week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@nks-hub/rybbit-mcp
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
Installation (npx — recommended)
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-mcpInstallation (from source)
For development or contributing:
git clone https://github.com/nks-hub/rybbit-mcp.git
cd rybbit-mcp
npm install && npm run buildThen 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 ( |
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 |
| Recommended for production |
Email/Password |
| Development/testing |
Both require RYBBIT_URL pointing to your Rybbit instance.
Tools (32)
Configuration & Site Management
Tool | Description |
| Get server version and configuration |
| List all sites and organizations |
| Create a new site (type: |
| Delete a site permanently |
| Look up site ID by domain name |
| Update site tracking config (IP, errors, replay, etc.) |
Real-time & Overview
Tool | Description |
| Current active users count |
| Aggregated metrics (sessions, pageviews, users, bounce rate, duration) |
| Metrics as time-series with configurable buckets |
| Geographic session data with coordinates for map visualization |
Metrics & Dimensions
Tool | Description |
| Breakdown by dimension (browser, OS, country, page, UTM, etc.) |
| User retention cohort analysis |
Sessions
Tool | Description |
| Session list with filtering by IP, identified users, min duration, and pagination |
| Full session detail with events and user traits |
Users
Tool | Description |
| Users with search, sort (first/last seen, pageviews, sessions, duration), and identified-only filter |
| User detail with traits and activity |
| Trait keys, values, or find users by trait |
| Per-user event count breakdown |
Events
Tool | Description |
| Raw event records with filtering |
| Custom event names and counts |
| Property breakdowns per event |
| Event count trends over time with configurable buckets |
| Outbound link clicks with URLs and counts |
Errors
Tool | Description |
| Error types/counts, individual instances, or timeseries for a specific error |
Performance (Web Vitals)
Tool | Description |
| Core Web Vitals (LCP, CLS, INP, FCP, TTFB) with percentiles |
| Web Vitals trends over time |
Funnels & Goals
Tool | Description |
| Saved funnels with step definitions |
| Ad-hoc funnel analysis with custom steps |
| Sessions that reached or dropped off at a funnel step |
| Goals with conversion metrics |
| Sessions that completed a specific goal |
Journeys
Tool | Description |
| User navigation path analysis |
Common Parameters
All analytics tools support these optional parameters:
Parameter | Type | Description |
| string | Site identifier (required) |
| string | Start date |
| string | End date |
| string | IANA timezone (e.g., |
| array | Filter array |
| 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 --noEmitRequirements
Node.js: 18+
Rybbit Analytics: Self-hosted or cloud instance
Contributing
Contributions are welcome! For major changes, please open an issue first.
Fork the repository
Create your feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'feat: description')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
Support
📧 Email: dev@nks-hub.cz
🐛 Bug reports: GitHub Issues
📖 MCP Protocol: modelcontextprotocol.io
License
MIT License — see LICENSE for details.
Links
@nks-hub/rybbit-ts — TypeScript tracking SDK
rybbit-flutter-sdk — Flutter/Dart tracking SDK
Available Tools
40 toolsrybbit_analyze_funnelAnalyze FunnelARead-onlyIdempotent
Analyze a custom funnel by defining steps (page visits or events). Returns visitor counts and drop-off rates at each step.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| startDate | No | Start date (YYYY-MM-DD) | |
| endDate | No | End date (YYYY-MM-DD) | |
| timeZone | No | IANA timezone (default UTC) | |
| filters | No | Filters to apply | |
| pastMinutesStart | No | Minutes ago start | |
| pastMinutesEnd | No | Minutes ago end | |
| steps | Yes | Funnel steps to analyze (minimum 2) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| name | Yes | Funnel display name | |
| steps | Yes | Funnel steps in order (minimum 2) | |
| reportId | No | Optional existing funnel report ID to overwrite (instead of creating a new one) |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| name | No | Optional display name for the goal | |
| goalType | Yes | 'path' = URL pattern, 'event' = custom event | |
| config | Yes | Goal configuration. Use pathPattern for path goals or eventName for event goals. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain of the site (e.g. 'example.com') or package name for apps (e.g. 'com.example.app') | |
| name | No | Display name for the site (defaults to domain) | |
| organizationId | Yes | Organization ID to add the site to. Use rybbit_list_sites to find organization IDs. | |
| type | No | Site type: 'web' for websites (default), 'app' for mobile apps |
TDQS
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.
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.
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.
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.
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.
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 FunnelADestructiveIdempotent
Permanently delete a saved funnel. This action cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| funnelId | Yes | Funnel ID to delete (from rybbit_list_funnels) |
TDQS
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.
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.
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.
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.
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.
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 GoalADestructiveIdempotent
Permanently delete a goal. This action cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| goalId | Yes | Numeric goal ID to delete |
TDQS
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.
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.
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.
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.
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.
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 SiteADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) |
TDQS
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.
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.
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.
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.
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.
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 ConfigARead-onlyIdempotent
Get Rybbit server version and configuration
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 TrackingARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| startDate | No | Start date in ISO format (YYYY-MM-DD) | |
| endDate | No | End date in ISO format (YYYY-MM-DD) | |
| timeZone | No | IANA timezone (e.g., Europe/Prague). Default: UTC | |
| filters | No | Array of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}] | |
| pastMinutesStart | No | Alternative to dates: minutes ago start (e.g., 60 = last hour) | |
| pastMinutesEnd | No | Alternative to dates: minutes ago end (default 0 = now) | |
| page | No | Page number, 1-indexed (default: 1) | |
| limit | No | Results per page (default: 20-50 depending on endpoint, max 200) | |
| type | No | '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 | |
| errorMessage | No | Error message filter (required for type='events' and type='timeseries'). Use type='names' first to discover error messages. | |
| bucket | No | Time bucket for timeseries type (default: day) |
TDQS
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.
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.
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.
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.
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.
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 NamesARead-onlyIdempotent
Get all custom event names and their occurrence counts for a site. Useful for discovering what events are being tracked.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| startDate | No | Start date in ISO format (YYYY-MM-DD) | |
| endDate | No | End date in ISO format (YYYY-MM-DD) | |
| timeZone | No | IANA timezone (e.g., Europe/Prague). Default: UTC | |
| filters | No | Array of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}] | |
| pastMinutesStart | No | Alternative to dates: minutes ago start (e.g., 60 = last hour) | |
| pastMinutesEnd | No | Alternative to dates: minutes ago end (default 0 = now) |
TDQS
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.
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.
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.
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.
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.
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 PropertiesARead-onlyIdempotent
Get property breakdowns for a specific custom event. Returns the distinct property keys and values with counts.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| startDate | No | Start date in ISO format (YYYY-MM-DD) | |
| endDate | No | End date in ISO format (YYYY-MM-DD) | |
| timeZone | No | IANA timezone (e.g., Europe/Prague). Default: UTC | |
| filters | No | Array of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}] | |
| pastMinutesStart | No | Alternative to dates: minutes ago start (e.g., 60 = last hour) | |
| pastMinutesEnd | No | Alternative to dates: minutes ago end (default 0 = now) | |
| eventName | Yes | Event name to get properties for |
TDQS
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.
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.
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.
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.
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.
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 SeriesBRead-onlyIdempotent
Get custom event counts as time-series data with configurable buckets. Useful for analyzing event trends over time.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| startDate | No | Start date in ISO format (YYYY-MM-DD) | |
| endDate | No | End date in ISO format (YYYY-MM-DD) | |
| timeZone | No | IANA timezone (e.g., Europe/Prague). Default: UTC | |
| filters | No | Array of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}] | |
| pastMinutesStart | No | Alternative to dates: minutes ago start (e.g., 60 = last hour) | |
| pastMinutesEnd | No | Alternative to dates: minutes ago end (default 0 = now) | |
| bucket | No | Time bucket granularity (default: day). Use 'hour' for last 24h, 'week'/'month' for long ranges |
TDQS
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.
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.
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.
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.
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.
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 SessionsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| stepNumber | Yes | The funnel step number to get sessions for (1-indexed) | |
| mode | Yes | 'reached' = sessions that made it to this step, 'dropped' = sessions that dropped off at this step | |
| startDate | No | Start date (YYYY-MM-DD) | |
| endDate | No | End date (YYYY-MM-DD) | |
| timeZone | No | IANA timezone (default UTC) | |
| filters | No | Filters to apply | |
| pastMinutesStart | No | Minutes ago start | |
| pastMinutesEnd | No | Minutes ago end | |
| steps | Yes | The funnel steps definition (same as used in rybbit_analyze_funnel) | |
| page | No | Page number, 1-indexed (default: 1) | |
| limit | No | Results per page (default: 20-50 depending on endpoint, max 200) |
TDQS
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.
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.
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.
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.
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.
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 SessionsARead-onlyIdempotent
Get sessions that completed a specific goal. Useful for analyzing which users and sessions triggered goal conversions.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| goalId | Yes | Goal ID to get sessions for. Use rybbit_list_goals to find goal IDs. | |
| startDate | No | Start date (YYYY-MM-DD) | |
| endDate | No | End date (YYYY-MM-DD) | |
| timeZone | No | IANA timezone (default UTC) | |
| filters | No | Filters to apply | |
| pastMinutesStart | No | Minutes ago start | |
| pastMinutesEnd | No | Minutes ago end | |
| page | No | Page number, 1-indexed (default: 1) | |
| limit | No | Results per page (default: 20-50 depending on endpoint, max 200) |
TDQS
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.
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.
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.
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.
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.
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 JourneysARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| startDate | No | Start date (YYYY-MM-DD) | |
| endDate | No | End date (YYYY-MM-DD) | |
| timeZone | No | IANA timezone (default UTC) | |
| filters | No | Filters to apply | |
| pastMinutesStart | No | Minutes ago start | |
| pastMinutesEnd | No | Minutes ago end | |
| steps | No | Number of journey steps to analyze (default 3) | |
| journeyLimit | No | Max number of journey paths to return (default 100) |
TDQS
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.
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.
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.
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.
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.
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 BreakdownARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| startDate | No | Start date in ISO format (YYYY-MM-DD) | |
| endDate | No | End date in ISO format (YYYY-MM-DD) | |
| timeZone | No | IANA timezone (e.g., Europe/Prague). Default: UTC | |
| filters | No | Array of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}] | |
| pastMinutesStart | No | Alternative to dates: minutes ago start (e.g., 60 = last hour) | |
| pastMinutesEnd | No | Alternative to dates: minutes ago end (default 0 = now) | |
| parameter | Yes | Metric dimension to break down by. device_model and app_version apply only to app-type sites tracked via SDK. | |
| page | No | Page number, 1-indexed (default: 1) | |
| limit | No | Results per page (default: 20-50 depending on endpoint, max 200) |
TDQS
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.
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.
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.
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.
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.
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_outbound_linksOutbound LinksARead-onlyIdempotent
Get outbound link clicks tracked on the site. Shows which external URLs users are clicking and how often.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| startDate | No | Start date in ISO format (YYYY-MM-DD) | |
| endDate | No | End date in ISO format (YYYY-MM-DD) | |
| timeZone | No | IANA timezone (e.g., Europe/Prague). Default: UTC | |
| filters | No | Array of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}] | |
| pastMinutesStart | No | Alternative to dates: minutes ago start (e.g., 60 = last hour) | |
| pastMinutesEnd | No | Alternative to dates: minutes ago end (default 0 = now) | |
| page | No | Page number, 1-indexed (default: 1) | |
| limit | No | Results per page (default: 20-50 depending on endpoint, max 200) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description carries a lower burden. It adds that results show URLs and click frequency, which is useful but minimal. No mention of pagination behavior, response structure, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise with two short sentences, no redundancy, and front-loaded key information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, and the description only vaguely mentions showing URLs and frequency. For a tool with 9 parameters and filters, more detail on the expected output format (e.g., list of objects with url and count) would enhance completeness. Annotations provide safety context but not output specifics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 9 parameters have descriptions in the input schema (100% coverage), so the description need not add much. It does not provide additional context or constraints beyond the schema, meeting the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves outbound link click data, specifying 'external URLs' and 'how often.' It distinguishes from sibling tools like rybbit_list_events or rybbit_get_errors by focusing on outbound link clicks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 (e.g., rybbit_list_events for general events). Usage is implied by the tool name and description 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_overviewSite OverviewARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| startDate | No | Start date in ISO format (YYYY-MM-DD) | |
| endDate | No | End date in ISO format (YYYY-MM-DD) | |
| timeZone | No | IANA timezone (e.g., Europe/Prague). Default: UTC | |
| filters | No | Array of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}] | |
| pastMinutesStart | No | Alternative to dates: minutes ago start (e.g., 60 = last hour) | |
| pastMinutesEnd | No | Alternative to dates: minutes ago end (default 0 = now) |
TDQS
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.
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.
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.
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.
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.
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 SeriesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| startDate | No | Start date in ISO format (YYYY-MM-DD) | |
| endDate | No | End date in ISO format (YYYY-MM-DD) | |
| timeZone | No | IANA timezone (e.g., Europe/Prague). Default: UTC | |
| filters | No | Array of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}] | |
| pastMinutesStart | No | Alternative to dates: minutes ago start (e.g., 60 = last hour) | |
| pastMinutesEnd | No | Alternative to dates: minutes ago end (default 0 = now) | |
| bucket | No | Time bucket granularity (default: day). Use 'hour' for last 24h, 'week'/'month' for long ranges |
TDQS
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.
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.
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.
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.
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.
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 TitlesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| startDate | No | Start date in ISO format (YYYY-MM-DD) | |
| endDate | No | End date in ISO format (YYYY-MM-DD) | |
| timeZone | No | IANA timezone (e.g., Europe/Prague). Default: UTC | |
| filters | No | Array of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}] | |
| pastMinutesStart | No | Alternative to dates: minutes ago start (e.g., 60 = last hour) | |
| pastMinutesEnd | No | Alternative to dates: minutes ago end (default 0 = now) |
TDQS
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.
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.
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.
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.
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.
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 VitalsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| startDate | No | Start date in ISO format (YYYY-MM-DD) | |
| endDate | No | End date in ISO format (YYYY-MM-DD) | |
| timeZone | No | IANA timezone (e.g., Europe/Prague). Default: UTC | |
| filters | No | Array of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}] | |
| pastMinutesStart | No | Alternative to dates: minutes ago start (e.g., 60 = last hour) | |
| pastMinutesEnd | No | Alternative to dates: minutes ago end (default 0 = now) | |
| dimension | No | Break down performance by dimension. Default: overview (aggregated) |
TDQS
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.
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.
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.
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.
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.
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 SeriesBRead-onlyIdempotent
Get Core Web Vitals performance metrics as time-series data for trend analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| startDate | No | Start date in ISO format (YYYY-MM-DD) | |
| endDate | No | End date in ISO format (YYYY-MM-DD) | |
| timeZone | No | IANA timezone (e.g., Europe/Prague). Default: UTC | |
| filters | No | Array of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}] | |
| pastMinutesStart | No | Alternative to dates: minutes ago start (e.g., 60 = last hour) | |
| pastMinutesEnd | No | Alternative to dates: minutes ago end (default 0 = now) | |
| bucket | No | Time bucket granularity (default: day). Use 'hour' for last 24h, 'week'/'month' for long ranges |
TDQS
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.
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.
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.
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.
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.
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 RetentionARead-onlyIdempotent
Get user retention cohort analysis showing how many users return over time periods.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| startDate | No | Start date in ISO format (YYYY-MM-DD) | |
| endDate | No | End date in ISO format (YYYY-MM-DD) | |
| timeZone | No | IANA timezone (e.g., Europe/Prague). Default: UTC | |
| filters | No | Array of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}] | |
| pastMinutesStart | No | Alternative to dates: minutes ago start (e.g., 60 = last hour) | |
| pastMinutesEnd | No | Alternative to dates: minutes ago end (default 0 = now) |
TDQS
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.
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.
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.
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.
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.
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 DetailARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| sessionId | Yes | Session ID to retrieve |
TDQS
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.
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.
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.
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.
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.
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 LocationsARead-onlyIdempotent
Get geographic session location data with coordinates. Returns latitude, longitude, city, country, and session count for map visualization and geographic analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| startDate | No | Start date in ISO format (YYYY-MM-DD) | |
| endDate | No | End date in ISO format (YYYY-MM-DD) | |
| timeZone | No | IANA timezone (e.g., Europe/Prague). Default: UTC | |
| filters | No | Array of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}] | |
| pastMinutesStart | No | Alternative to dates: minutes ago start (e.g., 60 = last hour) | |
| pastMinutesEnd | No | Alternative to dates: minutes ago end (default 0 = now) | |
| page | No | Page number, 1-indexed (default: 1) | |
| limit | No | Results per page (default: 20-50 depending on endpoint, max 200) |
TDQS
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.
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.
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.
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.
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.
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 DomainARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to search for (e.g. 'example.com'). Partial match supported. |
TDQS
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.
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.
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.
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.
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.
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 DetailARead-onlyIdempotent
Get detailed information about a specific user including their traits, session history, and activity summary.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| userId | Yes | User ID (identified_user_id or internal user ID) |
TDQS
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.
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.
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.
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.
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.
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 BreakdownARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| startDate | No | Start date in ISO format (YYYY-MM-DD) | |
| endDate | No | End date in ISO format (YYYY-MM-DD) | |
| timeZone | No | IANA timezone (e.g., Europe/Prague). Default: UTC | |
| filters | No | Array of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}] | |
| pastMinutesStart | No | Alternative to dates: minutes ago start (e.g., 60 = last hour) | |
| pastMinutesEnd | No | Alternative to dates: minutes ago end (default 0 = now) | |
| userId | Yes | User ID — either Rybbit device hash (user_id) or app-provided ID (identified_user_id). Both are checked. |
TDQS
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.
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.
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.
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.
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.
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 CountARead-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).
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| userId | Yes | User ID — either identified_user_id or device hash user_id | |
| startDate | No | Start date (YYYY-MM-DD) | |
| endDate | No | End date (YYYY-MM-DD) | |
| timeZone | No | IANA timezone (default UTC) | |
| pastMinutesStart | No | ||
| pastMinutesEnd | No |
TDQS
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.
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.
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.
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.
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.
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 TraitsARead-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).
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| mode | No | '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. | |
| key | No | Trait key (required for 'values' and 'users' modes) | |
| value | No | Trait value (required for 'users' mode) | |
| limit | No | Max results to return |
TDQS
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.
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.
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.
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.
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.
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 EventsARead-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).
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| startDate | No | Start date in ISO format (YYYY-MM-DD) | |
| endDate | No | End date in ISO format (YYYY-MM-DD) | |
| timeZone | No | IANA timezone (e.g., Europe/Prague). Default: UTC | |
| filters | No | Array of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}] | |
| pastMinutesStart | No | Alternative to dates: minutes ago start (e.g., 60 = last hour) | |
| pastMinutesEnd | No | Alternative to dates: minutes ago end (default 0 = now) | |
| page | No | Page number, 1-indexed (default: 1) | |
| limit | No | Results per page (default: 20-50 depending on endpoint, max 200) | |
| eventName | No | Filter 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
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.
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.
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.
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.
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.
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 FunnelsARead-onlyIdempotent
List all saved funnels for a site with their step definitions.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) |
TDQS
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.
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.
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.
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.
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.
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 GoalsARead-onlyIdempotent
List all goals for a site with their current conversion metrics and configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| startDate | No | Start date (YYYY-MM-DD) | |
| endDate | No | End date (YYYY-MM-DD) | |
| timeZone | No | IANA timezone (default UTC) | |
| filters | No | Filters to apply | |
| pastMinutesStart | No | Minutes ago start | |
| pastMinutesEnd | No | Minutes ago end |
TDQS
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.
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.
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.
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.
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.
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 SessionsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| startDate | No | Start date in ISO format (YYYY-MM-DD) | |
| endDate | No | End date in ISO format (YYYY-MM-DD) | |
| timeZone | No | IANA timezone (e.g., Europe/Prague). Default: UTC | |
| filters | No | Array of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}] | |
| pastMinutesStart | No | Alternative to dates: minutes ago start (e.g., 60 = last hour) | |
| pastMinutesEnd | No | Alternative to dates: minutes ago end (default 0 = now) | |
| page | No | Page number, 1-indexed (default: 1) | |
| limit | No | Results per page (default: 20-50 depending on endpoint, max 200) | |
| ip | No | Filter sessions by IP address (exact or partial match, client-side). Requires site to have trackIp enabled. | |
| identifiedOnly | No | Only return sessions from identified users. Default: false. | |
| minDuration | No | Minimum session duration in seconds. |
TDQS
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.
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.
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.
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.
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.
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 SitesARead-onlyIdempotent
List all sites and organizations the authenticated user has access to
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 UsersARead-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).
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| startDate | No | Start date in ISO format (YYYY-MM-DD) | |
| endDate | No | End date in ISO format (YYYY-MM-DD) | |
| timeZone | No | IANA timezone (e.g., Europe/Prague). Default: UTC | |
| filters | No | Array of filters. Example: [{parameter:'browser',type:'equals',value:['Chrome']},{parameter:'country',type:'equals',value:['US','DE']}] | |
| pastMinutesStart | No | Alternative to dates: minutes ago start (e.g., 60 = last hour) | |
| pastMinutesEnd | No | Alternative to dates: minutes ago end (default 0 = now) | |
| page | No | Page number, 1-indexed (default: 1) | |
| limit | No | Results per page (default: 20-50 depending on endpoint, max 200) | |
| search | No | Search users by trait value (e.g. username, email). Uses case-insensitive partial matching (ILIKE). | |
| searchField | No | Which field to search in (default: 'username'). Only used when 'search' is provided. | |
| identifiedOnly | No | Only return identified users (users with identified_user_id). Default: false. | |
| sortBy | No | Sort field (default: 'last_seen'). 'duration' sorts by total time spent (aggregated from sessions, requires date range). | |
| sortOrder | No | Sort direction (default: 'desc') |
TDQS
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.
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.
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.
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.
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.
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 CountARead-onlyIdempotent
Get the current number of live/active users on a site in real-time
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) |
TDQS
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.
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.
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.
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.
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.
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 DataARead-onlyIdempotent
Check whether a site has received any tracking events yet. Useful for verifying SDK integration before drilling into analytics.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) |
TDQS
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.
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.
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.
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.
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.
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 GoalBIdempotent
Update an existing goal's name, type, or configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| goalId | Yes | Numeric goal ID to update | |
| name | No | ||
| goalType | Yes | ||
| config | Yes | Goal configuration. Use pathPattern for path goals or eventName for event goals. |
TDQS
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.
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.
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.
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.
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.
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 ConfigAIdempotent
Update configuration for an existing Rybbit site. Toggle tracking features like IP tracking, session replay, error tracking, button clicks, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | Site ID (numeric ID or domain identifier) | |
| name | No | Display name for the site | |
| domain | No | Domain (web sites) or package name (app sites). Normalized server-side. | |
| public | No | Make site stats publicly accessible | |
| saltUserIds | No | Salt user IDs for privacy | |
| blockBots | No | Block known bots from tracking | |
| excludedIPs | No | IP addresses or CIDR ranges to exclude from tracking (max 100) | |
| excludedCountries | No | ISO 3166-1 alpha-2 country codes to exclude from tracking (max 250) | |
| tags | No | Tags for grouping/filtering sites (max 20, each up to 50 chars) | |
| trackIp | No | Track visitor IP addresses | |
| trackErrors | No | Track JavaScript errors | |
| trackOutbound | No | Track outbound link clicks | |
| trackUrlParams | No | Track URL parameters | |
| trackInitialPageView | No | Track initial page view automatically | |
| trackSpaNavigation | No | Track SPA navigation events | |
| trackButtonClicks | No | Track button click events | |
| trackCopy | No | Track text copy events | |
| trackFormInteractions | No | Track form interaction events | |
| sessionReplay | No | Enable session replay recording | |
| webVitals | No | Track Core Web Vitals metrics |
TDQS
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.
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.
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.
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.
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.
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
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.
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.
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).
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
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
Read-only analytics for Convex apps, queryable via MCP from Claude, Cursor, and other clients.
Query your Betterlytics web analytics from AI agents: traffic, funnels, journeys, errors, uptime.
Real-time web analytics for AI agents: query traffic, funnels, revenue, and manage your sites.
Clamp Analytics MCP server: traffic, revenue, funnels, cohorts, errors, and search, for AI agents.
Related MCP Servers
- AlicenseAqualityBmaintenanceConnects 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.10235MIT
- AlicenseAqualityCmaintenanceExposes analytics from Claude Code transcripts as MCP tools, enabling cost, audit, safety, and efficiency queries through natural language.4MIT
- AlicenseAqualityBmaintenanceConnects 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.7MIT
- AlicenseAqualityCmaintenanceExposes Rybbit Analytics as MCP tools for querying site traffic, page views, visitor sessions, and live visitor counts through natural language.9MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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