← Back to all apps

Pendo

by Pendo
Launched Aug 13, 2026 on ChatGPT

Source of truth for live, account-specific Pendo product analytics data. This tool must be used for any questions about actual Pendo usage, metrics, user behavior, or engagement. The model should not infer or estimate Pendo data without calling this tool. Provides access to Pendo analytics including:

Usage analytics (page views, feature clicks, time spent) User and account data with custom metadata Product Engagement Score (adoption, stickiness, growth) Guide reach, completion, and effectiveness Segmentation by predefined user and account segments Discovery of pages, features, guides, and track events Session replay lookup and filtering Queries require a subscription ID and often an application ID. Use list_all_applications to discover available subscriptions and apps

82ChatGPT Tools
11Claude Tools
PendoDeveloper

Use Cases

productivitydata

Available Tools

accountMetadataSchema

accountMetadataSchema
Full Description

Return the set of metadata fields available for accounts. Each key is a dot-separated metadata field name. Each value includes the field's Type and a Historical flag indicating whether the field supports historical (event-time) filtering.

For string fields with at least one value, the response also includes cardinality info to help build correct metadataFilter values instead of guessing:

  • "cardinality" is the total number of distinct values the field takes.
  • If cardinality is below 50, "values" contains every distinct value the field takes.
  • Otherwise, "sample" contains up to 10 example values.
  • The cardinality fields is omitted for fields with high cardinality (more than 500 distinct values).

Example return value:

{ "account.custom.ARR" : {"type": "float", "historical": false}, "account.salesforce.arr__c" : {"type": "float", "historical": true}, "account.salesforce.industry" : {"type": "string", "historical": true, "cardinality": 4, "values": ["finance", "healthcare", "retail", "technology"]} }

A field where historical is true can be decomposed into (kind, group, field) - for "account.salesforce.arr__c", that is kind="account", group="salesforce", field="arr__c".

Parameters (1 required, 1 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
userQuerystring

The original user query or question that triggered this tool call.

Account Query

accountQuery
Full Description

Retrieve account data and metadata OR just the counts of matching accounts by running aggregation queries directly against the account dataset. Every response entity will conceptually be an account of that subscription.

USE THIS TOOL FOR: Getting account information, metadata, and account counts with flexible filtering options.

PERFECT FOR QUERIES LIKE:

  • "Get all accounts with their custom metadata fields"
  • "Show me accounts from a specific segment"
  • "How many accounts match certain criteria?" (set count=true)
  • "Get account metadata like ARR, company size, or custom properties"

WHAT THIS TOOL RETURNS:

  • Account data with selected metadata fields (without select passed in, no metadata fields are returned)
  • Account counts when count=true is specified
  • Results filtered by segments, specific account IDs, or other criteria

FILTERING OPTIONS:

  • Filter by specific account ID
  • Filter by account segments
  • Filter by metadata value for a specific metadata group and field
  • Select specific metadata fields to include

This tool executes aggregation queries directly and returns results immediately. For available metadata fields, use the accountMetadataSchema tool. Example usage of metadata fileds is select=["metadata.agent.is_paying","metadata.auto.lastvisit"].

PERFORMANCE: This is a fast-running tool.

Parameters (1 required, 6 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
accountIdstring

only return data about the specified accountId

countboolean

When true, returns ONLY a single aggregate count number — no entity names or ranked rows. Use for "how many" questions. When false (default), returns individual rows with metrics. REQUIRED for any ranking, listing, or "top N" query. If the query asks for a list or ranking, count MUST be false.

metadataFilterstring

The form of this field is 'metadata.metadataGroup.metadataField == metadataValue'. 'metadata' is a const and should be included exactly as shown. The metadataGroup is often 'agent', 'auto', 'custom', or 'salesforce' but may be anything. metadataField may be any string. metadataValue may be anything but if it is a string, surround it in quotes. The == (equals) operator may be replaced with the following operators: != (not equals), < (less than), > (greater than), <= (less than or equal to), or >= (greater than or equal to). Multiple conditions may be combined with && (AND) or || (OR). When filtering dates, use the date format `date("YYYY-MM-DD")`.

segmentIdstring

filter the results by the specified segment id. If not provided, no segment filtering is applied.

selectarray

list of fields to read in addition to the accountId. only exact field names may be used, and should come from the accountMetadataSchema tool

userQuerystring

The original user query or question that triggered this tool call.

acquisitionTrend

acquisitionTrend
Full Description

Count new visitors or accounts per period - users whose first-ever interaction with the app (scope='app'), a specific page or feature (scope='page' or 'feature'), or a track event (scope='trackEvent') falls within the analysis window. 'New' means firstTime within the window; this measures acquisition, not retention. The window is the most recent periodCount periods of size periodType (e.g. the last 6 months). Cohorts are returned oldest to newest.

USE FOR: Growth and acquisition questions - e.g. 'how many new accounts did we gain last month?', 'what's our new visitor trend?'.

EXAMPLES:

  • How many new accounts did we gain last month?
  • What's our new visitor trend over the last 6 months?
  • How many new users signed up this quarter?
  • Show me account acquisition for this feature over the last 8 weeks

RETURNS:

  • scope, entityId, unit, periodType: echoed query parameters
  • acquisition: list of {cohortLabel, newCount} per period, sorted oldest to newest
  • summary: {totalNew, peakCohort, peakCount}
Parameters (2 required, 8 optional)
Required
appIdstring

Application ID to scope the request.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
entityIdstring

Pendo entity id. Required when scope is 'page', 'feature', or 'trackEvent'; ignored for 'app'.

includeAnonymousboolean

Whether to include anonymous visitors. Defaults to false.

Default: False
periodCountnumber

Number of periods in the analysis window. Defaults to 6. The window may not exceed ~1 year: max 366 for 'day', 52 for 'week', 12 for 'month'.

Default: 6
periodTypestring

Period granularity. Defaults to 'month'.

Options:dayweekmonth
scopestring

'app' for app-level acquisition, or 'page', 'feature', or 'trackEvent' for entity-level. Defaults to 'app'.

Options:apppagefeaturetrackEvent
segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

unitstring

Count individual visitors or accounts. Defaults to 'visitor'.

Options:visitoraccount
userQuerystring

The original user query or question that triggered this tool call.

Activity Query

activityQuery
Full Description

Query aggregated activity metrics (events, minutes, unique visitors, unique accounts) for pages, features, track types, accounts, or visitors within a date range.

Use this tool to answer questions about usage patterns, engagement metrics, and activity counts. Supports filtering by account, visitor, segment, or specific item IDs, and grouping results by various dimensions.

RANKING PATTERN: For "top N" or "most active" queries, use count=false + group by the entity to rank + sort + limit. count=true returns ONLY a single aggregate number with no entity rows.

PRODUCT AREA: Pass productAreaId to scope the query to one product area (not with itemIds). For page, feature, and trackType entities, results are limited to items in that area; for visitor and account, to entities with any activity attributed to that area, including guides.

USE FOR: Getting activity metrics from various sources with several filtering options.

EXAMPLES:

  • Top 3 features by visitors → entityType='feature', count=false, group=['featureId'], sort=['-uniqueVisitorCount'], limit=3, dateRange={range:'relative', lastNDays:30}
  • Top 5 pages by traffic → entityType='page', count=false, group=['pageId'], sort=['-uniqueVisitorCount'], limit=5, dateRange={range:'relative', lastNDays:30}
  • Most active visitors → entityType='visitor', count=false, group=['visitorId'], sort=['-numEvents'], limit=10, dateRange={range:'relative', lastNDays:30}
  • Get account activity metrics for the account ID XYZ → dateRange={range:'relative', lastNDays:30}
  • What are the most active pages in the last 30 days? → entityType='page', count=false, group=['pageId'], sort=['-numEvents'], limit=10, dateRange={range:'relative', lastNDays:30}
  • How many visitors used feature ABC in the last 7 days? → entityType='feature', itemIds=['featureId'], group=['visitorId'], count=true, dateRange={range:'relative', lastNDays:7}
  • How many accounts are active? → entityType='account', group=['accountId'], count=true, dateRange={range:'relative', lastNDays:30}
  • Show activity for the top 5 track types → entityType='trackType', count=false, group=['trackTypeId'], sort=['-numEvents'], limit=5, dateRange={range:'relative', lastNDays:30}
  • How many views did page X get in the last 30 days? → entityType='page', itemIds=['pageId'], count=true, dateRange={range:'relative', lastNDays:30}
  • Count total events for feature X in the last week → entityType='feature', itemIds=['featureId'], count=true, dateRange={range:'relative', lastNDays:7}
  • Return only the total number of matching entities for a query → set count=true
  • Query specific date range → dateRange={range:'custom', startDate:'2024-01-01', endDate:'2024-01-31'}
  • Get page activity for January 2024 → entityType='page', dateRange={range:'custom', startDate:'2024-01-01', endDate:'2024-01-31'}
  • Which visitors used feature X in Q1 2024? → entityType='feature', itemIds=['featureId'], group=['visitorId'], dateRange={range:'custom', startDate:'2024-01-01', endDate:'2024-03-31'}
  • Which features have the most rage clicks → frustrationMetrics=true, entityType='feature', count=false, group=['featureId'], sort=['-rageClickCount'], limit=10, dateRange={range:'relative', lastNDays:30}
  • What is the count of unique events for account → entityType='account', dateRange={range:'relative', lastNDays:30}
  • Which visitors were active on the most days? → entityType='visitor', group=['visitorId'], sort=['-daysActive'], limit=5, dateRange={range:'relative', lastNDays:30}
  • Top pages in a product area → entityType='page', productAreaId='<id>', group=['pageId'], sort=['-numEvents'], limit=10, dateRange={range:'relative', lastNDays:30}
  • How many visitors used a product area? → entityType='visitor', productAreaId='<id>', count=true, dateRange={range:'relative', lastNDays:30} (includes guide engagement; see guide_product_area.go for guide event subtype tuning)
  • How many accounts used a product area? → entityType='account', productAreaId='<id>', count=true, dateRange={range:'relative', lastNDays:30} (includes guide engagement; see guide_product_area.go for guide event subtype tuning)
  • Filter activity by a feature flag → featureFlag={name:'myFlag', value:true}. Use value:false to filter to events where the flag is not set to true.

NOT FOR: guides and polls; use guideMetrics instead. Finding unused or zero-activity entities within a product area; use productAreaMemberActivity instead.

RETURNS:

  • Raw JSON array [{requestId, rows: [...], time, url}]
  • When count=true: Returns only aggregate count values (count and meta.totalCount), not ranked entity rows. Use count=false for lists/rankings.
  • Aggregated activity metrics for events, minutes spent, visitors, accounts, avgMinutesPerVisitor, avgDaysActivePerVisitor, and (if frustrationMetrics set) some 'frustration' metrics.
  • Results can be grouped by a provided field.
  • Results can be sorted by a provided field.
  • By default, results are limited at 1000.

FILTERING OPTIONS:

  • Filter by account ID
  • Filter by visitor ID
  • Filter by item IDs (i.e. page, feature, track type)
  • Filter by product area ID (mutually exclusive with item IDs)
  • Filter by visitor metadata (current values via visitorMetadataFilter)
  • Filter by historical metadata (event-time visitor/account/parentAccount values via historicalMetadataFilter)

SORT OPTIONS:

  • Any SELECT/GROUP field (accountId, day, featureId, itemId, month, pageId, trackTypeId, visitorId, week)
  • numEvents - total event count
  • numMinutes - total minutes spent
  • uniqueAccountCount - count of unique accounts
  • uniqueVisitorCount - count of unique visitors
  • daysActive - count of unique days active
  • avgMinutesPerVisitor - average minutes per visitor
  • avgDaysActivePerVisitor - average days active per visitor
  • if frustrationMetrics param is set, any frustration metric: errorClickCount, rageClickCount, uTurnCount, deadClickCount

The maximum time range for this tool is 367 days.

PERFORMANCE: This is a fast-running tool.

Parameters (4 required, 15 optional)
Required
appIdstring

Application id of the app to query

dateRangeobject

The time period to query. Use 'relative' with lastNDays or 'custom' with explicit dates.

entityTypestring

The entity type to query

Options:pagefeatureguidetrackTypevisitoraccountpoll
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
accountIdstring

Filter results to a specific account. REQUIRED when the user mentions or references a specific account. Use the exact account ID string

countboolean

When true, returns ONLY a single aggregate count number — no entity names or ranked rows. Use for "how many" questions. When false (default), returns individual rows with metrics. REQUIRED for any ranking, listing, or "top N" query. If the query asks for a list or ranking, count MUST be false.

featureFlagobject

Filter events by a subscription feature flag (defined by a segment's FlagName). When value is true (the default) results include only events where the flag is set to true. When value is false, results include only events where the flag is not set to true.

frustrationMetricsboolean

Toggles return of frustration metrics: error click/rage click/u-turn/dead click count

Default: False
grouparray

Groups results by the specified dimension. The group field determines what each row represents. - group=["featureId"] -> one row per feature (for top features / feature usage) - group=["pageId"] -> one row per page (for top pages / page traffic) - group=["visitorId"] -> one row per visitor (for top visitors / visitor activity) - group=["accountId"] -> one row per account (for top accounts / account comparison) Rule: group by the entity you want to rank or list. Do not group by visitorId when asking for top features.

Default: []
historicalMetadataFilterobject

Filter by historical (event-time) metadata — values captured when the event was recorded, not current values. Supports visitor, account, and parentAccount metadata kinds. Example: {kind:'visitor', group:'agent', field:'email', op:'==', value:'"user@example.com"'} returns events where visitor email was user@example.com at event time. Not all fields have historical tracking — only fields explicitly configured for historical metadata capture. Use the visitorMetadataSchema or accountMetadataSchema tools to discover valid group and field names (the group is the second segment of the metadata key, e.g. 'agent' from 'metadata.agent.email'). Can be used together with visitorMetadataFilter (they are independent filters).

itemIdsarray

The item ids to query

Default: []
limitnumber

Maximum number of rows to return. Range: 1-1000. Default: 1000.

Default: 1000
periodstring

Time period format: 'dayRange'/'weekRange' for single totals across entire period (e.g., 'total views: 1000'), 'daily'/'weekly' for time series showing trends (e.g., 'Jan 1: 100, Jan 2: 150, Jan 3: 200'). Use dayRange/weekRange for summary metrics, use daily/weekly for trend analysis.

Options:dayRangeweekRangedailyweekly
Default: dayRange
productAreaIdstring

The ID of a product area. Filters results to only include activity within this product area. Works with any entity type: for pages/features/trackTypes it filters directly; for visitors/accounts it automatically queries page activity within the product area. Mutually exclusive with itemIds.

segmentIdstring

filter the results by the specified segment id. If not provided, no segment filtering is applied.

sortarray

The fields to sort by. Prepending the field with a + (ascending) or - (descending) determines the sort direction.

Default: []
userQuerystring

The original user query or question that triggered this tool call.

visitorIdstring

Filter results to a specific visitor. REQUIRED when the user mentions or references a specific visitor. Use the exact visitor ID string

visitorMetadataFilterstring

Filter activity results by visitor metadata using syntax like 'metadata.auto.firstvisit >= 1234567890'. Mutually exclusive with segmentId.

Agent Analytics Key Metrics

agent_analytics_key_metrics
Full Description

Returns key aggregate metrics for AI agent conversations with period-over-period comparison. Includes: conversations, visitors, accounts, prompts, rage prompt rates (per-prompt and per-conversation), visitorIds, accountIds, and visitor retention. All metrics include previous-period equivalents for trend analysis.

USE FOR: Getting a high-level summary of AI agent usage and engagement. Use when the user asks about overall agent performance, conversation volume, visitor engagement, rage prompt rates, or retention for a specific agent.

EXAMPLES:

  • How many conversations has my ABC agent had in the last 30 days?
  • What is the rage prompt rate for Acme agent this month?
  • Show me key metrics and trends for my chat agent over the past 2 weeks.
  • How many unique visitors have used my chat agent recently?

NOT FOR: Use list_use_cases for topic/cluster analysis. Use list_ai_agent_issues for issue detection. Use list_ai_agents to get agent IDs and names first when the user has not specified an agent.

RETURNS:

  • Current period: numConversations, numPrompts, numVisitors, numAccounts, numRagePrompts, ragePromptsRate, ragePromptsConversationRate, retention (retentionRate, retained, visitors), visitorIds, and accountIds.
  • Previous period (same duration, immediately prior): prevNumConversations, prevNumPrompts, prevNumVisitors, prevNumAccounts, prevNumRagePrompts, prevRagePromptsRate, prevRagePromptsConversationRate, prevRetention.
  • Also includes conversationsWithRagePrompts and prevConversationsWithRagePrompts.

The maximum time range for this tool is 90 days.

PERFORMANCE: This is a slow-running tool.

Parameters (4 required, 2 optional)
Required
agentIdstring

Required. The AI agent ID to get metrics for (from list_ai_agents).

endDatestring

Query end date in YYYY-MM-DD format (e.g., '2025-01-31'). Inclusive.

startDatestring

Query start date in YYYY-MM-DD format (e.g., '2025-01-01'). Inclusive.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
appIdstring

Application ID of the app to query (defaults to -323232 if not specified)

Default: -323232
userQuerystring

The original user query or question that triggered this tool call.

agentAnalyticsConversationAnalysis

agentAnalyticsConversationAnalysis
Full Description

Lists and ranks individual AI agent conversations with per-conversation metrics. Returns one row per conversation with: conversationId, visitorId, accountId, startTime, numRagePrompts, numErrors, and firstPromptContent. Supports filtering to a specific set of conversations and sorting by rage prompt count, error count, or date.

USE FOR: Drilling down from aggregate metrics to individual conversation-level investigation - surfacing which specific conversations are driving a metric such as a high rage-prompt rate. When conversationIds are provided, the list is narrowed to a specific cluster (e.g. conversations associated with a detected issue or a use case).

EXAMPLES:

  • Show me the conversations with the most rage prompts for my chat agent
  • Which conversations had the most errors this week?
  • List the most recent conversations for agent X
  • Show me these specific conversations: [id1, id2, id3]

NOT FOR: Aggregate volume metrics for an agent. Diagnosing an issue cluster (explanations, tools invoked, response patterns). Discovering or clustering use cases.

RETURNS:

  • [conversations]: one row per conversation with conversationId, visitorId, accountId, startTime, numRagePrompts, numErrors, firstPromptContent.

The maximum time range for this tool is 90 days.

Parameters (4 required, 5 optional)
Required
agentIdstring

The AI agent ID. Used to scope the lookup to the correct agent.

appIdstring

Application ID to scope the request.

dateRangeobject

Time window. For a rolling window use type='relative' with lastNDays. For a fixed calendar range use type='absolute' with startDate and endDate in YYYY-MM-DD.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
conversationIdsarray

Optional list of conversation IDs to filter to. When provided, only these conversations are returned - use to scope to a specific cluster of related conversations.

limitnumber

Maximum number of conversations to return. Range: 1-500. Default: 50.

Default: 50
segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

sortBystring

Field to sort conversations by (descending). ragePromptCount: most rage prompts first. errorCount: most errors first. first: most recent conversations first (by conversation start time).

Options:ragePromptCounterrorCountfirst
Default: ragePromptCount
userQuerystring

The original user query or question that triggered this tool call.

agentAnalyticsIssueAnalysis

agentAnalyticsIssueAnalysis
Full Description

Requires startDate and endDate (YYYY-MM-DD); there is no default range. Returns issue diagnoses, flagged response tool/model usage, and user prompt content for the events of a specific detected issue cluster in AI Agent Analytics. Executes a single aggregation with two parallel spawn branches: (1) agenticConversationEvents filtered by conversationIds - deduplicated visitorIds/accountIds and sampled explanations; (2) agenticEvents - tools/models from flagged response eventIds, and prompt content from issue conversationIds.

USE FOR: Diagnosing a specific detected issue cluster when agentId, conversationIds, and eventIds are already known. Use when the user wants to understand why conversations were flagged, see patterns in user prompts that triggered the issue, or identify which tools and models were involved in the flagged responses.

EXAMPLES:

  • What patterns exist among instances of the 'incorrect answers' issue?
  • Which tools were called in instances of the 'timeout error' issue?
  • Show me what users said in conversations flagged as the 'authentication failure' issue
  • Why does the 'formatting problem' issue keep occurring in my agent?

NOT FOR: Discovering or listing issue clusters (this tool diagnoses a cluster whose conversationIds and eventIds are already provided). Aggregate volume metrics for an agent. Topic analysis or use-case clustering of conversations (this tool is scoped to a single detected issue, not to open-ended topic modeling).

RETURNS:

  • Four labeled CSV sections:
    • [issue_instances]: visitorIds, accountIds - one summary row with deduplicated lists.
    • [explanations]: explanation - one row per sampled issue explanation (capped for MCP size).
    • [flagged_response_events]: issueToolsUsed, issueModelsUsed - one summary row with deduplicated lists.
    • [user_prompts]: content - one row per sampled user prompt message (capped for MCP size).

The maximum time range for this tool is 90 days.

Parameters (7 required, 2 optional)
Required
agentIdstring

The AI agent ID. Used to scope the lookup to the correct agent.

appIdstring

Application ID to scope the request.

conversationIdsarray

List of conversation IDs belonging to the issue cluster to diagnose.

endDatestring

Query end date in YYYY-MM-DD format (e.g., '2025-01-31'). Inclusive.

eventIdsarray

List of event IDs belonging to the issue cluster to diagnose - the agent response event IDs flagged as instances of this issue.

startDatestring

Query start date in YYYY-MM-DD format (e.g., '2025-01-01'). Inclusive.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

userQuerystring

The original user query or question that triggered this tool call.

agentAnalyticsKeyMetrics

agentAnalyticsKeyMetrics
Full Description

Returns key aggregate metrics for AI agent conversations with period-over-period comparison. Includes: conversations, visitors, accounts, prompts, rage prompt rates (per-prompt and per-conversation), visitorIds, accountIds, and visitor retention. All metrics include previous-period equivalents for trend analysis.

USE FOR: Getting a high-level summary of AI agent usage and engagement. Use when the user asks about overall agent performance, conversation volume, visitor engagement, rage prompt rates, or retention for a specific agent.

EXAMPLES:

  • How many conversations has my ABC agent had in the last 30 days?
  • What is the rage prompt rate for Acme agent this month?
  • Show me key metrics and trends for my chat agent over the past 2 weeks.
  • How many unique visitors have used my chat agent recently?

NOT FOR: Use listUseCases for topic/cluster analysis. Use listAiAgentIssues for issue detection. Use listAiAgents to get agent IDs and names first when the user has not specified an agent.

RETURNS:

  • Current period: numConversations, numPrompts, numVisitors, numAccounts, numRagePrompts, ragePromptsRate, ragePromptsConversationRate, retention (retentionRate, retained, visitors), visitorIds, and accountIds.
  • Previous period (same duration, immediately prior): prevNumConversations, prevNumPrompts, prevNumVisitors, prevNumAccounts, prevNumRagePrompts, prevRagePromptsRate, prevRagePromptsConversationRate, prevRetention.
  • Also includes conversationsWithRagePrompts and prevConversationsWithRagePrompts.

The maximum time range for this tool is 90 days.

Parameters (4 required, 3 optional)
Required
agentIdstring

Required. The AI agent ID to get metrics for (from listAiAgents).

endDatestring

Query end date in YYYY-MM-DD format (e.g., '2025-01-31'). Inclusive.

startDatestring

Query start date in YYYY-MM-DD format (e.g., '2025-01-01'). Inclusive.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
appIdstring

Optional application ID to filter by. If omitted, includes all applications the user can access.

segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

userQuerystring

The original user query or question that triggered this tool call.

agentAnalyticsTrackedIssueAnalysis

agentAnalyticsTrackedIssueAnalysis
Full Description

Deep-dives into a single tracked issue in AI Agent Analytics for a specific AI agent, surfacing the visitors and accounts, sampled issue explanations from detected issue clusters, the tools and models the agent invoked, and a sample of the user prompts associated with the tracked issue.

USE FOR: Deep-diving into a specific tracked issue - call directly if agentId is known and conversationIds, eventIds, and trackedIssueId are passed. Use when the user wants to understand what prompts users sent for a tracked problem, which tools and models the agent invoked, or which visitors and accounts are associated with a tracked issue.

EXAMPLES:

  • What are users actually saying when they hit the 'incorrect answer' tracked issue?
  • Which tools does my agent use when the 'timeout error' tracked issue occurs?
  • Who are the visitors affected by this tracked issue?
  • Show me sample prompts from this tracked issue.

NOT FOR: Aggregate volume metrics, or diagnosing detected (auto-clustered) issues rather than a specific tracked issue.

RETURNS:

  • Four labeled CSV sections:
    • [tracked_issue_summary]: visitorIds, accountIds - one summary row with deduplicated lists.
    • [explanations]: explanation - one row per sampled issue explanation from detected issue clusters (capped for MCP size).
    • [tools_used]: toolsUsed, modelsUsed - one summary row with deduplicated lists.
    • [prompt_samples]: content - one row per sampled user prompt message (capped for MCP size).

The maximum time range for this tool is 90 days.

Parameters (8 required, 2 optional)
Required
agentIdstring

The AI agent ID. Used to scope the lookup to the correct agent.

appIdstring

Application ID to scope the request.

conversationIdsarray

List of conversation IDs for the tracked issue.

dateRangeobject

Time window. For a rolling window use type='relative' with lastNDays. For a fixed calendar range use type='absolute' with startDate and endDate in YYYY-MM-DD.

eventIdsarray

List of event IDs for the tracked issue (prompt-type events).

namestring

The tracked issue name.

subIdstring

Subscription ID that owns the data. Required for all queries.

trackedIssueIdstring

The tracked issue ID to analyze.

Optional
segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

userQuerystring

The original user query or question that triggered this tool call.

agentAnalyticsTrackedUseCaseAnalysis

agentAnalyticsTrackedUseCaseAnalysis
Full Description

Deep-dives into a single tracked use case in AI Agent Analytics for a specific AI agent, surfacing the visitors and accounts, the tools and models the agent invoked, sampled explanations, and a sample of the user prompts associated with the tracked use case.

USE FOR: Deep-diving into a specific tracked use case - call directly if agentId is known and conversationIds, eventIds, and trackedUseCaseId are passed. Use when the user wants to understand what prompts users sent for a tracked topic, which tools and models the agent invoked, or which visitors and accounts are associated with a tracked use case.

EXAMPLES:

  • What are users actually asking in the 'dashboard help' tracked use case?
  • Which tools does my agent use when handling this tracked use case?
  • Who are the visitors in this tracked use case?
  • Show me sample prompts from this tracked use case.

NOT FOR: Aggregate volume metrics across use cases, or issue diagnosis - this tool deep-dives a single tracked use case.

RETURNS:

  • Four labeled CSV sections:
    • [tracked_use_case_summary]: visitorIds, accountIds - one summary row with deduplicated lists.
    • [explanations]: explanation - one row per sampled explanation (capped for MCP size).
    • [tools_used]: toolsUsed, modelsUsed - one summary row with deduplicated lists.
    • [prompt_samples]: content - one row per sampled user prompt message (capped for MCP size).

The maximum time range for this tool is 90 days.

Parameters (7 required, 2 optional)
Required
agentIdstring

The AI agent ID. Used to scope the lookup to the correct agent.

appIdstring

Application ID to scope the request.

conversationIdsarray

List of conversation IDs for the tracked use case.

dateRangeobject

Time window. For a rolling window use type='relative' with lastNDays. For a fixed calendar range use type='absolute' with startDate and endDate in YYYY-MM-DD.

eventIdsarray

List of event IDs for the tracked use case (prompt-type events).

subIdstring

Subscription ID that owns the data. Required for all queries.

trackedUseCaseIdstring

The tracked use case ID to filter subrows.

Optional
segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

userQuerystring

The original user query or question that triggered this tool call.

aggregateEntityUsage

aggregateEntityUsage
Full Description

Rank pages, features, or track events by aggregate usage over a date range, or measure a named set of them as one population. Entities are identified by ID, never by name. Returns {meta, summary, rows}; which part answers the question depends on which of the two was asked. WHOLE TYPE - omit items and name the entityType. Ranks every entity of that type, shaped by sortBy, sortOrder and limit. By default only entities WITH activity are ranked, so sortOrder='asc' gives the least-used among the USED ones; add includeUnused=true when the question is about entities getting no use at all. Two cautions: a named entity missing from the rows may simply have fallen outside limit, so to ask whether one specific entity was used, scope to it with items instead; and the summary here covers every entity of the type, not only the rows returned, so it is not a total for the top N. A NAMED SET - pass items to scope to exactly the entities listed, which may span entity types in ONE call; that is the only way to measure a set crossing them. Read the SUMMARY for the set as a whole: it treats the set as one deduplicated population and is independent of limit, so limit=1 still summarises everything in scope, while the rows give the breakdown within it. An entity with no activity is absent from the rows rather than ranked last, but the rows are still capped by limit - so take absence to mean 'no activity' only when limit is at least as large as the list, or set includeUnused=true (single-type lists only) to get an explicit all-zero row for every entity in the scope. Add minEvents to count only the visitors whose events across the set reach a threshold - 'how many people used this bundle at least N times'. Supply exactly one of entityType or items; both together is rejected. NEVER add rows together for a set-wide figure, and use the summary instead. Counts of distinct things - uniqueVisitors, uniqueAccounts, and their current_/prior_ forms in comparison mode - count a visitor active on several entities ONCE in the summary but once per row, so summing them silently inflates the answer and the rows do not carry the overlap needed to correct it. Only the additive totals - totalEvents and the frustration counts - match the sum of the rows; avgTimePerVisitor is an average and does not. Where entityUsage returns per-visitor rows for one known entity, this returns one row per entity showing how an entire cohort, optionally scoped by a segment, uses each of them. COMPARISON MODE - supply compareToDateRange to rank by how usage CHANGED between two periods rather than by level: dateRange is the current period, compareToDateRange the earlier baseline. Sort by a change_ column (ascending = biggest drop-off, descending = biggest growth). The ranking happens in the aggregation, so no per-entity cross-referencing is needed. includeUnused is ignored when comparing.

USE FOR: Ranking or comparing entities by usage (top pages by views, most-clicked features, features associated with a page, least-used track events), or measuring a named bundle of them - including one spanning entity types - as one population.

EXAMPLES:

  • Top 5 features by clicks last month
  • Which page had the most views in the last 30 days?
  • Which features have the most rage clicks this quarter?
  • Which features associated with page X were clicked most in the last 30 days?
  • Least-used track events over the last week
  • Which pages got no views at all in the last 30 days?
  • Which features were never used by visitors in segment X last month?
  • Which pages in product area X have zero activity from visitors in segment Y?
  • Which pages dropped off in usage the most this month versus last month?
  • Which features grew the most in the last 30 days compared to the prior 30 days?
  • How many people used any of these three features last month?
  • How many visitors used our premium tier - these 4 features, this page and these 2 track events - at least twice last month?
  • How many visitors used these three features at least twice in the last 30 days?
  • How did usage of this bundle of pages change this quarter versus last?

NOT FOR: Resolving an entity name to an ID. Single-entity questions where per-visitor rows are wanted, such as 'which people viewed Page X and how long did each spend'. Deriving stickiness (DAU/MAU, DAU/WAU, WAU/MAU) for a product area by calling this tool at multiple date-range granularities and dividing uniqueVisitors/uniqueAccounts across them - that does not match how the Product Areas page computes stickiness. There is no canonical product-area-scoped stickiness metric yet; say so instead of approximating one.

WORKFLOW: For usage analytics about one named page, feature, or track event, call listCountables to resolve the name to an entity ID, then use entityUsage with that ID. Use aggregateEntityUsage only when the user asks to rank or compare multiple entities, or to analyse a named group of them together via items. When the user names several entities as a set ('the three features in our premium tier'), resolve each name to an ID and pass them all as items in ONE call - do not make a call per entity and add the results up, which double-counts every visitor active on more than one of them. This holds when the set crosses entity types: group the ids by type into one items list rather than issuing a call per type.

RETURNS:

  • meta.dateRange: resolved startDate and endDate (YYYY-MM-DD); meta.compareToDateRange when comparing
  • summary: the whole scoped set as one deduplicated population - totalEvents, uniqueVisitors, uniqueAccounts (pages/features also: totalErrorClickCount, totalRageClickCount, totalDeadClickCount; pages also: totalUTurnCount, avgTimePerVisitor). Independent of limit, and not the sum of the rows. In comparison mode it carries the same current_/prior_/change_/pctChange_ columns the rows do. When items spans entity types the summary carries the three shared metrics only, and its uniqueVisitors counts a visitor once across the whole bundle even when they were active on entities of different kinds
  • rows: one per entity with entityId, entityName, appId, totalEvents (page views / feature clicks / track-event counts - report it with the word matching the entity type rather than the generic 'events', including the current_/prior_/change_ forms when comparing), uniqueVisitors, uniqueAccounts (pages/features also: totalErrorClickCount, totalRageClickCount, totalDeadClickCount; pages also: totalUTurnCount, avgTimePerVisitor). Track events carry none of the frustration or time metrics, so none of those columns can rank them. With includeUnused=true, unused entities appear with all-zero metrics. In comparison mode the headline metrics (totalEvents, uniqueVisitors, uniqueAccounts) are split into current_<m>, prior_<m>, change_<m> and pctChange_<m>, while the other metrics (frustration counts, avgTimePerVisitor) carry change_<m> only. Prefer change_ for mover/drop-off rankings (pctChange is noisy on small baselines and null when prior is 0). When items spans entity types each row adds entityType ('page', 'feature' or 'trackEvent') and carries the three shared metrics only - read totalEvents as views, clicks or event counts according to that row's entityType, and do not compare it across rows of different types as if it were one unit
Parameters (2 required, 14 optional)
Required
dateRangeobject

Time window. For a rolling window use type='relative' with lastNDays. For a fixed calendar range use type='absolute' with startDate and endDate in YYYY-MM-DD.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
appIdstring

Optional application ID to filter by. If omitted, includes all applications the user can access.

compareToDateRangeobject

Optional baseline period for a period-over-period comparison. When supplied, dateRange is treated as the current/recent period and this as the earlier baseline; results are ranked by how each entity's usage changed (change = current - prior). Same shape as dateRange. A relative baseline (type='relative', lastNDays) is the N days IMMEDIATELY BEFORE dateRange - not the last N days from today - so type='relative' lastNDays=30 on both ranges means 'last 30 days vs the prior 30 days'. Use absolute dates for a fixed baseline such as the same month last year. Omit for a single-period ranking.

entityTypestring

The kind of entity: 'page', 'feature', or 'trackEvent'. Required for an unscoped ranking, where there are no ids to carry the type. Ignored when items is supplied, because each items entry names its own type.

Options:pagefeaturetrackEvent
includeAnonymousboolean

Whether to include unidentified visitors in the aggregates. Defaults to true.

Default: True
includeUnusedboolean

When true, additionally include entities with zero usage in the window. Use to find entirely unused entities - e.g. 'which pages got no views'. When a segmentPipeline is supplied, the segment scopes the usage measured, so a zero row means 'unused by that segment' regardless of other visitors. Defaults to false (only entities with activity). Ignored in comparison mode (compareToDateRange already returns every entity active in either period, including drop-offs to zero and arrivals from zero). With a single-type items list it zero-fills the entities in that scope, which is the reliable way to ask which of a named set had no use at all - absence from ordinary rows can also mean the entity fell outside limit. Rejected with minEvents, and rejected when items spans more than one entityType.

Default: False
itemsarray

Optional list of entities to restrict the ranking to, grouped by type: [{"entityType":"feature","ids":["A","B"]},{"entityType":"page","ids":["C"]}]. Use this to analyse a named bundle of entities together - for example the features and pages that make up a pricing tier - and pass the WHOLE bundle in ONE call. Rows stay one per entity, so the breakdown within the bundle is preserved, while the summary deduplicates a visitor active on several of them. A bundle can span types: that is the reason to carry the type alongside the ids rather than passing a flat id list. Give each entityType at most once, with a non-empty ids list, and at most 50 ids in total across all entries. Mutually exclusive with productAreaId, which is the right argument for a group already configured in Pendo. An ID that does not resolve is rejected rather than silently contributing zero.

limitnumber

Maximum number of entity rows to return (1-200, default 10).

Default: 10
minEventsnumber

Only count visitors whose own event total across the entities in scope reaches this number. The total is summed over the WHOLE scoped set, not per entity: with two ids in items a visitor with 1 event on A and 1 on B has a total of 2 and qualifies at minEvents=2, even though they clear it on neither entity alone. It is summed across entity types too when the bundle spans them, so one page VIEW plus one feature CLICK likewise totals 2 - that is what 'used this tier at least twice' asks for, but it is adding events of different kinds together, so say so when reporting a mixed-type threshold. The summary counts each qualifying visitor once; the rows then show how those visitors' events break down per entity. This counts events, not visits - several events can happen within one visit, so it does not measure returning or repeat visitors. It is always a threshold on visitors, never on accounts. Omit to count every active visitor. Not supported with includeUnused.

pageIdstring

Optional page ID. Restricts the ranking to features associated with this page, so the scope has to be features only: valid with entityType='feature', or with an items list whose only entry is a feature entry. Rejected when items spans more than one entityType.

productAreaIdstring

Optional product area ID. Ranks only the entities belonging to that saved product area. Mutually exclusive with items: a product area is the right argument when the group already exists in Pendo, items when it does not.

segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

sortBystring

Field to sort results by. All entity types support 'totalEvents' (page views / feature clicks / track-event counts), 'uniqueVisitors', 'uniqueAccounts'. When items spans entity types only those three (or their comparison-mode prefixed forms) are accepted, since the rest are not reported for every type. Pages and features also support 'totalErrorClickCount', 'totalRageClickCount', 'totalDeadClickCount'. Pages also support 'totalUTurnCount' and 'avgTimePerVisitor'. Defaults to 'totalEvents'. In comparison mode (compareToDateRange supplied) sort by a prefixed column instead. The headline metrics (totalEvents, uniqueVisitors, uniqueAccounts) accept 'current_<field>', 'prior_<field>', 'change_<field>', or 'pctChange_<field>' (e.g. 'change_totalEvents', 'current_uniqueVisitors'); the other metrics (frustration counts, avgTimePerVisitor) accept 'change_<field>' only (e.g. 'change_totalRageClickCount'). Combine with sortOrder='asc' for biggest drop-offs or 'desc' for biggest gains. PREFER 'change_<field>' (absolute change) for 'biggest mover / drop-off / gainer' questions: it is self-normalising. Use 'pctChange_<field>' only when the user explicitly asks about percentage/rate of change, and be aware it is noisy on low-traffic entities (a 1->5 page reads as +400%) and is null when the prior period had zero activity (new entities). Default to 'change_totalEvents' when comparing.

sortOrderstring

'desc' (default, highest first - top/most used) or 'asc' (lowest first - least used).

Options:ascdesc
Default: desc
userQuerystring

The original user query or question that triggered this tool call.

aggregateGuideMetrics

aggregateGuideMetrics
Full Description

Rank guides by aggregate usage over a date range, returning one row per guide. Where guideMetrics analyses a single known guide in depth, this tool compares an entire cohort's usage across every guide. Each row has entityId, entityName, appId, totalViews, totalCompletions, totalDismissals, uniqueVisitors, uniqueAccounts, and viewsPerUser. totalViews excludes continue-resumed guideSeen events to match the guide-details UI. Deleted guides surface with entityName "(Deleted Guide)".

USE FOR: Cross-guide ranking - e.g. top guides by views, which guides have the most dismissals, least-used guides.

EXAMPLES:

  • Top 10 guides by views last month
  • Which guides have the most dismissals?
  • Show me the least-completed guides over the last 30 days
  • Rank guides by unique visitors this quarter
  • Top public tooltips by views
  • Compare views for these three guides

RETURNS:

  • meta.dateRange: resolved startDate and endDate (YYYY-MM-DD)
  • meta.totalGuideCount: total distinct guides with activity before limit
  • rows: one per guide with entityId, entityName, appId, totalViews, totalCompletions, totalDismissals, uniqueVisitors, uniqueAccounts, viewsPerUser

FILTERING OPTIONS:

  • guideIds: restrict the ranking to specific guide IDs
  • status: guide state - public, staged, scheduled, draft, pendingReview, inactive
  • guideType: guide type - banner, tooltip, lightbox, walkthrough, whatsnew, building-block, group, training, launcher, mobile-lightbox
  • activation: launch method - auto (automatic), api, badge, dom (element click), embed, launcher (resource center), page, feature, form, track
  • productAreaIds / guideCategoryIds: guides belonging to those product areas or guide categories
  • pageIds: guides whose first step is on one of those pages ("sitewide" matches guides with no page)
  • appId, accountId, segmentPipeline: scope the underlying guide activity
  • Note: any filter other than guideIds resolves guides from their current metadata, so deleted guides drop out of the results.
Parameters (2 required, 15 optional)
Required
dateRangeobject

Time window. For a rolling window use type='relative' with lastNDays. For a fixed calendar range use type='absolute' with startDate and endDate in YYYY-MM-DD.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
accountIdstring

Optional Pendo account ID. When provided, results are restricted to activity from that account. Omit to include all accounts.

activationstring

Optional launch-method filter: 'auto' (shown automatically), 'api' (triggered programmatically), 'badge' (badge icon), 'dom' (element click), 'embed' (embedded inline), 'launcher' (guide or resource center), 'page' (page view, mobile), 'feature' (element click, mobile), 'form' (form interaction), or 'track' (track event). Guides can have several dash-separated launch methods; this matches if the guide's launch method contains the value. Omit to include all activation methods.

Options:autoapibadgedomembedlauncherpagefeatureformtrack
appIdstring

Optional application ID to filter by. If omitted, includes all applications the user can access.

guideCategoryIdsarray

Optional list of guide category group IDs to filter by. When provided, only guides in one of these categories are ranked. Omit to include guides from all categories.

guideIdsarray

Optional list of specific guide IDs to rank (e.g., ["abc123","def456"]). Omit to rank every guide with activity.

guideTypestring

Optional guide type filter, derived from the guide's attributes: 'banner', 'tooltip', 'lightbox', 'walkthrough' (multi-step), 'whatsnew' (what's-new announcement), 'building-block', 'group' (guide group), 'training', 'launcher' (resource center), or 'mobile-lightbox' (mobile-only lightbox). Omit to include all types.

Options:bannertooltiplightboxwalkthroughwhatsnewbuilding-blockgrouptraininglaunchermobile-lightbox
includeAnonymousboolean

Whether to include unidentified visitors in the aggregates. Defaults to true.

Default: True
limitnumber

Maximum number of guide rows to return (1-200, default 10).

Default: 10
pageIdsarray

Optional list of page IDs to filter by. When provided, only guides whose first step is on one of these pages are ranked. Use "sitewide" to match guides with no page association. Omit to include all guides regardless of page.

productAreaIdsarray

Optional product area IDs for the request.

segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

sortBystring

Field to sort results by: 'totalViews' (default), 'totalCompletions', 'totalDismissals', 'uniqueVisitors', 'uniqueAccounts', or 'viewsPerUser'.

Options:totalViewstotalCompletionstotalDismissalsuniqueVisitorsuniqueAccountsviewsPerUser
Default: totalViews
sortOrderstring

'desc' (default, highest first - top/most used) or 'asc' (lowest first - least used).

Options:ascdesc
Default: desc
statusstring

Optional guide state filter: 'public' (live), 'staged' (testing), 'scheduled' (public with a start date still in the future), 'draft' (in progress), 'pendingReview' (awaiting review), or 'inactive' (turned off, stored as 'disabled'). As in the UI, 'public' excludes scheduled guides. Omit to include all states.

Options:publicstagedscheduleddraftpendingReviewinactive
userQuerystring

The original user query or question that triggered this tool call.

Ai Agent Issue Analysis

ai_agent_issue_analysis
Full Description

Requires startDate and endDate (YYYY-MM-DD); there is no default range. Returns issue diagnoses, flagged response tool/model usage, and user prompt content for the events of a specific detected issue cluster in AI Agent Analytics. Executes a single aggregation with two parallel spawn branches: (1) agenticConversationEvents filtered by conversationIds — deduplicated visitorIds/accountIds and sampled explanations; (2) agenticEvents — tools/models from flagged response eventIds, and prompt content from issue conversationIds.

USE FOR: Diagnosing a specific detected issue cluster — call directly if agentId is known and conversationIds and eventIds are passed; Otherwise, call after list_ai_agents is called to get available AI agents and after list_ai_agent_issues is called to get issues clusters to find match and retrieve conversationIds/eventIds. Use when the user wants to understand why conversations were flagged, see patterns in user prompts that triggered the issue, or identify which tools and models were involved in the flagged responses.

EXAMPLES:

  • What patterns exist among instances of the 'incorrect answers' issue?
  • Which tools were called in instances of the 'timeout error' issue?
  • Show me what users said in conversations flagged as the 'authentication failure' issue
  • Why does the 'formatting problem' issue keep occurring in my agent?

NOT FOR: Use list_ai_agent_issues to discover issue clusters and get conversation/event IDs first (not when conversationIds and eventIds are already known). Use agent_analytics_key_metrics for aggregate volume metrics. Use list_use_cases for topic analysis of conversations (not issue diagnosis).

RETURNS:

  • Four labeled CSV sections:
    • [issue_instances]: visitorIds, accountIds — one summary row with deduplicated lists.
    • [explanations]: explanation — one row per sampled issue explanation (capped for MCP size).
    • [flagged_response_events]: issueToolsUsed, issueModelsUsed — one summary row with deduplicated lists.
    • [user_prompts]: content — one row per sampled user prompt message (capped for MCP size).

The maximum time range for this tool is 90 days.

PERFORMANCE: This is a slow-running tool.

Parameters (7 required, 1 optional)
Required
agentIdstring

The AI agent ID (from list_ai_agents). Used to scope the lookup to the correct agent.

appIdstring

Application id of the app to query

conversationIdsarray

List of conversation IDs for the issue cluster (from the list_ai_agent_issues response).

endDatestring

Query end date in YYYY-MM-DD format (e.g., '2025-01-31'). Inclusive.

eventIdsarray

List of event IDs for the issue cluster (from the list_ai_agent_issues response). These are the agent response event IDs flagged as instances of this issue.

startDatestring

Query start date in YYYY-MM-DD format (e.g., '2025-01-01'). Inclusive.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
userQuerystring

The original user query or question that triggered this tool call.

appUsage

appUsage
Full Description

Get per-visitor or per-account app usage metrics for a date range. Returns {summary, rows}: summary has total active visitors/accounts, total events across the selected app scope, average daily time on apps, and totals for the four frustration counts (totalErrorClickCount, totalRageClickCount, totalUTurnCount, totalDeadClickCount); rows are per-visitor or per-account breakdowns with daysActive, totalTime and avgTimePerDay (duration objects {seconds, display}), totalEvents, and the same four frustration totals, sorted and limited. When groupBy="account" each row also includes numVisitors - the count of distinct visitors from that account who were active during the window. Optionally include metadata fields for each returned visitor or account with select. Audience can be scoped via an inline segmentPipeline; scope can also be narrowed to a single app via appId, or to a single product area via productAreaId. When productAreaId is supplied the same summary and rows describe headline usage metrics for that product area, measured over its page, feature, and track-event activity.

USE FOR: Per-visitor or per-account app-level usage (events, time, days active) AND top-N ranking over a window across every app, or one app when appId is supplied, or one product area when productAreaId is supplied (headline usage metrics for that area).

EXAMPLES:

  • Who uses our apps the most in the last 30 days?
  • Top 50 accounts by app usage last quarter
  • Which visitors rage-click the most across our apps last week?
  • Top 20 visitors by total time in app X last month
  • Headline usage metrics for product area X over the last 30 days
  • Top 20 accounts by usage of product area X last quarter
  • Show the top 20 accounts by app usage last quarter with their ARR and company size

RETURNS:

  • meta.dateRange: resolved startDate and endDate (YYYY-MM-DD)
  • summary: totalNumVisitors or totalNumAccounts, totalNumEvents, avgDailyActiveTime (duration object {seconds, display}), totalErrorClickCount, totalRageClickCount, totalUTurnCount, totalDeadClickCount
  • rows: daysActive, totalTime, totalEvents, avgTimePerDay, totalErrorClickCount, totalRageClickCount, totalUTurnCount, totalDeadClickCount per visitor or account; per-account rows also include numVisitors; select adds requested metadata fields
Parameters (2 required, 10 optional)
Required
dateRangeobject

Time window. For a rolling window use type='relative' with lastNDays. For a fixed calendar range use type='absolute' with startDate and endDate in YYYY-MM-DD.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
appIdstring

Optional application ID to filter by. If omitted, includes all applications the user can access.

groupBystring

'visitor' (default) groups rows by visitorId; 'account' groups by accountId and excludes events with empty accountId.

Options:visitoraccount
Default: visitor
includeAnonymousboolean

Whether to include unidentified visitors in the summary and rows. Defaults to true.

Default: True
limitnumber

Maximum number of rows to return (1-200, default 10). Summary is independent of limit; set limit=1 if you only need totals.

Default: 10
productAreaIdstring

Optional product area ID for the request.

segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

selectarray

Optional metadata fields to return in addition to usage metrics and the group-by ID. For groupBy='visitor', use exact fields from visitorMetadataSchema (for example, "visitor.custom.role"; "metadata.custom.role" also works). For groupBy='account', use exact fields from accountMetadataSchema (for example, "account.custom.ARR"; "metadata.custom.ARR" also works). If omitted, no metadata fields are returned.

sortBystring

Field to sort rows by. 'daysActive', 'totalTime', 'totalEvents', 'avgTimePerDay', 'totalErrorClickCount', 'totalRageClickCount', 'totalUTurnCount', 'totalDeadClickCount' are valid for both groupBy values; 'numVisitors' is valid only when groupBy='account'.

Default: totalTime
sortOrderstring

'desc' (default, highest first) or 'asc'.

Options:ascdesc
Default: desc
userQuerystring

The original user query or question that triggered this tool call.

appUsageTimeSeries

appUsageTimeSeries
Full Description

Get app-level usage metrics over time. Groups events into buckets of the requested period (daily/weekly/monthly) and returns one row per bucket with app-wide totals: active visitors, active accounts, events, average active time (a duration object {seconds, display}), and the four frustration counts (totalErrorClickCount, totalRageClickCount, totalUTurnCount, totalDeadClickCount). The average metric matches the requested period: avgDailyActiveTime, avgWeeklyActiveTime, or avgMonthlyActiveTime. Audience can be scoped via an inline segmentPipeline; scope can also be narrowed to a single app via appId. minEvents restricts every bucket to the visitors with at least that many events in that bucket, applied independently per bucket, so one call tracks an engagement threshold across the whole range. It counts events rather than visits, so it is not a returning-visitor measure.

USE FOR: Trend questions about whole-app usage over a window - e.g. 'how did active visitors trend over the last 12 weeks?', 'are rage clicks across our apps trending up?'. With minEvents, tracks a per-bucket event threshold over time - e.g. 'visitors with at least 2 events per month'.

EXAMPLES:

  • How did active visitors trend over the last 12 weeks?
  • Total events per week across all apps over the last quarter
  • Are rage clicks across our apps trending up over the last 30 days?
  • How many visitors had at least 2 events in each of the last twelve months?

RETURNS:

  • meta.dateRange: resolved startDate and endDate (YYYY-MM-DD)
  • meta.period: echoed bucket size (daily|weekly|monthly)
  • meta.metrics: list of metric names returned per bucket
  • rows: one entry per time period, containing a 'bucket' string (YYYY-MM-DD or YYYY-MM), a startTime (epoch ms), and metric values; numeric metrics zero-fill for empty buckets
Parameters (3 required, 6 optional)
Required
dateRangeobject

Time window. For a rolling window use type='relative' with lastNDays. For a fixed calendar range use type='absolute' with startDate and endDate in YYYY-MM-DD.

periodstring

Bucket granularity. 'daily' for windows up to ~30 days, 'weekly' for longer ranges, 'monthly' for multi-quarter ranges.

Options:dailyweeklymonthly
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
accountIdstring

Optional Pendo account id to filter the query to. Combines with segmentPipeline.

appIdstring

Optional application ID to filter by. If omitted, includes all applications the user can access.

includeAnonymousboolean

Whether to include unidentified visitors in the metrics. Defaults to true.

Default: True
minEventsnumber

Only count visitors whose own event total within a bucket reaches this number, applied independently per bucket - so minEvents=2 with period='monthly' counts, for each month, the visitors with at least 2 events that month. This counts events, not visits - several events can happen within one visit, so it does not measure returning or repeat visitors; use cohortRetentionCurve for that. It is always a threshold on visitors, never on accounts: an account is counted in a bucket when it holds at least one qualifying visitor, and the bucket's metrics cover only those visitors' events. Omit to count every active visitor.

segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

userQuerystring

The original user query or question that triggered this tool call.

buildPendoSegment

buildPendoSegment
Full Description

buildPendoSegment: Purpose: Describe one visitor segment by visitor or account ID, activity on Pages, Features, TrackEvents, Guides, Poll responses, the elements inside a guide, segment membership, or metadata. Input shape: pass definition as an array of rule groups. Top-level groups are ANDed together; rules within a group are ORed together. For one ANDed rule, wrap it in a single-item group.

SINGLE CALL CONTRACT (important): The ENTIRE segment, including every AND clause and every OR clause, MUST be built with ONE call to this tool. Never split a segment across multiple calls. Combine all clauses into a single definition array and pass it once. Calling the tool more than once produces multiple unrelated segments, NOT one combined segment, so the AND/OR logic between the calls is lost.

Mapping a request to a single definition:

  • Split the request into top-level AND clauses.
  • Each AND clause becomes one group (one inner array) in the definition.
  • Inside a clause, every OR alternative becomes one rule object in that group.
  • A clause with no OR is a group containing a single rule object.

CLAUSE COVERAGE (important): Account for EVERY clause in the request. Before returning, count the AND clauses in the request and confirm the definition has exactly that many top-level groups, then confirm every OR alternative inside each clause is present as a rule object. Never drop, merge, or skip a clause. If the request mentions a page rule, a feature rule, and a track event rule joined by AND/OR, all of them must appear. A request like "(X OR Y) AND Z" has 2 top-level groups (one for "X OR Y", one for "Z") and 3 rule objects total; returning fewer groups or rules is wrong.

Full example (combining AND and OR in one call): Request: "(visitors who spent > 15 minutes on page A in May OR have NOT seen page B in the last year) AND triggered track event C on fewer than 5 days in the last 7 days" Correct single definition (one tool call): [ [ { "entityType": "page", "entityId": "A", "metric": "eventTime", "operator": ">", "threshold": 15, "condition": "between", "first": "2026-05-01", "last": "2026-05-31" }, { "entityType": "page", "entityId": "B", "metric": "notseen", "condition": "withinLast", "lookbackAmount": 12, "granularity": "months" } ], [ { "entityType": "trackEvent", "entityId": "C", "metric": "daysActive", "operator": "<", "threshold": 5, "condition": "withinLast", "lookbackAmount": 7, "granularity": "days" } ] ] The first group (the two page rules) is ORed together; that group is then ANDed with the second group (the track event rule). This is ONE call, not two.

REQUIRED FIELDS AND CONDITION CHOICE (important): Activity metrics with non-empty supportedConditions MUST include an explicit "condition" field. It is the discriminator that selects which time/frequency fields apply, and it is NOT optional for those metrics. Always choose condition from the chosen metric's supportedConditions. Do NOT rely on the presence of first/last, lookbackAmount/granularity, or date to imply the condition; you must still set condition explicitly for activity metrics. For example:

  • first + last present => you MUST also set condition: "between"
  • lookbackAmount + granularity => you MUST also set condition: "withinLast"
  • date present => you MUST also set condition: "since"

Segment membership metrics are the exception:

  • isMemberOfSegment and isNotMemberOfSegment have supportedConditions: [] by design.
  • For these metrics, omit "condition" entirely. Do NOT add "ever" or infer any default condition.
  • supportedConditions: [] means "no condition field", not "choose a default condition".

Visitor and account ID rules are conditionless and metricless:

  • Use entityType: "visitor" or "account".
  • Use operator: one of "==", "!=", "contains", "!contains", "empty", "!empty". Omit it to default to "==".
  • Use entityId for the comparison value with "==", "!=", "contains", and "!contains".
  • Use an empty entityId with "empty" and "!empty".
  • Example: { "entityType": "visitor", "entityId": "bob@example.com" }.
  • Example: { "entityType": "visitor", "entityId": "@example.com", "operator": "contains" }.
  • Example: { "entityType": "account", "entityId": "acme-corp" }.

Metadata rules are also conditionless and metricless:

  • Use entityType: "metadata".
  • Use entityId for the full metadata key, e.g. "visitor.agent.job_role".
  • Use operator: one of "==", "!=", ">=", "<=", "contains", "!contains", "empty", "!empty".
  • Use value for "==", "!=", ">=", "<=", "contains", and "!contains". Omit value for "empty" and "!empty".
  • Time and date metadata values may use ISO 8601, e.g. "2025-12-31T23:59:59Z".
  • Example: { "entityType": "metadata", "entityId": "visitor.agent.job_role", "operator": "==", "value": "Software engineer" }.

Event-property filters narrow page, feature, or track-event aggregation rules by a property on each event:

  • Add one eventProperty object with property, operator, and (except for empty/!empty) value.
  • For a custom event property, use its plain property name. Custom properties are supported on feature and trackEvent rules.
  • For historical metadata captured on an event, use kind.group.field, e.g. "visitor.agent.user_job_role".

Historical metadata is supported on page, feature, and trackEvent rules.

  • Event properties require an aggregation metric such as eventCount or daysActive; they cannot be added to seen/used counter metrics.
  • Use listCountables eventPropertyNames to discover custom properties. Historical metadata must currently be promoted.
  • Example: visitors who ran a report with the "source" filter in the last 30 days:

[ [ { "entityType": "trackEvent", "entityId": "<reportRanTrackEventId>", "metric": "eventCount", "operator": ">=", "threshold": 1, "condition": "withinLast", "lookbackAmount": 30, "granularity": "days", "eventProperty": { "property": "filter", "operator": "==", "value": "source" } } ] ]

Guide element rules cover clicks on one button, link or close icon inside a guide:

  • Use entityType: "guideElement".
  • Use entityId for the GUIDE id, stepId for the step the element sits on, and elementId for the

element's uiElementId, e.g. { "entityType": "guideElement", "entityId": "<guideId>", "stepId": "<guideStepId>", "elementId": "pendo-button-a1b2c3d4", "metric": "eventCount", "operator": ">=", "threshold": 1, "condition": "withinLast", "lookbackAmount": 30, "granularity": "days" }.

  • One getEntity call gives both ids: steps[].stepId and the

steps[].elements[].uiElementId nested under it. Never guess either.

  • eventCount is the only supported metric, and it counts clicks on that element in the chosen window:
    • "clicked it" => operator ">=", threshold 1
    • "did not click it" => operator "==", threshold 0
    • click counts => any operator, e.g. "clicked it more than 3 times" is operator ">", threshold 3
    • stepId does not narrow the count.
    • Only withinLast and between are available, so a click rule is always scoped to a window.

Poll response rules select visitors by a numeric poll response:

  • Use entityType: "poll", entityId for the guide id, and pollId for its poll.
  • Resolve pollId from getEntity's guide steps[].polls[] output; select the poll whose type is the poll type.

Never guess a pollId.

  • Use metric: "response", a numeric operator and threshold, plus a supported condition.
  • Conditions ever, since (with date), withinLast, and between are supported. A response range requires two separate top-level AND groups, not one OR group. For example, responses from 7 through 10 in the last 30 days:

[ [{ "entityType": "poll", "entityId": "<surveyGuideId>", "pollId": "<pollId>", "metric": "response", "operator": ">=", "threshold": 7, "condition": "withinLast", "lookbackAmount": 30, "granularity": "days" }], [{ "entityType": "poll", "entityId": "<surveyGuideId>", "pollId": "<pollId>", "metric": "response", "operator": "<=", "threshold": 10, "condition": "withinLast", "lookbackAmount": 30, "granularity": "days" }] ]

Resolution steps 1. Choose entityType from EntityTypes. 2. For visitor or account, use entityId + optional operator and stop here. 3. For metadata, use entityId + operator + optional value and stop here. 4. For activity and segment entities, choose metric from EntityTypes[entityType].supportedMetrics. 5. Look up Metrics[metric]. 6. If Metrics[metric].supportedConditions is non-empty, choose condition from that list and look up Conditions[condition]. 7. The final rule fields are: EntityTypes[entityType].requiredFields + Metrics[metric].requiredFields + Conditions[condition].requiredFields, only when a condition is required.

Time phrase resolution examples:

  • "this year" / "so far this year" / "year to date" => condition: "since", date: "2026-01-01"
  • "this month" / "month to date" => condition: "since", date: "2026-06-01"
  • "since 2026-01-01" => condition: "since", date: "2026-01-01"
  • "last year" => condition: "between", first: "2025-01-01", last: "2025-12-31"
  • "in the last year" => condition: "withinLast", lookbackAmount: 12, granularity: "months"
  • "between 2026-01-01 and 2026-06-05" => condition: "between", first: "2026-01-01", last: "2026-06-05"
  • "in March" => condition: "between", first: "2026-03-01", last: "2026-03-31"
  • "last 3 weeks" => condition: "withinLast", lookbackAmount: 3, granularity: "weeks"
  • "last 7 days" => condition: "withinLast", lookbackAmount: 7, granularity: "days"

CONDITION CHOICE FOR TIME PHRASES (important):

  • Use "since" (set only date) for any open-ended period running from a start date up to now:

"this year", "this month", "year to date", "so far", "since <date>". Do NOT express these as "between ... today".

  • Use "between" (set first + last) ONLY for a closed range whose end is a specific past date or the last

day of a named calendar period (e.g. "in March", "last year", "between X and Y").

  • Use "withinLast" (set lookbackAmount + granularity) for rolling windows: "last N days/weeks/months".
  • Set ONLY the fields the chosen condition requires. Never combine date with first/last in one rule.

A segment should be just as valid in a week's time as it is today, so never hardcode today's date as an endpoint. For a fixed/named calendar period (e.g. "in March") use "between" spanning the entire period even if it has not finished yet. For an open-ended current period (e.g. "this year", "this month") use "since" with the period's start date, which stays valid going forward. EntityTypes: visitor: requiredFields: entityType: "visitor" entityId: String supportedMetrics: []

account: requiredFields: entityType: "account" entityId: String supportedMetrics: []

page: requiredFields: entityType: "page" entityId: String supportedMetrics: ["eventCount", "deadClicks", "errorClicks", "rageClicks", "daysActive", "uTurns", "eventTime", "seen", "notseen", "lastSeen"]

feature: requiredFields: entityType: "feature" entityId: String supportedMetrics: ["eventCount", "deadClicks", "errorClicks", "rageClicks", "daysActive", "used", "notused", "lastused"]

trackEvent: requiredFields: entityType: "trackEvent" entityId: String supportedMetrics: ["eventCount", "daysActive", "used", "notused", "lastused"]

guide: requiredFields: entityType: "guide" entityId: String supportedMetrics: ["seen", "lastSeen", "notSeen"]

poll: requiredFields: entityType: "poll" entityId: String pollId: String // the poll nested under the guide supportedMetrics: ["response"]

guideElement: requiredFields: entityType: "guideElement" entityId: String stepId: String // the guide step the element sits on elementId: String // the element's uiElementId, e.g. "pendo-button-a1b2c3d4" supportedMetrics: ["eventCount"]

segment: requiredFields: entityType: "segment" entityId: String supportedMetrics: ["isMemberOfSegment", "isNotMemberOfSegment"]

metadata: requiredFields: entityType: "metadata" entityId: String supportedMetrics: []

agent: requiredFields: entityType: "agent" entityId: String supportedMetrics: ["eventCount", "daysActive", "used", "notused", "lastused"]

Metrics: eventCount: description: Number of events for the selected entity. requiredFields: metric: "eventCount" operator: Enum["==", "!=", ">=", "<="] threshold: Integer supportedConditions: ["withinLast", "between"]

deadClicks: description: Number of dead clicks for the selected page or feature. requiredFields: metric: "deadClicks" operator: Enum["==", "!=", ">=", "<="] threshold: Integer supportedConditions: ["withinLast", "between"]

errorClicks: description: Number of error clicks for the selected page or feature. requiredFields: metric: "errorClicks" operator: Enum["==", "!=", ">=", "<="] threshold: Integer supportedConditions: ["withinLast", "between"]

rageClicks: description: Number of rage clicks for the selected page or feature. requiredFields: metric: "rageClicks" operator: Enum["==", "!=", ">=", "<="] threshold: Integer supportedConditions: ["withinLast", "between"]

daysActive: description: Number of active days for the selected entity. requiredFields: metric: "daysActive" operator: Enum["==", "!=", ">=", "<="] threshold: Integer supportedConditions: ["withinLast", "between"]

uTurns: description: Number of u-turns for the selected page. requiredFields: metric: "uTurns" operator: Enum["==", "!=", ">=", "<="] threshold: Integer supportedConditions: ["withinLast", "between"]

eventTime: description: Time in minutes spent on the selected page. requiredFields: metric: "eventTime" operator: Enum["==", "!=", ">=", "<="] threshold: Integer supportedConditions: ["withinLast", "between"]

response: description: Numeric poll response. Use two ANDed rules for a range. requiredFields: metric: "response" operator: Enum["==", "!=", ">=", "<="] threshold: Integer supportedConditions: ["ever", "since", "withinLast", "between"]

used: description: Whether the selected feature or track event was used, optionally with a frequency threshold. requiredFields: metric: "used" supportedConditions: ["ever", "since", "withinLast", "atLeast", "atMost"]

notused: description: Whether the selected feature or track event was not used. requiredFields: metric: "notused" supportedConditions: ["ever", "since", "withinLast"]

lastused: description: When the selected feature or track event was last used. requiredFields: metric: "lastused" supportedConditions: ["since", "withinLast", "between"]

seen: description: Whether the selected page was seen, optionally with a frequency threshold. For checking withinLast requiredFields: metric: "seen" supportedConditions: ["ever", "since", "withinLast", "atLeast", "atMost"]

notseen: description: Whether the selected page was not seen. requiredFields: metric: "notseen" supportedConditions: ["ever", "since", "withinLast"]

lastSeen: description: When the selected page was last seen. requiredFields: metric: "lastSeen" supportedConditions: ["since", "withinLast", "between"]

isMemberOfSegment: description: Whether the visitor is a member of the selected segment. requiredFields: metric: "isMemberOfSegment" supportedConditions: []

isNotMemberOfSegment: description: Whether the visitor is not a member of the selected segment. requiredFields: metric: "isNotMemberOfSegment" supportedConditions: []

Conditions: ever: description: The metric happened at any time. requiredFields: condition: "ever"

since: description: The metric happened on or after a specific date. requiredFields: condition: "since" date: DateString("yyyy-mm-dd")

withinLast: description: The metric happened within a rolling time window. requiredFields: condition: "withinLast" lookbackAmount: Integer granularity: Enum["days", "weeks", "months"]

between: description: The metric happened within an inclusive date range. requiredFields: condition: "between" first: DateString("yyyy-mm-dd") last: DateString("yyyy-mm-dd")

atLeast: description: The metric happened at least threshold times ever requiredFields: condition: "atLeast" threshold: Integer

atMost: description: The metric happened at most threshold times ever requiredFields: condition: "atMost" threshold: Integer

Parameters (2 required, 1 optional)
Required
definitionarray

The complete segment definition to build in a SINGLE call. The top-level array is ANDed; rules within each nested array are ORed. Include every AND clause and OR alternative here; never split a segment across multiple tool calls.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
userQuerystring

The original user query or question that triggered this tool call.

cohortRetentionCurve

cohortRetentionCurve
Full Description

Compute a retention curve for an app (scope='app'), a specific page or feature (scope='page' or 'feature'), a track event (scope='trackEvent'), or a whole product area (scope='productArea'). For track events: measures how many accounts/visitors continue firing the event over time. Supports visitor-level or account-level retention (unit) and all vs first cohort modes (cohortMode='all' for all active users, 'first' for first-time users only - best for onboarding effectiveness).

For scope='productArea', a user counts as active in a period if they used any page, feature, or track event in that area; guides in the area are not counted. Omit appId when the entity or area spans multiple applications - passing one restricts the curve to that application.

Call this tool ONCE per question. A single call returns all periods at once - do NOT call it multiple times with different periodCount values. The analysis window is anchored to now() and works backwards.

Do NOT pre-filter for 'new users in the last N days' via segmentPipeline - pass cohortMode='first' instead, which restricts to users whose all-time first interaction falls within the analysis window (truly new users, not returning users re-entering the window).

Period 0 = '< 1 Month' is the % of cohort active more than once in their first period - a real metric, NOT a 100% baseline (typical rates 25-60%). Period N = % of cohort still active N periods later. activeCount at higher periods decreases because users too new to have reached that period are excluded from the denominator (dynamic denominator - correct, not missing data). summary.finalRetentionRate is the most important single number - it represents the durable retained core.

USE FOR: Retention and churn questions - e.g. 'what % of users return after 3 months?', 'show me our retention curve', 'what's our churn rate?'. Not for acquisition questions ('how many new accounts did we gain?') - this tool measures continued activity of existing cohorts, not new-user counts.

EXAMPLES:

  • What % of users return after 3 months?
  • Show me our retention curve
  • What's our account churn rate over the last 6 months?
  • How often do accounts that created a dashboard keep creating dashboards?
  • How well do we retain first-time users of this feature?
  • What's the retention curve for our Onboarding product area?

RETURNS:

  • scope, entityId, cohortMode, unit, periodType: echoed query parameters
  • retentionCurve: list of {period, periodLabel, activeCount, multiSession, retentionRate} sorted by period
  • summary: {totalCohortSize, avgRetentionRate, finalRetentionRate}
Parameters (1 required, 11 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
appIdstring

Application ID to scope the request. Required only for scope='app'. For the other scopes it narrows the curve to a single application; omit it to span every application the entity belongs to.

cohortModestring

'all' = all active visitors regardless of when they first appeared; 'first' = only visitors for whom this is their first use of the app or entity (measures onboarding/acquisition quality). Defaults to 'all'.

Options:allfirst
entityIdstring

Pendo entity id, or the product area id when scope is 'productArea'. Required for every scope except 'app', which ignores it.

includeAnonymousboolean

Whether to include anonymous visitors. Defaults to false, matching Pendo's standard retention report.

Default: False
offsetDaysnumber

Days into the period before a user is counted as retained. Defaults to 1/7/30 for day/week/month.

periodCountnumber

Number of retention periods to calculate. Defaults to 6. The window may not exceed ~1 year: max 366 for 'day', 52 for 'week', 12 for 'month'.

Default: 6
periodTypestring

Period granularity. Defaults to 'month'.

Options:dayweekmonth
scopestring

'app' for retention on any app activity, 'page', 'feature', or 'trackEvent' for entity-level retention, or 'productArea' for retention across every page, feature, and track event in a product area. Defaults to 'app'.

Options:apppagefeaturetrackEventproductArea
segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

unitstring

'visitor' for visitor-level retention, 'account' for account-level (an account is retained if at least one of its visitors was active in the period). Defaults to 'visitor'.

Options:visitoraccount
userQuerystring

The original user query or question that triggered this tool call.

createFeedbackItem

createFeedbackItem
Full Description

Creates a new feedback item in this subscription's qualitative customer feedback system. Returns the ID of the created feedback item. Before calling this tool, you should list product areas, and assign the feedback to the appropriate product area. Then, before submitting the feedback, repeat all non-empty fields back to the user for confirmation, resolving IDs to human-readable names.

USE FOR: When the user explicitly asks you to submit product feedback, feature requests, bug reports, etc. on behalf of a customer to the qualitative customer feedback system

EXAMPLES:

  • Create feedback for this: [paste text]
  • Log a feature request for dark mode support
  • Submit feedback that the export CSV button is confusing
  • Capture this bug report about broken pagination
  • Record this customer's request for a Slack integration

RETURNS:

  • ID of the created feedback item

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (3 required, 6 optional)
Required
descriptionstring

Full feedback content describing what the customer is trying to achieve and their current workaround.

subIdstring

Subscription ID that owns the data. Required for all queries.

titlestring

Brief summary of the feedback.

Optional
accountIdstring

Account ID to attribute the feedback to. At least one of 'visitorId' or 'accountId' must be provided.

appIdstring

Application ID of the app to query (defaults to -323232 if not specified)

Default: -323232
productAreaIdstring

Optional product area ID for the request.

sourceUrlstring

URL to the original feedback source if applicable.

userQuerystring

The original user query or question that triggered this tool call.

visitorIdstring

Visitor ID to attribute the feedback to. At least one of 'visitorId' or 'accountId' must be provided. If both are provided, the visitor must belong to the account.

createGuideFromHtml

createGuideFromHtml
Full Description

Creates a new draft Pendo guide from raw HTML content. Each entry in rawHtmls becomes one step in the guide. Returns the guide ID and a direct URL to edit the guide in Pendo.

USE FOR: When the user has generated HTML guide content (e.g. from the pendo-guide-creator skill) and wants to create a real Pendo guide from it

EXAMPLES:

  • Create a guide from this HTML
  • Send this guide to Pendo
  • Publish these HTML files as a Pendo guide
  • Turn my generated guide steps into a real Pendo guide

NOT FOR: Listing, searching, or querying existing guides - use listGuides or searchEntities instead

RETURNS:

  • Guide ID of the newly created draft guide
  • Direct URL to the guide in the Pendo UI

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (3 required, 3 optional)
Required
appIdstring

Numeric application ID the guide will be created in. Only standard web applications are supported (not mobile or extension apps). Use the listAllApplications tool to find available web app IDs if unknown.

rawHtmlsarray

Array of HTML strings, one per guide step. Each string contains the full HTML content for that step.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
guideNamestring

Name for the guide. Defaults to a timestamped name like 'Unnamed Jul 10 @ 8:55 AM' if not provided.

layoutTypestring

Guide layout type: 'overlay' for a modal/lightbox guide, or 'embedded' for an inline embedded guide. Defaults to 'overlay'.

Options:overlayembedded
userQuerystring

The original user query or question that triggered this tool call.

createIdeaItem

createIdeaItem
Full Description

Creates a new product idea - a product enhancement or new feature request - for this subscription, and returns the ID of the created idea. Every idea must be associated with at least one application; if the user hasn't said which, resolve the correct appId(s) first. Optionally assign the idea to one or more product areas by their IDs. Before submitting the idea, repeat all non-empty fields back to the user for confirmation, resolving IDs to human-readable names.

USE FOR: When the user explicitly asks you to log a product idea or feature concept into the ideas backlog

EXAMPLES:

  • Create an idea for this: [paste text]
  • Log a product idea for a dark mode theme
  • Add an idea to support CSV exports on the reports page
  • Capture this idea about a bulk-edit workflow

RETURNS:

  • ID of the created idea

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (4 required, 4 optional)
Required
appIdsarray

Application IDs for the request.

descriptionstring

Full description of the idea and the problem it solves.

subIdstring

Subscription ID that owns the data. Required for all queries.

titlestring

Brief summary of the idea.

Optional
effortnumber

Estimated effort to build the idea, on a 1-5 T-shirt-size scale where 1 = XS, 2 = S, 3 = M, 4 = L, 5 = XL. Present these size options to the user and submit the matching whole number (1-5). Omit if the user has not specified one.

impactnumber

Estimated impact of the idea, on a 1-5 T-shirt-size scale where 1 = XS, 2 = S, 3 = M, 4 = L, 5 = XL. Present these size options to the user and submit the matching whole number (1-5). Omit if the user has not specified one.

productAreaIdsarray

Optional product area IDs for the request.

userQuerystring

The original user query or question that triggered this tool call.

createOrchestrateJourneyFromJson

createOrchestrateJourneyFromJson
Full Description

Creates a draft Orchestrate journey from templateJson and returns journeyId.

Use when the user wants a custom multi-email journey that createOrchestrateJourneyFromTemplate cannot express (single built-in template only). Build templateJson to match the JSON Schema on the templateJson parameter in this tool's inputSchema.

After create, call getOrchestrateJourneySteps to verify the draft graph. This tool creates the graph layout (email steps, Conditional Split nodes with Yes and No branches, wait days between steps). Segment targeting, send schedule, conversion goals, email HTML body, and the condition of each Conditional Split are not set here - configure them in the Orchestrate UI after create.

USE FOR: Creating a draft Orchestrate journey when the user wants a custom multi-email journey with Conditional Splits.

EXAMPLES:

  • User wants a welcome email then a follow-up email 3 days later: read templateJson inputSchema, build messageGraph with two Message nodes, set messageData.durationInDays to 3 on the first Message node (the wait before the follow-up) and durationInDays to 1 on the last Message node, call createOrchestrateJourneyFromJson for app 12345
  • User wants email A then a Conditional Split where the Yes branch goes to email B and the No branch to exit: add a nodeType Condition node with edgeType Yes and edgeType No edges after email A; configure the condition in the Orchestrate UI
  • User wants an initial email, then a Conditional Split where the Yes branch sends email 1 and the No branch sends email 2: build Start -> Message (initial) -> Condition with edgeType Yes to a Message named email 1 and edgeType No to a Message named email 2, each branch ending at its own Exit node; set messageData on all three Message nodes; configure the condition in the Orchestrate UI

NOT FOR: Built-in single-email create (use createOrchestrateJourneyFromTemplate). Guide nodes. Updating graph after create. Setting segment targeting, send schedule, conversion goal, email HTML content, or the condition of a Conditional Split in templateJson. Activating a journey.

WORKFLOW: 1. Confirm multi-email need (not createOrchestrateJourneyFromTemplate). 2. Construct templateJson from templateJson inputSchema. 3. Create. 4. getOrchestrateJourneySteps to verify.

RETURNS:

  • journeyId: id of the created draft journey
  • journeyUrl: direct URL to the journey in the Pendo UI
  • status: draft
  • validationReport: graph validation summary

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) (Demo) Pendo Experience (6591622502678528)

Parameters (4 required, 1 optional)
Required
appIdstring

Application ID to scope the request.

namestring

Human-readable journey name shown in the Orchestrate UI.

subIdstring

Subscription ID that owns the data. Required for all queries.

templateJsonobject

Journey graph payload. Must include messageGraph; see inputSchema.properties.messageGraph for the full graph shape.

Optional
userQuerystring

The original user query or question that triggered this tool call.

createOrchestrateJourneyFromTemplate

createOrchestrateJourneyFromTemplate
Full Description

Creates a draft Orchestrate journey from a built-in templateId and returns journeyId.

Supply templateId only - the server applies a fixed messageGraph; do not send templateJson. Supported templateId values are listed in the templateId parameter enum in this tool's inputSchema. For custom multi-email journeys, use createOrchestrateJourneyFromJson (templateJson inputSchema on that tool).

After create, call getOrchestrateJourneySteps to verify the draft graph. This tool only selects which built-in graph to apply. Segment targeting, send schedule, conversion goals, and email HTML body are not set here - configure them in the Orchestrate UI after create.

USE FOR: Creating a draft Orchestrate journey from a built-in template (single email today).

EXAMPLES:

  • Create a draft Orchestrate journey named 'Welcome email' with templateId mcpSingleEmailJourneyTemplate for app 12345

NOT FOR: Custom multi-email journeys (use createOrchestrateJourneyFromJson). UI layout ids from listOrchestrateJourneyTemplates. Updating graph after create. Setting segment targeting, send schedule, conversion goal, or email HTML content. Activating a journey.

WORKFLOW: 1. Confirm single built-in template is enough (not createOrchestrateJourneyFromJson). 2. Call with a templateId from inputSchema enum. 3. getOrchestrateJourneySteps to verify.

RETURNS:

  • journeyId: id of the created draft journey
  • journeyUrl: direct URL to the journey in the Pendo UI
  • status: draft
  • validationReport: graph validation summary

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) (Demo) Pendo Experience (6591622502678528)

Parameters (4 required, 1 optional)
Required
appIdstring

Application ID to scope the request.

namestring

Human-readable journey name shown in the Orchestrate UI.

subIdstring

Subscription ID that owns the data. Required for all queries.

templateIdstring

Built-in template id. mcpSingleEmailJourneyTemplate: fixed messageGraph Start -> one Email Message (html, aws, marketing) -> Exit with Regular edges. Not the same as ids from listOrchestrateJourneyTemplates.

Options:mcpSingleEmailJourneyTemplate
Optional
userQuerystring

The original user query or question that triggered this tool call.

deleteSegment

deleteSegment
Full Description

Permanently deletes a saved Pendo visitor segment. Confirm the segment name and id with the user before submitting - this cannot be undone from the agent.

USE FOR: Removing a segment the user no longer needs. If the segment is referenced by a guide, another segment, or a saved report, the delete is rejected and the referencing entity is named in the error so the user can detach it first. Segments that back a feature flag must be deleted via the feature-flag tools.

EXAMPLES:

  • Delete segment abc123.
  • Remove the "Old trial users" segment.

RETURNS:

  • id: the deleted segment's id.

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (2 required, 1 optional)
Required
idstring

ID of the segment to delete, as returned by createSegment, getSegment, or segmentList.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
userQuerystring

The original user query or question that triggered this tool call.

devlogEvents

devlogEvents
Full Description

Fetch raw devlog events for a visitor or session, including HTTP request/response details, log levels, messages, and stack traces. Supports cross-tab replays via recordingSessionIds (array) to fetch devlogs across multiple browser tabs. Accepts a clipId or the individual fields (recordingSessionId, appId, visitorId, accountId, startTime, endTime) that identify a recording. When clipId is provided, the tool looks up the clip to resolve visitorId, accountId, appId, recordingSessionId, and time range automatically. If the user provides a session replay URL, parse the recordingSessionId from the URL path and query parameters (startTime, endTime, visitorId, accountId, appId) before calling this tool; for cross-tab replays, also parse the comma-separated crossTabSessions query parameter and pass the path ID plus those values in recordingSessionIds.

USE FOR: Investigating developer console logs, network errors, or HTTP activity captured during a session replay. Use when the user provides a session replay URL (parse the URL yourself to extract params), a clip ID, or when the recordingSessionId, appId, visitorId, accountId, and time range for a session are already known. For cross-tab replays, pass the path recordingSessionId plus the comma-separated crossTabSessions query-param values as recordingSessionIds to fetch devlogs across all tabs in a single call.

EXAMPLES:

  • Show me devlogs for this session replay: https://<hostname>/s/123/replay/player/abc
  • Show network requests captured in clip https://<hostname>/s/123/replay/clip/saved/xyz
  • What HTTP errors occurred during visitor john's session?
  • Fetch devlogs for clip ID abc-123
  • Find devlog errors for account acme-corp
  • What API calls did this visitor make during their session?

NOT FOR: Listing or discovering session replays. General page/feature/track-event analytics unrelated to a specific session recording.

RETURNS:

  • Devlog events including subType (console/network), log level, message, stack trace, HTTP method, request URL, status code, request/response headers and bodies, recordingSessionId, and recordingId for cross-tab attribution. Limited to 100 events.

The maximum time range for this tool is 31 days.

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (1 required, 13 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
accountIdstring

Filter results to a specific account. REQUIRED when the user mentions or references a specific account. Use the exact account ID string

appIdstring

Optional application ID to filter by. If omitted, includes all applications the user can access.

clipIdstring

Saved clip ID. When provided, the tool looks up the SessionRecordingClip to resolve visitorId, accountId, appId, recordingSessionId, and time range automatically. Direct startTime/endTime params still override the clip-derived time range. Parse from clip URL path (the last segment of /replay/clip/saved/<ID>).

endTimenumber

Query end time in milliseconds as a unix timestamp. Inclusive. Required unless derivable from clipId.

limitnumber

Maximum number of events to return (default 50, max 100).

Default: 50
logLevelsarray

Filter console logs by level (e.g. ["error", "warn"]). Only applies when logType is "console" or unset. Common values: "error", "warn", "info". Default value is "error"

Default: ['error']
logTypearray

Filter by log type. Valid values: "console" (browser console logs), "network" (HTTP request/response logs). Omit to return both.

recordingSessionIdstring

DEPRECATED: use recordingSessionIds instead. A single recording session ID; if provided it is merged into recordingSessionIds.

recordingSessionIdsarray

Recording session IDs identifying the replay(s) to fetch devlogs for. Required unless clipId is provided. Parse from the session replay player URL, or pass through IDs already known from a prior lookup. The last path segment of /replay/player/<ID> is one ID; for cross-tab replays the remaining tab IDs are in the crossTabSessions query parameter (comma-separated) - include the path ID and all crossTabSessions values here to fetch devlogs across every tab in a single call.

startTimenumber

Query start time in milliseconds as a unix timestamp. Inclusive. Required unless derivable from clipId.

statusCodesarray

Filter network events by HTTP status code. Accepts exact codes (e.g., "200", "404") and generic class patterns (e.g., "4xx", "5xx"). Multiple values are ORed. Only applies when logType includes "network" or is unset. Default value is ["4xx", "5xx"]

Default: ['4xx', '5xx']
userQuerystring

The original user query or question that triggered this tool call.

visitorIdstring

Filter results to a specific visitor. REQUIRED when the user mentions or references a specific visitor. Use the exact visitor ID string

entityUsage

entityUsage
Full Description

Get usage analytics for one known page, feature, or track event ID over a date range, including page views, feature clicks, event counts, and unique visitor ('people') and account counts. Returns {summary, rows}: summary has total events, unique visitors, unique accounts (and for pages/features, frustration counts; pages also include uTurnCount); rows are per-visitor or per-account breakdowns with events, time on entity, and days active, sorted and limited. Optionally include metadata fields for each returned visitor or account with select. Audience can be scoped via visitorIds OR an inline segmentPipeline (mutually exclusive), and/or filtered to a single accountId.

USE FOR: Scalar 'how many people viewed/clicked/used it' totals and top-N visitor or account questions over a window for one known page, feature, or track event ID.

EXAMPLES:

  • How many page views did page X get last month?
  • Top 20 visitors by time on page X in the last 30 days
  • Top 50 accounts by usage of feature Y last quarter
  • How many rage clicks did feature Y have last week?
  • Show the top 20 visitors by time on page X last month with their email and role

NOT FOR: Looking up an entity ID from its name, or ranking multiple entities against each other.

WORKFLOW: When the user names a page, feature, or track event but does not provide its ID, call listCountables to resolve the name to an ID, then call entityUsage with that ID. Do not substitute aggregateEntityUsage for this lookup: its limited ranking may omit the named entity.

RETURNS:

  • summary: totalNumEvents, totalNumVisitors, totalNumAccounts (pages/features also: totalErrorClickCount, totalRageClickCount, totalDeadClickCount; pages also: totalUTurnCount)
  • rows: events, timeOnEntityInMinutes, daysActive per visitor or account (pages/features also: errorClickCount, rageClickCount, deadClickCount; pages also: uTurnCount); per-account rows also include numVisitors; select adds requested metadata fields
Parameters (4 required, 10 optional)
Required
dateRangeobject

Time window. For a rolling window use type='relative' with lastNDays. For a fixed calendar range use type='absolute' with startDate and endDate in YYYY-MM-DD.

entityIdstring

The Pendo page, feature, or track event ID.

entityTypestring

The kind of entity: 'page', 'feature', or 'trackEvent'.

Options:pagefeaturetrackEvent
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
accountIdstring

Optional Pendo account id to filter both summary and rows to. Combines with visitorIds or segmentPipeline.

groupBystring

'visitor' (default) groups rows by visitorId; 'account' groups by accountId and excludes events with empty accountId.

Options:visitoraccount
Default: visitor
includeAnonymousboolean

Whether to include unidentified visitors in the summary and rows. Defaults to true.

Default: True
limitnumber

Maximum number of rows to return (1-200, default 10). Summary is independent of limit; set limit=1 if you only need totals.

Default: 10
segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

selectarray

Optional metadata fields to return in addition to usage metrics and the group-by ID. For groupBy='visitor', use exact fields from visitorMetadataSchema (for example, "visitor.custom.role"; "metadata.custom.role" also works). For groupBy='account', use exact fields from accountMetadataSchema (for example, "account.custom.ARR"; "metadata.custom.ARR" also works). If omitted, no metadata fields are returned.

sortBystring

Field to sort rows by. All entity types support 'events' and 'daysActive'. Pages and features also support 'errorClickCount', 'rageClickCount', 'deadClickCount'. Pages also support 'timeOnEntity' and 'uTurnCount'.

Default: events
sortOrderstring

'desc' (default, highest first) or 'asc'.

Options:ascdesc
Default: desc
userQuerystring

The original user query or question that triggered this tool call.

visitorIdsarray

Optional explicit visitor IDs to scope to (max 500). Mutually exclusive with segmentPipeline.

entityUsageTimeSeries

entityUsageTimeSeries
Full Description

Get usage of a page, feature, or track event over time. Groups events into buckets of the requested period (daily/weekly/monthly) and returns one row per bucket with all available metrics. Pages get the full set (visitors, accounts, events, timeOnEntity, averageTimeOnEntityPerVisitor (duration object {seconds, display}), errorClickCount, rageClickCount, uTurnCount, deadClickCount). Features drop the time-derived metrics and uTurnCount. Track events drop all click-level frustration counts. minEvents restricts every bucket to the visitors with at least that many events on the entity in that bucket, applied independently per bucket. For a specific entity, the query can filter or group by custom event properties or event-time historical metadata. For whole-app usage over time (not a specific entity), use the appUsageTimeSeries tool instead.

USE FOR: Trend questions over a window - e.g. 'how did feature X usage change over the last 12 weeks?', 'are rage clicks on page X trending up?'. With minEvents, tracks a per-bucket event threshold over time - e.g. 'visitors using feature X at least twice a month'.

EXAMPLES:

  • How did feature X usage change over the last 12 weeks?
  • Are rage clicks on page X trending up over the last 30 days?
  • How did visitor counts trend for this account last month?
  • Total page views per week across all pages over the last quarter
  • How many visitors used feature X at least twice in each of the last six months?

RETURNS:

  • meta.dateRange: resolved startDate and endDate (YYYY-MM-DD)
  • meta.period: echoed bucket size (daily|weekly|monthly)
  • meta.metrics: list of metric names returned per bucket
  • rows: one entry per time bucket with bucket (YYYY-MM-DD or YYYY-MM), startTime (timestamp object {iso, display}), and metric values; numeric metrics zero-fill and averageTimeOnEntityPerVisitor (duration object {seconds, display}) defaults to 0s for empty buckets
  • property-grouped rows contain propertyValues, with one stable range-ranked group set zero-filled across every bucket
  • sumEventProperty optionally adds a numeric event-property total per bucket and property group, zero-filled for empty buckets
Parameters (4 required, 13 optional)
Required
dateRangeobject

Time window. For a rolling window use type='relative' with lastNDays. For a fixed calendar range use type='absolute' with startDate and endDate in YYYY-MM-DD.

entityTypestring

'page', 'feature', or 'trackEvent'.

Options:pagefeaturetrackEvent
periodstring

Bucket granularity. 'daily' for windows up to ~30 days, 'weekly' for longer ranges, 'monthly' for multi-quarter ranges.

Options:dailyweeklymonthly
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
accountIdstring

Optional Pendo account id to filter the query to. Combines with segmentPipeline.

appIdstring

Optional application ID. When provided, the query is scoped to that app. Omit to include all apps. Ignored when entityId is supplied, since an entity already pins its app.

entityIdstring

Optional Pendo entity id. When omitted, the query aggregates across every entity of that type.

groupByPropertiesarray

Exact custom event-property names, historic metadata keys (historic.kind.group.field), or current metadata keys (current.kind.group.field) used to group every bucket (maximum 2). Requires entityId.

includeAnonymousboolean

Whether to include unidentified visitors in the metrics. Defaults to true.

Default: True
limitnumber

Maximum property groups returned (1-200, default 10). Applies only with groupByProperties.

minEventsnumber

Only count visitors whose own event total within a bucket reaches this number, applied independently per bucket - so minEvents=2 with period='monthly' counts, for each month, the visitors with at least 2 events that month. This counts events, not visits - several events can happen within one visit, so it does not measure returning or repeat visitors; use cohortRetentionCurve for that. It is always a threshold on visitors, never on accounts: an account is counted in a bucket when it holds at least one qualifying visitor, and the bucket's metrics cover only those visitors' events. Omit to count every active visitor.

propertyFiltersarray

Property conditions applied before aggregation (maximum 10). Requires entityId.

segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

sortBystring

Metric used to rank property groups over the whole date range. Defaults to events. Supports 'sumEventProperty' when that parameter is supplied.

sortOrderstring

'desc' (default) or 'asc'. Applies only with groupByProperties.

Options:ascdesc
sumEventPropertystring

Exact configured numeric event-property name to total. Adds sumEventProperty to the returned metrics and echoes the property name in meta. Values are weighted by event count; missing or nonnumeric values contribute zero. Requires a specific entityId.

userQuerystring

The original user query or question that triggered this tool call.

Generate Feedback Topics

generate_feedback_topics
Full Description

Generates AI-clustered topics from customer feedback matching the given filters. Each topic contains a name, description, and count of related insights. Use this for high-level overviews of the most common themes in a feedback subset.

PERFORMANCE: This is a slow-running tool.

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) (Demo) Pendo Experience (6591622502678528) (External Customer) Pendo Experience Sandbox (4691349476737024)

Parameters (1 required, 3 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
feedbackFiltersobject

Filters to apply when querying customer feedback.

filtersobject

Filters to apply when querying Listen data (feedback, insights, ideas).

userQuerystring

The original user query or question that triggered this tool call.

generateFeedbackTopics

generateFeedbackTopics
Full Description

Generates AI-clustered topics from customer feedback matching the given filters. Each topic contains a name, description, and count of related insights. Use this for high-level overviews of the most common themes in a feedback subset.

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (1 required, 2 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
filtersobject

Filters to apply when querying Listen data (feedback, insights, ideas).

userQuerystring

The original user query or question that triggered this tool call.

Get Agent Context

get_agent_context
Full Description

Fetches a grounding document that describes the current contents of a Pendo product resource so the LLM can reason about it. Today the only supported resource is a Pendo Space — a collaborative canvas of product artifacts (pages, features, guides, notes, etc.) curated by a team. Pass resource_type (e.g. "space") and resource_id (the id of that resource, e.g. a space id) to retrieve the document. Call list_spaces first if you need to discover a space id. The response is JSON returned by the Spaces service and typically contains a markdown body plus a schema describing the resource's contents; do not assume a shape beyond what the response declares. Use frame_id to scope a space's context to a single frame on the canvas (and items whose parent is that frame) — useful when the user's UI is focused on that frame; omit frame_id for the full space.

PERFORMANCE: This is a fast-running tool.

Parameters (3 required, 2 optional)
Required
resource_idstring

Opaque id for that resource type (e.g. when resource_type is 'space', the space id).

resource_typestring

Which product resource to load context for. Supported values depend on subscription features; currently includes 'space'.

Options:space
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
frame_idstring

When resource_type is "space", limits context to one frame (that canvas item id) and items whose parent is that frame. Omit for full-space context.

userQuerystring

The original user query or question that triggered this tool call.

Get Feedback Insights

get_feedback_insights
Full Description

Retrieves key customer feedback insights extracted from raw feedback matching the given filters. Each item includes a summary, explanation, and supporting quote. Use this when the user wants to see actionable feedback insights which have been distilled from the raw customer feedback. Note: insights can also be referred to as 'highlights'

PERFORMANCE: This is a slow-running tool.

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) (Demo) Pendo Experience (6591622502678528) (External Customer) Pendo Experience Sandbox (4691349476737024)

Parameters (1 required, 3 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
feedbackFiltersobject

Filters to apply when querying customer feedback.

filtersobject

Filters to apply when querying Listen data (feedback, insights, ideas).

userQuerystring

The original user query or question that triggered this tool call.

Get Feedback Items

get_feedback_items
Full Description

Retrieves the original, raw customer feedback matching the given filters. Each item includes id, title, description, and info about the account and visitor which gave the feedback. Use this when the user wants the full raw feedback, as opposed to the extracted insights or clustered topics. A maximum of 30 items will be returned, however there may be more matching the filter set.

PERFORMANCE: This is a slow-running tool.

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) (Demo) Pendo Experience (6591622502678528) (External Customer) Pendo Experience Sandbox (4691349476737024)

Parameters (1 required, 3 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
feedbackFiltersobject

Filters to apply when querying customer feedback.

filtersobject

Filters to apply when querying Listen data (feedback, insights, ideas).

userQuerystring

The original user query or question that triggered this tool call.

Get Ideas

get_ideas
Full Description

Retrieves product ideas submitted by internal product employees which describe product enhancements and new features matching the given filters. Each item includes id, title, and description. A maximum of 30 items will be returned, however there may be more matching the filter set.

PERFORMANCE: This is a slow-running tool.

Parameters (1 required, 2 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
filtersobject

Filters to apply when querying Listen data (feedback, insights, ideas).

userQuerystring

The original user query or question that triggered this tool call.

getAgentConfig

getAgentConfig
Full Description

Returns the configuration for a given AI agent: its name, description (a human-authored summary of the agent's role and purpose, not its LLM system prompt), model preset, type, and the tool names and descriptions it has used in the specified date range. The agent config section comes from the stored agent record. The tools section is derived from runtime events in the date range and may be empty if the agent had no activity.

USE FOR: Fetching the static configuration and runtime tool inventory of an AI agent. Use before analyzing issues or generating fix briefs to understand what the agent is configured to do and which tools it calls.

EXAMPLES:

  • What is my agent's configured role and purpose?
  • Which tools does my agent have access to?
  • What model does agent X use?
  • Show me the full config for this agent before I debug it

NOT FOR: The agent's actual LLM system prompt - this tool does not have access to that. Aggregated usage metrics, issue clusters, or conversation analysis - use the agent analytics tools for those.

RETURNS:

  • Two labeled CSV sections:
    • [agent_config]: name, description (human-authored role/purpose summary, not the LLM system prompt), preset (model), type - one row.
    • [tools]: toolName, toolDescription - one row per tool seen in the date range; empty section if no activity found.

The maximum time range for this tool is 90 days.

Parameters (3 required, 2 optional)
Required
agentIdstring

The AI agent ID.

dateRangeobject

Time window used to look up the agent's runtime tool inventory from events. Use type='relative' with lastNDays for a rolling window, or type='absolute' with startDate/endDate (YYYY-MM-DD) for a fixed range. Max 90 days.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
appIdstring

Optional application ID to filter by. If omitted, includes all applications the user can access.

userQuerystring

The original user query or question that triggered this tool call.

getAgentContext

getAgentContext
Full Description

Fetches a grounding document that describes the current contents of a Pendo product resource so the LLM can reason about it. Today the only supported resource is a Pendo Space - a collaborative canvas of product artifacts (pages, features, guides, notes, etc.) curated by a team. Pass resourceType (e.g. "space") and resourceId (the id of that resource, e.g. a space id) to retrieve the document. Call listSpaces first if you need to discover a space id. The response is JSON returned by the Spaces service and typically contains a markdown body plus a schema describing the resource's contents; do not assume a shape beyond what the response declares. Use frameId to scope a space's context to a single frame on the canvas (and items whose parent is that frame) - useful when the user's UI is focused on that frame; omit frameId for the full space.

Parameters (3 required, 2 optional)
Required
resourceIdstring

Opaque id for that resource type (e.g. when resourceType is 'space', the space id).

resourceTypestring

Which product resource to load context for. Supported values depend on subscription features; currently includes 'space'.

Options:space
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
frameIdstring

When resourceType is "space", limits context to one frame (that canvas item id) and items whose parent is that frame. Omit for full-space context.

userQuerystring

The original user query or question that triggered this tool call.

getEntity

getEntity
Full Description

Get the configuration details of one page, feature, track event, or guide by ID. Does not include any usage or metrics.

USE FOR: Understanding an entity before querying or acting on it. The name of any entity, reading a page's URL rules, the element a feature targets and the page it sits on, or a countable's event properties.For a guide, get its steps in order, each with its step ID and the interactive elements on it.

EXAMPLES:

  • What is the page with ID abc123 and what URLs does it match?
  • Which element does feature xyz789 target, and what page is it on?
  • What event properties can I break down track event def456 by?
  • What are the step IDs and element IDs for guide ghi789?
  • Which buttons are on the second step of this guide and what do they do?

NOT FOR: Usage, metrics or counts of any kind. Searching for an entity when you don't know its ID.

RETURNS:

  • id, type, name, description, appIds, createdAt, lastUpdatedAt for every entity type.
  • eventPropertyNames: names of event properties attached to pages, features and track events.
  • page: rules and excludeRules (the URL rules that define the page).
  • feature: elementPathRules (CSS selector rules identifying the tagged element), and the pageId and pageName it is scoped to.
  • trackEvent: trackTypeRules (the event names that count towards it).
  • guide: state, launchMethod, and steps in the order they appear. Each step has id, name, and the pageId and elementPathRule it attaches to when it targets one.
  • guide steps[].polls: id, question and type ('PickList', 'NumberScale', 'FreeForm', 'NPSPoll', ...) per poll. For the answers given, use guidePollResponses.
  • guide steps[].elements: the buttons, close buttons and links on the step, each with uiElementId, text and actions ('Next Step', 'Dismiss Guide', 'External URL', 'Go to Step (2)', ...).
Parameters (3 required, 1 optional)
Required
entityIdstring

The exact ID of the entity, as returned by listCountables, listGuides, or searchEntities (e.g. "aBcD1234eFgH"). Names are not accepted.

entityTypestring

The kind of entity to describe. "page", "feature", "trackEvent", or "guide".

Options:pagefeaturetrackEventguide
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
userQuerystring

The original user query or question that triggered this tool call.

getFeedbackInsights

getFeedbackInsights
Full Description

Retrieves key customer feedback insights extracted from raw feedback matching the given filters. Each item includes a summary, explanation, and supporting quote. Use this when the user wants to see actionable feedback insights which have been distilled from the raw customer feedback. Note: insights can also be referred to as 'highlights'

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (1 required, 2 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
filtersobject

Filters to apply when querying Listen data (feedback, insights, ideas).

userQuerystring

The original user query or question that triggered this tool call.

getFeedbackItems

getFeedbackItems
Full Description

Retrieves the original, raw customer feedback matching the given filters. Each item includes id, title, description, status, and info about the account and visitor which gave the feedback. status is an object with id, name, and color fields. account is an object with id and name. visitor information is available via the createdBy and onBehalfOf objects. Each item also includes: assignee (email of the assigned user); labels, apps, and productAreas (each a list of {id, name} objects); productAreas identify the product areas the feedback is tagged to; lastUpdatedAt (epoch milliseconds, same format as createdAt); linkedIdeas (a list of the ids of ideas the feedback is linked to); importance ('Must Have', 'Nice to Have', or 'Not Interested'); and source (where the feedback originated, e.g. Portal, Salesforce, NPS). Use this when the user wants the full raw feedback, as opposed to the extracted insights or clustered topics. A maximum of 30 items will be returned, however there may be more matching the filter set.

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (1 required, 2 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
filtersobject

Filters to apply when querying Listen data (feedback, insights, ideas).

userQuerystring

The original user query or question that triggered this tool call.

getIdeas

getIdeas
Full Description

Retrieves product ideas submitted by internal product employees which describe product enhancements and new features matching the given filters. Each item includes: id, title, description, createdAt, status, effort, impact, voteCount, accountVoteCount, and votes. Each item also includes: assignee (email of the assigned user); labels, apps, and productAreas (each a list of {id, name} objects); lastUpdatedAt (epoch milliseconds, same format as createdAt); and linkedFeedbackItems (list of feedback item IDs linked to this idea). status is an object with id, name, and color fields. voteCount is the number of positive votes cast for the idea ('Must Have' and 'Nice to Have') - use this as the primary signal of demand when ranking or comparing ideas. accountVoteCount is the number of unique accounts that cast positive votes - use this to indicate breadth of interest across customers; when accountVoteCount is much lower than voteCount, it means a small number of accounts voted multiple times. 'Not Interested' votes are excluded from voteCount, accountVoteCount, and the votes list by default. Pass includeNotInterestedVotes=true when the user asks to see 'Not Interested' votes or wants all vote counts including 'Not Interested'. Each vote includes: importance ('Must Have' or 'Nice to Have'; 'Not Interested' when includeNotInterestedVotes is true); voterId (the ID of the person who cast the vote); voterType ('Visitor' in most cases, 'User' for internal users - only mention this to the user when the value is 'User'); accountId (the account associated with the vote). A maximum of 30 items will be returned, however there may be more matching the filter set.

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) Pendo Free Roadmaps Test (5914217715662848) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (1 required, 4 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
filtersobject

Filters to apply when querying Listen data (feedback, insights, ideas).

includeNotInterestedVotesboolean

Set to true to include 'Not Interested' votes in the votes list. Default: false. Pass this when the user explicitly asks to see 'Not Interested' votes.

Default: False
userQuerystring

The original user query or question that triggered this tool call.

votesLimitnumber

Maximum number of votes to return per idea. Range: 1-50. Default: 10.

Default: 10

getOrchestrateEmail

getOrchestrateEmail
Full Description

Get full details for a single Orchestrate email campaign by ID.

Returns any orchestrate email the caller can access, including journey message emails when you already have the email ID. Use list_orchestrate_emails to discover orchestrate email campaigns; use this tool when you have a specific email ID.

USE FOR: Inspecting an Orchestrate email's configuration, status, schedule, audience, and template-level fields when you already have the email ID (standalone or journey-linked).

EXAMPLES:

  • Get email details for email 123
  • Show orchestrate email config for abc
  • What is email xyz?
  • Show me full details for this orchestrate email
  • Get email campaign by ID

NOT FOR: Listing or searching emails without an ID (use list_orchestrate_emails). Email performance metrics like sends, opens, or clicks (use get_orchestrate_email_metrics). Journey configuration without a journey ID (use list_orchestrate_journeys or get_orchestrate_journey).

WORKFLOW: Call list_orchestrate_emails to discover email IDs, then call this tool with emailId.

RETURNS:

  • Orchestrate email campaign configuration for agents: name, status (UI lifecycle label for standalone emails), subject, provider (Pendo, HubSpot, Marketo, or Eloqua), email settings, audience, schedule start time, and lifecycle timestamps (publishedAt, triggeredAt, executedAt)
  • attributes includes journeyId when the email belongs to a journey
  • Integration IDs (HubSpot, Marketo, Eloqua) when the email uses an external provider

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) PENDO_SAMPLE_DATA_SUB (5739608213684224) (Demo) Pendo Experience (6591622502678528)

Parameters (2 required, 1 optional)
Required
emailIdstring

Orchestrate email campaign ID to fetch.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
userQuerystring

The original user query or question that triggered this tool call.

getOrchestrateEmailMetrics

getOrchestrateEmailMetrics
Full Description

Get performance metrics for a single Orchestrate email.

Returns delivery, unique opens, unique clicks, bounces, unsubscribes, and spam complaints for Pendo emails within the requested date range. Matches Orchestrate email overview metrics in the UI. Email-level aggregates only: this tool does not return per-visitor metrics or identify which visitors sent, opened, clicked, bounced, or unsubscribed. For per-visitor engagement use getOrchestrateEmailVisitors. Use listOrchestrateEmails to discover email IDs.

USE FOR: Analyzing Orchestrate email performance when you already have the email ID. Questions about sends, delivery rate, open rate, click rate, or bounces.

EXAMPLES:

  • How did email abc perform last month?
  • Show delivery and open rates for orchestrate email 123
  • Get email metrics for email 123 between 2025-01-01 and 2025-01-31

NOT FOR: Listing emails without an ID (use listOrchestrateEmails). Per-visitor email engagement (who opened, clicked, bounced, or unsubscribed - use getOrchestrateEmailVisitors). Journey-level metrics (use getOrchestrateJourneyMetrics). Per-step metrics for every step of a journey at once (use getOrchestrateJourneyStepMetrics). Email configuration (use getOrchestrateEmail).

WORKFLOW: Call listOrchestrateEmails to discover email IDs, then call this tool with emailId and a date range.

RETURNS:

  • Top-level emailId, startDate, endDate, plus metrics: unique-visitor counts (sent, delivered, opened, clicked, bounced, unsubscribed, complaint) and rates (deliveryRate, openRate, clickRate, clickToOpenRate, bounceRate, unsubscribeRate, complainRate). No rows or visitorId.
  • Rates as percentages: openRate and clickRate are % of delivered; deliveryRate, bounceRate, unsubscribeRate, and complainRate are % of sent; clickToOpenRate is % of opened. Bounce counts reflect hard bounces only (Permanent).

The maximum time range for this tool is 367 days.

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) PENDO_SAMPLE_DATA_SUB (5739608213684224) (Demo) Pendo Experience (6591622502678528)

Parameters (4 required, 3 optional)
Required
emailIdstring

Orchestrate email ID to fetch metrics for.

endDatestring

Query end date in YYYY-MM-DD format (e.g., '2025-01-31'). Inclusive.

startDatestring

Query start date in YYYY-MM-DD format (e.g., '2025-01-01'). Inclusive.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
blackliststring

Blacklist behavior: 'apply' (use blacklist, normal behavior), 'ignore' (do not use blacklist), 'only' (invert blacklist, return only blacklisted activity)

Options:applyignoreonly
Default: apply
segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

userQuerystring

The original user query or question that triggered this tool call.

getOrchestrateJourney

getOrchestrateJourney
Full Description

Get full details for a single Orchestrate journey by ID.

Returns curated journey configuration including audience, status, scheduling, and goal. Does not include the step graph, linked message/email IDs, or email settings (those live on each email; use getOrchestrateEmail). Use listOrchestrateJourneys to discover journey IDs.

USE FOR: Inspecting an Orchestrate journey's configuration, audience, status, scheduling, and goal when you already have the journey ID.

EXAMPLES:

  • Get orchestrate journey details for journey 123
  • Show me the full config for this orchestrate journey
  • What is orchestrate journey xyz?
  • Get orchestrate journey campaign by ID

NOT FOR: Listing or searching orchestrate journeys without an ID (use list_orchestrate_journeys). Email campaign details or email settings (use get_orchestrate_email). Journey step graph or linked message/email IDs (use get_orchestrate_journey_steps).

WORKFLOW: Call list_orchestrate_journeys to discover journey IDs, then call this tool with journeyId.

RETURNS:

  • Journey configuration for agents: name, status (UI lifecycle label), audience, goal, and scheduling
  • Lifecycle timestamps (createdAt, updatedAt, publishedAt, firstPublishedAt)
  • App IDs, step count, audience targeting, and control-group settings

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) PENDO_SAMPLE_DATA_SUB (5739608213684224) (Demo) Pendo Experience (6591622502678528)

Parameters (2 required, 1 optional)
Required
journeyIdstring

Orchestrate journey ID to fetch.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
userQuerystring

The original user query or question that triggered this tool call.

getOrchestrateJourneyMetrics

getOrchestrateJourneyMetrics
Full Description

Get journey-level performance metrics for a single Orchestrate journey.

Covers visitor entry and exit counts and - for journeys with a goal - goal attainment. Returns journey-wide aggregates only: no per-step, per-message, or per-visitor breakdown.

USE FOR: Analyzing overall Orchestrate journey performance when you already have the journey ID. Questions about visitors entered, visitors completed, or (for journeys with a configured goal) goal attainment.

EXAMPLES:

  • How is orchestrate journey 123 performing?
  • How many visitors entered and exited orchestrate journey abc?
  • What is the goal attainment rate for this orchestrate journey?
  • Show journey metrics for journey 123 between 2025-01-01 and 2025-01-31

NOT FOR: Per-step or per-message metrics within the journey (use getOrchestrateJourneyStepMetrics). Per-visitor engagement lists for a single journey step (use getOrchestrateJourneyStepVisitors). The journey step graph or structure (use getOrchestrateJourneySteps). Metrics for a single email by ID (use getOrchestrateEmailMetrics). Per-visitor journey membership (which visitors entered or exited). Listing journeys without an ID (use listOrchestrateJourneys). Journey configuration (use getOrchestrateJourney).

WORKFLOW: Call listOrchestrateJourneys to discover journey IDs, then call this tool with journeyId, optionally with startDate and endDate.

RETURNS:

  • visitorsEntered: unique visitors who entered the journey
  • visitorsCompleted: unique entered visitors who finished the journey by reaching an Exit step or aging out (for required-goal journeys, achieving the goal also marks completion). This is a journey-exit count, NOT goal attainment - use visitorsAchievedGoal for that. For optional-goal journeys, achieving the goal does not by itself mark a visitor completed, so an achiever is counted here only once they later reach an Exit or age out
  • visitorsAchievedGoal: unique entered visitors who achieved the journey goal, computed independently of completion tagging (omitted for journeys with no goal). Because attainment is tracked separately from completion, this can briefly exceed visitorsCompleted while achievers are still in-flight - it is not a stable relationship
  • goalAttainmentRate: visitorsAchievedGoal as a percentage of visitorsEntered (omitted for journeys with no goal or when no visitors entered)
  • goal: the journey goal definition (type, itemType, itemId, isGoalOptional); omitted for journeys with no goal
  • When startDate and endDate are provided, visitorsEntered and visitorsCompleted are limited to entry/exit within that range; otherwise cumulative totals are returned
  • visitorsAchievedGoal and goalAttainmentRate are always cumulative (the backend goal-achievement definition is not time-bounded) and are omitted when a date range is provided; request without a date range to retrieve them

The maximum time range for this tool is 367 days.

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) PENDO_SAMPLE_DATA_SUB (5739608213684224) (Demo) Pendo Experience (6591622502678528)

Parameters (2 required, 3 optional)
Required
journeyIdstring

Orchestrate journey ID to fetch metrics for.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
endDatestring

Query end date in YYYY-MM-DD format (e.g., '2025-01-31'). Inclusive. Optional; when provided, startDate is also required and metrics are limited to this range. When omitted, cumulative totals are returned.

startDatestring

Query start date in YYYY-MM-DD format (e.g., '2025-01-01'). Inclusive. Optional; when provided, endDate is also required and metrics are limited to this range. When omitted, cumulative totals are returned.

userQuerystring

The original user query or question that triggered this tool call.

getOrchestrateJourneyStepMetrics

getOrchestrateJourneyStepMetrics
Full Description

Get per-step performance metrics for a single Orchestrate journey by ID.

Returns one entry per message step in execution-flow order, matching the per-step columns on the Orchestrate journey metrics page. Every count is scoped to journey entrants - visitors who entered THIS journey within the requested date range - not campaign- or guide-wide activity, so the numbers reconcile with the journey metrics page. Email steps include delivery, unique opens, unique clicks, bounces, unsubscribes, and spam complaints among those entrants. Guide steps include the journey-page guide engagement columns: viewed (entrants who saw the guide) and clicked (entrants who interacted with it), plus the derived clickRate. Survey and VOC email steps are not Orchestrate journey deliverables and carry metricUnavailableReason instead of email metrics. Other unsupported step types carry no metrics and a metricUnavailableReason instead. Use getOrchestrateJourneySteps for the full step graph, getOrchestrateEmailMetrics for a single standalone email, getOrchestrateJourneyMetrics for journey-level goal attainment, and guideMetrics for deep single-guide analytics (completions, dismissals, polls, NPS, goal adoption).

USE FOR: Comparing how each step of an Orchestrate journey performed side by side: email delivery/open/click rates and guide viewed/clicked engagement per step, as shown on the journey metrics page.

EXAMPLES:

  • How did each step in orchestrate journey 123 perform last month?
  • Show per-step open and click rates for orchestrate journey abc between 2025-01-01 and 2025-01-31
  • Which email step in this orchestrate journey had the best open rate?
  • Compare guide view and click counts across the steps of orchestrate journey 123

NOT FOR: The journey step graph or message IDs without metrics (use getOrchestrateJourneySteps). Metrics for a single email by ID (use getOrchestrateEmailMetrics). Deep single-guide analytics like completions, dismissals, polls, NPS, or goal adoption (use guideMetrics). Journey-level rollup metrics or per-step journey-goal attainment (use getOrchestrateJourneyMetrics). Per-visitor step engagement lists (use getOrchestrateJourneyStepVisitors).

WORKFLOW: Call listOrchestrateJourneys to discover journey IDs, then call this tool with journeyId and a date range to get per-step metrics.

RETURNS:

  • steps: an array of message steps in execution-flow order. Each step has: stepId, stepType, position, messageId, messageType, provider (plus the per-step metric fields below)
  • steps[].position: 0-based index of the step in the journey's execution flow across ALL nodes (start/exit/condition nodes also consume positions, so message-step positions are non-contiguous); cross-reference with getOrchestrateJourneySteps
  • steps[].email: per-step email metrics among journey entrants (sent, delivered, opened, clicked, bounced, unsubscribed, complaint and the derived rates; openRate/clickRate are of delivered); present only for email steps. The page surfaces opened and clicked per step; the remaining counts are the same entrant-scoped events
  • steps[].guide: per-step guide engagement matching the journey metrics page - viewed (journey entrants with a guide-seen event), clicked (journey entrants with a guide-interaction event), and clickRate (clicked/viewed %); present only for guide steps. Completions, dismissals, polls, NPS, and goal adoption are not per-step here - use guideMetrics
  • steps[].metricUnavailableReason: present when both email and guide are null - step_type_not_supported (unsupported step type, or survey/VOC email), or message_not_found (linked email/guide missing)
  • steps[]: every count is scoped to visitors who entered this journey within [startDate, endDate]; a step the caller cannot access (no view permission on the message's application) returns a zero-valued metrics block, not an error or a missing step, matching the journey metrics page
  • journeyId, name, status, startDate, endDate, and stepCount (number of message steps returned) are top-level fields for orientation

The maximum time range for this tool is 367 days.

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) PENDO_SAMPLE_DATA_SUB (5739608213684224) (Demo) Pendo Experience (6591622502678528)

Parameters (4 required, 1 optional)
Required
endDatestring

Query end date in YYYY-MM-DD format (e.g., '2025-01-31'). Inclusive.

journeyIdstring

Orchestrate journey ID whose per-step metrics to fetch.

startDatestring

Query start date in YYYY-MM-DD format (e.g., '2025-01-01'). Inclusive.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
userQuerystring

The original user query or question that triggered this tool call.

getOrchestrateJourneySteps

getOrchestrateJourneySteps
Full Description

Get the ordered step graph (nodes and edges) for a single Orchestrate journey by ID.

Returns the journey's structure only: each step's type, position, and linked message IDs, plus the edges connecting the steps. Does NOT return per-step metrics (sends, opens, clicks); use getOrchestrateJourneyStepMetrics for those. Use listOrchestrateJourneys to discover journey IDs and getOrchestrateJourney for journey-level config.

USE FOR: Inspecting the ordered steps of an Orchestrate journey: step types (start, message, condition, exit), the order/position of each step, the message ID and message sub-type (email or guide) of each message step, durationInDays (Email: days until the next step; Guide: days the guide stays active/eligible), and the edges that connect the steps.

EXAMPLES:

  • Show the steps of orchestrate journey 123
  • What messages are in this orchestrate journey?
  • List the steps and their order for orchestrate journey xyz
  • What is the structure of this orchestrate journey?
  • Which guide/email is sent at each step of orchestrate journey 123?

NOT FOR: Per-step performance metrics like sends, opens, or clicks (use getOrchestrateJourneyStepMetrics). Journey-level configuration such as audience, goal, or scheduling (use getOrchestrateJourney). Listing journeys without an ID (use listOrchestrateJourneys). Email content (use getOrchestrateEmail).

WORKFLOW: Call listOrchestrateJourneys to discover journey IDs, then call this tool with journeyId to retrieve the journey's steps and how they connect. Use messageId (emailId/guideId) from a step when calling getOrchestrateJourneyStepMetrics or getOrchestrateJourneyStepVisitors; stepId is a fallback graph node id.

RETURNS:

  • steps: journey nodes in execution-flow order (same order the Orchestrate editor renders, walking from the start node; a condition's Yes branch precedes its No branch). position is the 0-based index in that flow order
  • name: for message steps this is the linked email/guide's display name (as shown in the Orchestrate editor); for other steps it is the node's label and may be empty
  • message steps additionally include messageId, messageType (Email | Guide), provider, durationInDays (Email: days until the next step; Guide: days the guide stays active/eligible for the visitor)
  • edges: the connections between steps (from, to, edgeType where edgeType is Regular for linear steps or Yes/No for condition branches)
  • startNodeId and stepCount (number of message steps) for quick orientation

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) PENDO_SAMPLE_DATA_SUB (5739608213684224) (Demo) Pendo Experience (6591622502678528)

Parameters (2 required, 1 optional)
Required
journeyIdstring

Orchestrate journey ID whose steps to fetch.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
userQuerystring

The original user query or question that triggered this tool call.

getSegment

getSegment
Full Description

Returns a single Pendo visitor segment by ID, including its name, definition in LLM-friendly DSL form, and optionally the guides, Orchestrate journeys, reports, compound segments, and session-replay apps that reference it.

USE FOR: Inspect or read a saved segment's rules. Use when you need the current definition before modifying it, or when you need to know where a segment is in use.

EXAMPLES:

  • Show me the definition of segment abc123.
  • What guides are using segment xyz789?

RETURNS:

  • id: the segment ID.
  • name: human-readable segment name.
  • description: optional segment description (omitted if empty).
  • shared: whether the segment is publicly shared.
  • summary: plain-English description of the segment rules with entity names resolved.
  • definition: the segment rules in DSL form - same format accepted by create and update Segment tools. Omitted for segments authored outside the agent workflow that use features the DSL can't represent, and for segments with no rule-based definition (e.g. segment-flag or auto-managed segments).
  • note: only set when definition is omitted; explains why the segment can't be represented as DSL. Such segments are readable but not editable via the agent's update path.
  • usedBy: guides, Orchestrate journeys, reports, compound segments, and session-replay apps that reference this segment. Only present when includeUsedBy is true.
Parameters (2 required, 2 optional)
Required
idstring

ID of the segment to retrieve, as returned by createSegment or segmentList.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
includeUsedByboolean

When true, returns the guides, Orchestrate journeys, reports, compound segments, and session-replay apps that reference this segment. Omit when you only need the definition.

Default: False
userQuerystring

The original user query or question that triggered this tool call.

guideEffectivenessMetrics

guideEffectivenessMetrics
Full Description

Dashboard-consistent, visitor-weighted Guide Effectiveness metrics for every guide, with optional comparison across up to 4 segments. Returns one row per guide plus an overview summary of averages across the matched set. Rates are visitor-weighted exactly as the Guide Effectiveness dashboard computes them: engagement = distinct visitors who interacted / distinct visitors who viewed; completion = distinct visitors who reached the last step / distinct visitors who reached the first step (multi-step guides only); goal adoption = converted visitors / total visitors (guides with a conversion goal only). Every rate ships with its raw numerator and denominator so sample size is visible. Aggregates cover the whole date range (no time-series buckets). Use sortBy to rank guides by a chosen metric, ascending or descending. IMPORTANT: When presenting results to the user, always state the active filters alongside the data: date range, app (if specified), segment(s), status filter, and activation filter. This lets users verify exactly which data scope produced the numbers.

USE FOR: Reporting guide effectiveness that matches the Guide Effectiveness dashboard (engagement %, completion %, goal-adoption %), and comparing those rates across up to 4 segments.

EXAMPLES:

  • How effective are our guides over the last 30 days?
  • Compare guide engagement and completion between the power-users and trial segments
  • Which guides have the lowest completion rate this month?
  • Show goal adoption for guides that have a conversion goal

NOT FOR: Simple cross-guide ranking by raw views/dismissals (use aggregateGuideMetrics). Deep single-guide analysis with polls, NPS, or step funnels (use guideMetrics).

RETURNS:

  • meta: resolved dateRange (startDate/endDate), the segments compared, and guideCount
  • summary: per-segment overview - totalViews, totalFirstTimeViews, totalVisitors, engagementRate, completionRate, goalAdoptionRate
  • rows: one per guide with entityId, entityName, state, launchMethod, and per-segment metric blocks (rate + raw numerator/denominator). completionRate is null for single-step guides; goalAdoptionRate is null for guides without a conversion goal

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) PENDO_SAMPLE_DATA_SUB (5739608213684224) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (1 required, 13 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
activationstring

Optional launch-method filter, matched against the guide's activation (e.g., 'auto', 'badge', 'launcher', 'dom'). Omit to include all activation methods.

appIdstring

Optional application ID to filter by. If omitted, includes all applications the user can access.

dateRangeobject

Time window. For a rolling window use type='relative' with lastNDays. For a fixed calendar range use type='absolute' with startDate and endDate in YYYY-MM-DD.

guideCategoryIdsarray

Optional list of guide category group IDs to filter by. When provided, only guides in one of these categories are included. Omit to include guides from all categories.

guideIdsarray

Optional list of specific guide IDs to report on (e.g., ["abc123","def456"]). Omit to include all guides the caller can access.

includeAnonymousboolean

Whether to include unidentified visitors in the aggregates. Defaults to true.

limitnumber

Maximum number of guide rows to return in the response (1-200, default 20). Metrics are computed across all matched guides regardless of this limit; only the rows returned to the caller are capped. Rows are ordered by the sortBy parameter (default: totalVisitors, descending) before the limit is applied, so the returned rows are the true top/bottom N by the chosen metric.

Default: 20
pageIdsarray

Optional list of page IDs to filter by. When provided, only guides whose first step is on one of these pages are included. Use "sitewide" to match guides with no page association. Omit to include all guides regardless of page.

productAreaIdsarray

Optional product area IDs for the request.

segmentsarray

Optional comparison cohorts (max 4). Each cohort's metrics are returned in its own block in summary and per-guide rows. Omit to report across all visitors ('everyone').

sortByobject

Optional sort over the returned guides. Omit to keep the default order (totalVisitors, descending). Rates aggregate each guide's numerator and denominator across all compared segments; guides with no value for the chosen rate (completionRate for single-step guides, goalAdoptionRate for guides without a conversion goal) always sort last, regardless of direction.

statusstring

Optional guide state filter: 'public', 'staged', 'draft', or 'disabled'. Omit to include all states.

Options:publicstageddraftdisabled
userQuerystring

The original user query or question that triggered this tool call.

Guide Metrics

guideMetrics
Full Description

Get comprehensive guide performance analysis including reach, engagement, and effectiveness metrics.

USE FOR: Analyzing specific guide performance with core metrics like reach, engagement rates, and completion analysis.

EXAMPLES:

  • How is the onboarding guide performing this month?
  • Show me metrics for the tooltip guide
  • What are the completion rates for the walkthrough guide?
  • How many users are dismissing the announcement guide?
  • Show me daily guide completion trends over the last 2 weeks
  • What's the weekly pattern for guide engagement?

RETURNS:

  • Reach metrics: total views, unique viewers, unique accounts
  • Engagement metrics: views per user, total interactions
  • Effectiveness metrics: completion rate, dismissal rate
  • Poll unique visitor response counts and total response counts grouped by pollId (for guides with polls)
  • NPS metrics (for NPS guides): npsScore, avgScore, numPromoters, numNeutral, numDetractors, per-score distribution (responseCount0 through responseCount10)
  • Range periods (dayRange/weekRange): single aggregated values across entire date range
  • Iterative periods (daily/weekly): time series with metrics broken down by day/week
  • Raw aggregation results in JSON format

The maximum time range for this tool is 93 days.

PERFORMANCE: This is a fast-running tool.

Parameters (4 required, 3 optional)
Required
endDatestring

Query end date in YYYY-MM-DD format (e.g., '2025-01-31'). Inclusive.

guideIdstring

The exact guide ID to analyze.

startDatestring

Query start date in YYYY-MM-DD format (e.g., '2025-01-01'). Inclusive.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
blackliststring

Blacklist behavior: 'apply' (use blacklist, normal behavior), 'ignore' (do not use blacklist), 'only' (invert blacklist, return only blacklisted activity)

Options:applyignoreonly
Default: apply
periodstring

Time period format: 'dayRange'/'weekRange' for single totals across entire period (e.g., 'total views: 1000'), 'daily'/'weekly' for time series showing trends (e.g., 'Jan 1: 100, Jan 2: 150, Jan 3: 200'). Use dayRange/weekRange for summary metrics, use daily/weekly for trend analysis.

Options:dayRangeweekRangedailyweekly
Default: dayRange
userQuerystring

The original user query or question that triggered this tool call.

guidePollResponses

guidePollResponses
Full Description

Get per-poll response distribution and per-visitor response rows for a guide's non-NPS polls. Returns {meta, summary, rows}: summary.polls lists each poll with its question and response distribution; rows are visitor-keyed and pivoted - one column per poll, null where a visitor did not respond. limit (default 10, max 200) applies to the pivoted visitor rows after joining across all polls.

USE FOR: Answering questions about how visitors responded to polls in a guide: response distributions, individual visitor answers, and per-poll breakdowns. Not for NPS guide score metrics.

EXAMPLES:

  • What were the responses to the poll in the onboarding guide?
  • Show me the response distribution for guide X polls
  • Which visitors answered 'Yes' to the helpfulness poll?
  • What did visitors respond to the polls in guide G last month?

RETURNS:

  • meta.dateRange: resolved startDate and endDate (YYYY-MM-DD)
  • summary.polls: array of {pollId, question, distribution: [{response, count}]} for each poll. For free-text polls (open-ended responses), freeText is true and distribution is omitted because every response is unique - refer to the per-visitor rows instead.
  • rows: per-visitor with visitorId, accountId, browserTime, and one column per pollId (null if no response)
Parameters (3 required, 6 optional)
Required
dateRangeobject

Time window. For a rolling window use type='relative' with lastNDays. For a fixed calendar range use type='absolute' with startDate and endDate in YYYY-MM-DD.

guideIdstring

The guide ID to fetch poll responses for.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
accountIdstring

Optional Pendo account ID to filter responses to a specific account.

includeAnonymousboolean

Whether to include unidentified visitors in the results. Defaults to true.

Default: True
limitnumber

Maximum number of visitor rows to return (default 10, max 200). Applies to pivoted rows after joining across all polls.

Default: 10
pollIdsarray

Optional list of poll IDs to restrict results to. Omit to return all non-NPS polls on the guide.

segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

userQuerystring

The original user query or question that triggered this tool call.

guideUsage

guideUsage
Full Description

Get per-visitor or per-account usage breakdown for a single guide, with time-on-guide and new vs returning viewers. totalViews excludes continue-resumed guideSeen events to match the Pendo guide-details UI. For poll guides, includes per-poll response counts and response rate in summary.

USE FOR: Per-visitor or per-account guide engagement - e.g. top visitors by time on guide, which accounts are completing vs dismissing, new vs returning viewer counts. With includeElements=true, also attributes each step's clicks to the individual buttons/links on it.

EXAMPLES:

  • Top 20 visitors by time on guide X in the last 30 days
  • Which accounts are dismissing the onboarding guide most?
  • How many new vs returning viewers did the walkthrough have this month?
  • Show me per-visitor completion data for the tooltip guide
  • Is drop-off at step 3 happening via the CTA or by dismissing the guide?
  • Which button on the last step of the onboarding guide gets clicked most?

RETURNS:

  • meta.dateRange: resolved startDate and endDate (YYYY-MM-DD)
  • summary: totalViews, completions, dismissals, uniqueVisitors, uniqueAccounts, completionRate, dismissalRate, viewsPerUser, avgTimeOnGuide, medianTimeOnGuide (duration objects {seconds, display}), newViewers, returningViewers, isPoll
  • summary.polls (poll guides only): per-pollId uniqueResponseCount and totalResponseCount
  • rows: per-visitor or per-account rows with views, completions, dismissals, daysActive, lastSeen (timestamp object {iso, display}), timeOnGuide (duration object {seconds, display}) (per-account rows also include uniqueVisitors), sorted and limited
  • steps (only when includeSteps or includeElements is true): per-step array in guide step order, each with stepId, name, uniqueVisitors, viewCount. Single-step guides return one entry; step views include continue-resumed views to match the Pendo step funnel.
  • steps[].elements (only when includeElements=true): the step's clicked buttons/links, highest clicks first, each with uiElementId, text, type ('Button', 'Close Button', 'Link', 'Task Item', 'Image', 'Swiped Left', 'Swiped Right' or 'Unknown'), actions (what the click does, e.g. 'Next Step', 'Dismiss Guide', 'External URL', 'Go to Step (2)'), clicks, uniqueVisitors, percentOfStepClicks. Compare an element's uniqueVisitors against its step's uniqueVisitors to attribute drop-off. Only clicked elements appear, and elements since removed from the step are still counted.

The maximum time range for this tool is 367 days.

Parameters (3 required, 10 optional)
Required
dateRangeobject

Time window. For a rolling window use type='relative' with lastNDays. For a fixed calendar range use type='absolute' with startDate and endDate in YYYY-MM-DD.

guideIdstring

The exact guide ID to analyze.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
accountIdstring

Optional Pendo account ID. When provided, results are restricted to activity from that account.

groupBystring

'visitor' (default) groups rows by visitorId; 'account' groups by accountId and excludes events with empty accountId.

Options:visitoraccount
Default: visitor
includeAnonymousboolean

Whether to include unidentified visitors in the summary and rows. Defaults to true.

Default: True
includeElementsboolean

Whether to break each step's clicks down by the individual buttons/links on it, as an 'elements' array on every step. Implies includeSteps, so the step's view counts come back alongside its element clicks. Use this to attribute drop-off at a step to a specific element (CTA vs close button). Defaults to false.

Default: False
includeStepsboolean

Whether to include a per-step breakdown (uniqueVisitors and viewCount per step) in a top-level 'steps' array. Defaults to false.

Default: False
limitnumber

Maximum number of rows to return (1-200, default 10). Summary is independent of limit; set limit=1 if you only need the top row.

Default: 10
segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

sortBystring

Field to sort rows by: 'views' (default), 'completions', 'dismissals', 'daysActive', 'lastSeen', 'timeOnGuide'.

Options:viewscompletionsdismissalsdaysActivelastSeentimeOnGuide
Default: views
sortOrderstring

'desc' (default, highest first) or 'asc'.

Options:ascdesc
Default: desc
userQuerystring

The original user query or question that triggered this tool call.

linkIdeaAndFeedback

linkIdeaAndFeedback
Full Description

Links an existing feedback item to an existing idea, associating the customer evidence with the feature request. Votes from the feedback item are propagated to the idea's vote count.

USE FOR: When the user explicitly asks to link, connect, or associate a feedback item with an idea, or vice versa

EXAMPLES:

  • Link feedback abc123 to idea xyz456
  • Connect this feedback to that idea
  • Associate idea xyz456 with feedback abc123

RETURNS:

  • Confirmation that the idea and feedback item have been linked

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (3 required, 1 optional)
Required
feedbackItemIdstring

ID of the feedback item to link to the idea.

ideaIdstring

ID of the idea to link to.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
userQuerystring

The original user query or question that triggered this tool call.

List Ai Agent Issues

list_ai_agent_issues
Full Description

Lists detected issues in AI agent conversations with instance counts and conversation counts. Returns a table of issue summary, instance count, and conversation count per issue. It also returns visitorIds and accountIds who experienced the issue.

USE FOR: Finding what problems or issues users encountered when using AI agents (e.g., incorrect answers, refusals, errors). Use when the user asks about common issues, problems, or failures with a specific agent.

EXAMPLES:

  • What are the common issues my users are encountering using my ABC agent in the last 30 days?
  • What problems have users been encountering when using Acme agent in my Acme application lately?
  • Have we seen reduced occurrences of issues with incorrect answers in our fooBar agent since last month?
  • What models are most often used when users face problems with the chat agent in ScramCorp app?

NOT FOR: Use list_use_cases for topic/cluster analysis of conversations. Use list_ai_agents to get agent IDs and names first when the user has not specified an agent.

RETURNS:

  • Table of issues: summary, instance count, conversation count, agentId, appId, visitorIds, and accountIds.
  • Sorted by conversation count descending. Limited to 500 rows; narrow by date range if needed.

The maximum time range for this tool is 90 days.

PERFORMANCE: This is a slow-running tool.

Parameters (4 required, 3 optional)
Required
agentIdstring

Required. The AI agent ID to filter by (from list_ai_agents). Issues are clustered per agent to match the emergent issues table.

endDatestring

Query end date in YYYY-MM-DD format (e.g., '2025-01-31'). Inclusive.

startDatestring

Query start date in YYYY-MM-DD format (e.g., '2025-01-01'). Inclusive.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
appIdstring

Application ID to filter by. If omitted, returns data across all applications the user can access.

limitnumber

Maximum number of issue rows to return. Range: 1-500. Default: 100.

Default: 100
userQuerystring

The original user query or question that triggered this tool call.

List Ai Agents

list_ai_agents
Full Description

Lists all AI agents that the user has access to. AI agents are conversational assistants that can be deployed on specific pages or app-wide.

AI agents have the ability to collect conversations, cluster prompts by topics/use cases, and calculate metrics like conversation counts and rage prompt detection.

This tool returns agent ids and names for usage with other related agent tools.

PERFORMANCE: This is a fast-running tool.

Parameters (1 required, 1 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
userQuerystring

The original user query or question that triggered this tool call.

List All Applications

list_all_applications
Full Description

Pendo data is split into subscriptions, which share a set of visitors and accounts. Each subscription is split into separate applications. This call returns a list of all the names and ids of all the subscriptions this user has access to, along with the names and ids of all of the applications in that subscription.

Most tools for this mcp require at least a subscription id; many also require an application id. Application ids are not unique across different subscriptions.

PERFORMANCE: This is a fast-running tool.

Parameters (0 required, 1 optional)
Optional
userQuerystring

The original user query or question that triggered this tool call.

List Product Areas

list_product_areas
Full Description

Returns all product areas for a subscription — their IDs, names, and descriptions. No search query required.

USE FOR: Enumerating all product areas or finding a productAreaId to pass to productAreaMemberActivity or other tools that require a productAreaId. Use this when the user asks about available product areas or when you need to present them a list to choose from.

EXAMPLES:

  • What product areas do we have?
  • List all product areas for this subscription
  • What product area should I use for onboarding? → call list_product_areas to find the matching name and get its ID
  • Show me all available product areas

NOT FOR: Querying activity or engagement metrics within a product area — use productAreaMemberActivity instead.

RETURNS:

  • Array of all product areas with: id, name, description
  • All product areas are returned in a single call — no pagination needed

PERFORMANCE: This is a fast-running tool.

Parameters (1 required, 1 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
userQuerystring

The original user query or question that triggered this tool call.

List Spaces

list_spaces
Full Description

Lists the Pendo Spaces the current user can access in this subscription. A Pendo Space is a collaborative canvas of product artifacts (pages, features, guides, notes, etc.) that a team curates together; think of it as a shared workspace or board inside Pendo. Returns JSON from the Spaces service (opaque shape — field names depend on the Spaces API response). Use this to discover a space id before calling get_agent_context with resource_type "space" and that id as resource_id.

PERFORMANCE: This is a fast-running tool.

Parameters (1 required, 1 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
userQuerystring

The original user query or question that triggered this tool call.

List Use Cases

list_use_cases
Full Description

Use case: Get AI agent conversation clustering analysis with comprehensive metrics. Analyzes conversations and prompts, grouping them by semantic topics/use cases.

Requires: agentId which can be obtained using the list_ai_agents tool. Date range is required.

Usage note: You should generally get the user to specify how many days back they want to analyze as well as for which agent.

Returns: Metrics per cluster: conversation counts, visitor engagement, account usage, retention rates, rage prompt detection, and lists of visitorIds and accountIds per use case.

The maximum time range for this tool is 90 days.

PERFORMANCE: This is a fast-running tool.

Parameters (4 required, 1 optional)
Required
agentIdstring

The AI agent ID to analyze retrieved from the list_ai_agents tool

endDatestring

Query end date in YYYY-MM-DD format (e.g., '2025-01-31'). Inclusive.

startDatestring

Query start date in YYYY-MM-DD format (e.g., '2025-01-01'). Inclusive.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
userQuerystring

The original user query or question that triggered this tool call.

listAccounts

listAccounts
Full Description

List the accounts that match a segment or fuzzy-search account display names or IDs. Segment mode (the default) defines the cohort with a segmentPipeline - either a saved Pendo segment reference or a full inline pipeline produced by the segment-builder tool. Search mode fuzzy-matches both the configured account display-name field and account ID.

USE FOR: Listing the accounts in a segment/cohort, getting the account total, reading account metadata fields for those accounts, or resolving a named account to its ID without an application ID.

EXAMPLES:

  • List the accounts in segment X
  • Which accounts match these metadata criteria?
  • How many accounts are in this segment?
  • Show me accounts in segment X with their ARR and company size
  • Find the account called Acme Inc

RETURNS:

  • summary: numAccounts (the full segment total in segment mode; the number of returned matches in search mode)
  • rows in both modes: accountId, name, description when available, and requested fields in a metadata object keyed by metadata path (for example, "metadata.auto.lastvisit"), capped by limit
  • Search rows also include relevance. Only sufficiently relevant fuzzy matches are returned; unrelated accounts are omitted
Parameters (1 required, 6 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
limitnumber

Maximum number of account rows to return (1-200, default 10). In segment mode, the summary total is independent of limit; set limit=1 if you only need the count.

Default: 10
modestring

How to choose accounts. "segment" (default) lists accounts matching segmentPipeline. "search" fuzzy-matches account display names and account IDs using search.

Options:segmentsearch
Default: segment
searchstring

Account search query. Required when mode is "search"; not allowed when mode is "segment".

segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

selectarray

List of account metadata fields to return for each account, in either mode. Only exact field names may be used, and should come from the accountMetadataSchema tool (e.g. "account.custom.ARR"; the "metadata.custom.ARR" form also works). If omitted, no metadata fields are returned.

userQuerystring

The original user query or question that triggered this tool call.

listAiAgentIssues

listAiAgentIssues
Full Description

Lists detected (emergent) issues in AI agent conversations with instance counts and conversation counts. Returns a table of issue name (clusterName), summary, instance count, and conversation count per issue, plus a sample of conversationIds/eventIds for deep-diving via agentAnalyticsIssueAnalysis. It also returns visitorIds and accountIds who experienced the issue.

USE FOR: Finding what problems or issues users encountered when using AI agents (e.g., incorrect answers, refusals, errors). Use when the user asks about common issues, problems, or failures with a specific agent. Refer to an issue by its clusterName, never its numeric clusterId.

EXAMPLES:

  • What are the common issues my users are encountering using my ABC agent in the last 30 days?
  • What problems have users been encountering when using Acme agent in my Acme application lately?
  • Have we seen reduced occurrences of issues with incorrect answers in our fooBar agent since last month?
  • What models are most often used when users face problems with the chat agent in ScramCorp app?

NOT FOR: Use listUseCases for topic/cluster analysis of conversations. Use listAiAgents to get agent IDs and names first when the user has not specified an agent.

RETURNS:

  • Table of issues: summary, instance count, conversation count, agentId, appId, visitorIds, and accountIds.
  • Sorted by conversation count descending. Limited to 500 rows.

The maximum time range for this tool is 90 days.

Parameters (4 required, 5 optional)
Required
agentIdstring

Required. The AI agent ID to filter by (from listAiAgents). Issues are clustered per agent to match the emergent issues table.

endDatestring

Query end date in YYYY-MM-DD format (e.g., '2025-01-31'). Inclusive.

startDatestring

Query start date in YYYY-MM-DD format (e.g., '2025-01-01'). Inclusive.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
appIdstring

Optional application ID to filter by. If omitted, includes all applications the user can access.

granularitynumber

Clustering granularity: higher values yield more, finer-grained clusters. Range: 1-5. Default: 3.

Default: 3
limitnumber

Maximum number of issue rows to return. Range: 1-500. Default: 100.

Default: 100
segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

userQuerystring

The original user query or question that triggered this tool call.

listAiAgents

listAiAgents
Full Description

Lists all AI agents that the user has access to. AI agents are conversational assistants that can be deployed on specific pages or app-wide.

AI agents have the ability to collect conversations, cluster prompts by topics/use cases, and calculate metrics like conversation counts and rage prompt detection.

This tool returns agent ids and names for usage with other related agent tools.

Parameters (1 required, 1 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
userQuerystring

The original user query or question that triggered this tool call.

listAllApplications

listAllApplications
Full Description

Pendo data is split into subscriptions, which share a set of visitors and accounts. Each subscription is split into separate applications. This call returns a list of all the names and ids of all the subscriptions this user has access to, along with the names and ids of all of the applications in that subscription.

Most tools for this mcp require at least a subscription id; many also require an application id. Application ids are not unique across different subscriptions.

Parameters (0 required, 1 optional)
Optional
userQuerystring

The original user query or question that triggered this tool call.

listBusinessObjectMetadata

listBusinessObjectMetadata
Full Description

List every metadata field declared on one already-identified designated business OBJECT (see listCustomObjects) - the fields customers send on metadata events for that object (e.g. 'type', 'isShared'), the same schema accountMetadataSchema/visitorMetadataSchema expose for accounts/visitors. Empty metadataSchema means the customer has never sent metadata events for this object.

USE FOR: The user asks what metadata fields, properties, or dimensions are available on a business object; or resolveBusinessObject reported a term as unmatched (with or without a suggestion) and you need the full set of declared fields to find the right one, e.g. to offer the user a corrected choice.

EXAMPLES:

  • What metadata fields are available on the 'reportId' object?
  • resolveBusinessObject said 'type' doesn't match reportId's schema - what fields does it actually have?

NOT FOR: Checking whether SPECIFIC terms from a question belong to the object - use resolveBusinessObject, which also fuzzy-suggests close matches for an unmatched term without needing the full list. Listing which business objects exist in the first place - use listCustomObjects. Any per-object metric - use objectAnalyticsActiveCount, objectAnalyticsBreakdown, or objectEventBreakdown.

RETURNS:

  • field, kind, group/metadataKind (historical objects only): the object identifier that was checked, echoed back exactly as it should be passed to objectAnalyticsActiveCount, objectAnalyticsBreakdown, or objectEventBreakdown.
  • metadataSchema: every declared metadata field on this object, keyed by its normalized field name, with type/cardinality/sample values - empty when the customer has never sent metadata events for it.

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) PENDO_SAMPLE_DATA_SUB (5739608213684224) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (2 required, 1 optional)
Required
objectPropertyobject

The business object to list declared metadata fields for, e.g. from listCustomObjects. field (required) is the object's event property name, e.g. 'reportId'. kind (optional, default 'event') is 'event' or 'historical'. group and metadataKind are required ONLY when kind='historical' (metadataKind is 'visitor', 'account', or 'parentAccount').

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
userQuerystring

The original user query or question that triggered this tool call.

listCountables

listCountables
Full Description

listCountables is a tool to find, search, look up, or list pages, features, or track events by name and return their entity IDs. These entities are collectively called "countables" - the tagged elements and custom events that Pendo tracks in your application. Use the type parameter to select which kind to list.

This is the entity lookup tool to use before single-page, single-feature, or single-track-event usage analytics when the user provides a name instead of an ID. Relevant analytics questions include page views, feature clicks, event counts, unique visitor or "people" counts, unique account counts, time on page, frustration clicks, and other entity usage metrics.

The trackEvent type corresponds to what other tools call trackType or TrackType.

Supports search via the search param with a searchType selector: "semantic" for natural-language queries ranked by meaning, "fuzzy" for keyword matching on names and descriptions, or "substring" for case-insensitive containment match on name. Both search and searchType are required together. For features, pageId restricts discovery to features associated with one known page. Offset is ignored when search is used; use limit to control result count.

USE FOR: Resolving a named page, feature, or track event to its ID before calling entityUsage; listing features associated with a page; listing or browsing countables by name; auditing what is tagged in an app; semantic, fuzzy, or substring search for countable entities.

EXAMPLES:

  • List all pages
  • Show me features for this app
  • Which features are associated with page X?
  • List track events matching 'checkout'
  • Find pages with 'dashboard' in the name
  • What track events are defined?
  • Find features related to user onboarding
  • Search for pages about checkout flow
  • Find the ID for 'Page X' before checking how many people viewed it

NOT FOR: Listing guides. Listing product areas. Usage analytics, click counts, visitor counts, or activity rankings.

WORKFLOW: For analytics about one named entity, search here first. Prefer searchType='substring' with the entity name exactly as the user supplied it; if that finds no match, retry with searchType='fuzzy' or 'semantic'. Then pass the matching ID to entityUsage. Do not conclude that the entity does not exist merely because it was absent from an aggregateEntityUsage ranking, which returns only a limited set of ranked entities.

RETURNS:

  • Summary info for each matching entity: ID, name, description, and eventPropertyNames (custom property names attached to the countable). Pages also include URL rules and exclude rules. Features include pageId and elementPathRules (CSS selector rules identifying the tagged UI element).
  • When search is used: results include a relevance score
Parameters (2 required, 8 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

typestring

The kind of entity to list: page (tagged URLs), feature (tagged UI elements), or trackEvent (custom events sent via Track API - called trackType in some other tools).

Options:pagefeaturetrackEvent
Optional
appIdstring

Optional application ID to filter by. If omitted, includes all applications the user can access.

limitnumber

Maximum number of results to return.

Default: 50
offsetnumber

Number of matching results to skip before returning. Use with limit to paginate through large result sets.

Default: 0
pageIdstring

Optional page ID. Only valid when type='feature'; restricts results to features associated with this page.

productAreaIdstring

Optional product area ID for the request.

searchstring

Search query for finding countables. Behavior depends on searchType: with "semantic", this is a natural-language query ranked by meaning (e.g., "user onboarding flow"); with "fuzzy", this is a keyword query matched against names and descriptions (e.g., "checkout", "dashboard"); with "substring", this is a case-insensitive containment match on name only (e.g., "board" matches "onboarding"). Must be used together with searchType.

searchTypestring

How to search. "semantic" ranks results by meaning using embedding similarity - best for natural-language questions. "fuzzy" matches keywords against names and descriptions - best for known terms. "substring" matches entities whose name contains the search string (case-insensitive) - best for exact fragments. Requires search to also be specified.

Options:semanticfuzzysubstring
userQuerystring

The original user query or question that triggered this tool call.

listCustomObjects

listCustomObjects
Full Description

List a subscription's designated business OBJECTS - the custom event properties that have been marked as analyzable business entities (e.g. 'dashboardId', 'venueId', 'orderId'). Returns each object's underlying event property name (its field) and kind, which are exactly the objectProperty argument the objectAnalytics* tools take, plus its customer-facing displayName/description when an admin has set them. Objects are NOT pages, features, or track events.

USE FOR: Discovering which business objects a subscription has, and grounding an ambiguous entity name before an objectAnalytics* call. Use it when a name could mean either a business object or a page/feature (e.g. 'dashboards') to confirm the object exists and get the exact objectProperty.field to pass to objectAnalyticsActiveCount or objectAnalyticsBreakdown. The search term matches the object's field name, displayName, or description, so a customer-facing label (e.g. 'Reports') resolves even when it doesn't textually overlap the underlying field key (e.g. 'rp_obj_4471').

EXAMPLES:

  • What business objects can I analyze in this subscription?
  • Is 'dashboard' a business object or a page?
  • List the custom objects available for Object Analytics
  • Which object property identifies venues?

NOT FOR: Listing pages, features, or track events - use listCountables. Counting or ranking objects, or any per-object metric - use objectAnalyticsActiveCount or objectAnalyticsBreakdown. This returns only the object property definitions, never metrics. Confirming whether a METADATA TERM (e.g. 'size', 'region', 'category') actually belongs to a specific object's own schema - use resolveBusinessObject.

WORKFLOW: To resolve a specific object by name, prefer searchType='substring' with the name as the user gave it; if that returns no match, retry with searchType='fuzzy' to survive a misspelling or a loosely-worded label. Choosing the mode is your call - the server never falls back automatically. If the question references metadata terms rather than - or in addition to - one of the object names returned here, do not assume a term belongs to whichever object seems closest. Pick the most likely candidate object from this list (asking the user first if more than one plausibly fits) and call resolveBusinessObject with that object's field (and kind/group/metadataKind for historical objects) plus the terms, to confirm they're actually part of its schema before running an objectAnalytics* query.

RETURNS:

  • One entry per designated object property: field (the event property name to pass as objectProperty.field, e.g. 'dashboardId'), and kind ('event' or 'historical').
  • displayName and description: the customer-facing label and description set by an admin, when present. Absent when never set.
  • For historical (promoted visitor/account/parentAccount metadata) objects, group and metadataKind are also included.
  • promotedAt (epoch milliseconds): when the property became an analyzable object. This is the activation floor the objectAnalytics* tools apply internally - events before it are excluded - so use it to caveat data availability or pick a start date that postdates promotion.
  • matchedFields (substring search only): which of field/displayName/description the term matched, so you can see why an object was returned. A match on field or displayName is a strong signal; a description-only match is weaker (descriptions are free-form sentences, so the term may appear incidentally) - prefer field/displayName matches when ranking candidates.
  • relevance (fuzzy search only): a similarity score for ranking - higher means a closer match to the search term. Rank candidates by it; matchedFields is absent in this mode.

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) PENDO_SAMPLE_DATA_SUB (5739608213684224) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (1 required, 3 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
searchstring

Optional search term matched against the object's field name, displayName, OR description (e.g. 'dash' matches field 'dashboardId'; 'report' matches displayName 'Reports' even when the field is 'rp_obj_4471'). How it is matched depends on searchType. Omit to return all designated objects.

searchTypestring

How the search term is matched. 'substring' (the default when omitted) does a case-insensitive containment match on field name, displayName, or description. 'fuzzy' scores objects by string similarity to the term against name and description - use it to recover from a misspelling or loosely-worded label when substring finds nothing. Only meaningful together with search.

Options:substringfuzzy
userQuerystring

The original user query or question that triggered this tool call.

listGuideCategories

listGuideCategories
Full Description

Returns all guide categories for a subscription - their IDs, names, and platform (web or mobile). Each category exists as a paired web+mobile variant with distinct IDs; use the platform filter to narrow results.

USE FOR: Finding a guide category ID to associate a guide with a category, or enumerating which categories exist for a subscription. Pair with listGuides to see which guides belong to each category.

EXAMPLES:

  • What guide categories are set up for this subscription?
  • List all guide categories
  • Show me web guide categories
  • Which mobile guide categories exist?
  • What are the available guide categories and their IDs?

NOT FOR: Guide analytics or engagement metrics - use guideMetrics or guideUsage instead. To search or list guides themselves, use listGuides.

RETURNS:

  • Array of guide categories, each with: id, name, platform (web or mobile)
Parameters (1 required, 4 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
limitnumber

Maximum number of results to return.

Default: 50
platformstring

Filter by platform. Values: "web" or "mobile". If omitted, both web and mobile categories are returned (each category exists as two variants with distinct IDs).

Options:webmobile
searchstring

Optional fuzzy search string to search guide categories by name. Results are ranked by match quality. When omitted, all categories are returned.

userQuerystring

The original user query or question that triggered this tool call.

listGuideExperiments

listGuideExperiments
Full Description

List guide experiments (guide A/B tests) and return their IDs.

A guide experiment splits an audience across two or more variants to compare which performs better. Each variant is either a guide or the control group (no guide, shown as isControl). Experiments move through states: draft (not started), active (running), needsReview (finished, awaiting a decision), completed.

This is the lookup tool for resolving an experiment name to its ID, and for finding which experiment a guide is part of - filter by guideIds to answer "is this guide being A/B tested?". It returns experiment configuration only, not experiment results.

USE FOR: Listing or browsing guide experiments; resolving an experiment name to its ID; checking which experiment a guide belongs to (guideIds); listing experiments in a given state, such as which experiments are currently running.

EXAMPLES:

  • What guide experiments do we have?
  • Which guide experiments are currently running?
  • Is guide abc123 part of an experiment?
  • Show me guide experiments that have completed
  • List guide experiments for app 12345

NOT FOR: Guide content, targeting, or scheduling - use listGuides. Guide views, completion, or conversion metrics - use guideEffectivenessMetrics or aggregateGuideMetrics. Experiment results, audience rules, conversion goals, or which variant won - this tool returns configuration only.

RETURNS:

  • Array of experiments with: id, name, description, state, appId, startTime, endTime
  • variants per experiment: variant name, guideId, groupSize (percentage of the audience assigned to the variant, summing to 100), and isControl for the control group, which has no guide

FILTERING OPTIONS:

  • guideIds: only experiments that have one of these guides as a variant
  • state: only experiments in this state - draft, active, needsReview, completed
  • appId: only experiments scoped to that application

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) PENDO_SAMPLE_DATA_SUB (5739608213684224) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (1 required, 6 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
appIdstring

Optional application ID to filter by. If omitted, includes all applications the user can access.

guideIdsarray

Optional guide IDs (e.g., ["abc123","def456"]). Only experiments with at least one of these guides as a variant are returned. Omit to include all experiments.

limitnumber

Maximum number of results to return.

Default: 50
offsetnumber

Number of matching results to skip before returning. Use with limit to paginate through large result sets.

Default: 0
statestring

Filter experiments by state. Values: "draft" (not started), "active" (running), "needsReview" (finished, awaiting a decision on the winner), "completed" (finished and resolved). Omit to include all states.

Options:draftactivecompletedneedsReview
userQuerystring

The original user query or question that triggered this tool call.

listGuideOrdering

listGuideOrdering
Full Description

List the guide delivery order ("throttle order") for an app.

When multiple guides are eligible to show at the same time, the delivery order determines which guide takes precedence. This tool returns the ordered list of guides for the given app. An app with no ordering set returns an empty list.

Guides are capped by limit (default 50). totalGuides is the full ordering length; offset and returned describe the slice in guides. When returned < totalGuides the result is truncated - tell the user which range they're seeing (e.g. "showing 1-50 of 120") and use offset to page through the rest.

PRESENTATION (follow exactly): For EVERY guide, show ALL SIX of these columns, always in this order: Guide Name | Status | Segment | Page | Guide Category | Product Area Show every column even when most guides share a value and even when a column has no values. Segment is the readable segment name (e.g. "Everyone", "Browser: Chrome"). Page is "Sitewide" when the guide targets no specific page.

Do NOT show the raw guideId to the user. It is for your context only, to reference guides in follow-up tool calls.

EXAMPLES:

  • What is the guide delivery order for app xxx?
  • Which guide shows first when several are eligible?
  • Show me the throttle ordering for app xxx

RETURNS:

  • appId, appName, totalGuides, offset, returned, and the ordered guides for the app
  • totalGuides/offset/returned: the full ordering length and the returned slice - surface the range to the user when truncated
  • guides: in delivery order. Always display these six columns per guide: Guide Name, Status, Segment, Page, Guide Category, Product Area
  • guideId is context-only - never shown to the user
Parameters (2 required, 3 optional)
Required
appIdstring

Application ID to scope the request.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
limitnumber

Maximum number of results to return.

Default: 50
offsetnumber

Number of matching results to skip before returning. Use with limit to paginate through large result sets.

Default: 0
userQuerystring

The original user query or question that triggered this tool call.

listGuides

listGuides
Full Description

List and filter in-app guides, or fetch a single guide's full content.

Three modes: 1. List mode (default): Returns summary info (ID, name, state, type, scheduling) for each matching guide. 2. Expanded list mode (expand=true): Returns detailed guide metadata for each matching guide, including steps (type, advance method, targeting), polls, scheduling, recurrence, conversion tracking, and translation languages and statuses. Does not include guide content text - use guideId for that. 3. Single guide content mode (guideId=<id>): Fetches one guide by ID and returns its full structured content - step-by-step text extracted from the guide's building blocks, plus an activation URL which can be used to launch the guide if eligible. Use this when you need to read what a guide actually says to the user.

Supports search via the search param with a searchType selector: "semantic" for natural-language queries ranked by meaning, or "fuzzy" for keyword matching on guide names and descriptions. Offset is ignored when search is used; use limit to control result count.

Guides are interactive in-app experiences (tooltips, walkthroughs, banners, lightboxes, etc.) that guide end-users through tasks in their application.

EXAMPLES:

  • List all public guides
  • Show me draft guides
  • Find all walkthrough guides
  • Which guides are set to launch automatically?
  • List guides that have expired
  • Show me all tooltip guides that are currently staged
  • Show me the full details for all banner guides (use expand=true)
  • What does guide xyz say to the user? (use guideId)
  • Find guides about onboarding new users
  • Search for guides related to single sign-on setup

RETURNS:

  • List mode: summary info per guide (ID, name, description, state, type, launch method, scheduling timestamps)
  • Expanded mode: detailed guide metadata per guide (steps, polls, scheduling, recurrence, conversion, translation languages and statuses - no internal plumbing)
  • Single guide mode: guide metadata plus per-step structured content (step name, index, extracted text) and activation URL if eligible
  • When search is used: results include relevance score and searchType (semantic or fuzzy)

FILTERING OPTIONS:

  • status: Filter by guide state - public, staged, draft, _pendingReview_, disabled
  • guideType: Filter by guide type - banner, tooltip, lightbox, walkthrough, whatsnew, building-block, group, training, launcher, mobile-lightbox
  • activation: Filter by launch method - auto (automatic/app launch), api (programmatic), badge, dom (element click), embed (embedded), launcher (guide/resource center), page (page view), feature (element click, mobile), form, track (track event)
  • expiration: Filter by expiration status - active (not expired), expired (past expiration date)
Parameters (1 required, 12 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
activationstring

Filter guides by activation (launch) method. Values: "auto" - shown automatically on page load / app launch, "api" - triggered programmatically, "badge" - shown via a badge icon, "dom" - triggered by clicking a specific element, "embed" - embedded inline in the page, "launcher" - shown in guide center or resource center, "page" - triggered by page view (mobile), "feature" - triggered by element click (mobile), "form" - triggered by form interaction, "track" - triggered by a track event. Note: guides can have multiple activation methods (dash-separated). This filter matches if the guide's launch method contains the specified value.

Options:autoapibadgedomembedlauncherpagefeatureformtrack
appIdstring

Optional application ID to filter by. If omitted, includes all applications the user can access.

expandboolean

When true, returns detailed guide metadata (steps, polls, scheduling, conversion, translation languages and statuses) for each guide instead of the summary. Works with all filters. Does not fetch guide content from storage - use guideId for that.

expirationstring

Filter guides by expiration status. Values: "active" - guide has no expiration date or has not yet expired, "expired" - guide's expiration date is in the past.

Options:activeexpired
guideIdstring

Fetch a single guide by ID and return its full content (step-by-step text extracted from building blocks). When provided, all filter/pagination params are ignored.

guideTypestring

Filter guides by type. Derived from guide attributes. Values: "banner", "tooltip", "lightbox", "walkthrough" (multi-step), "whatsnew" (what's new), "building-block", "group" (guide group), "training", "launcher" (resource center), "mobile-lightbox" (mobile-only lightbox).

Options:bannertooltiplightboxwalkthroughwhatsnewbuilding-blockgrouptraininglaunchermobile-lightbox
limitnumber

Maximum number of results to return.

Default: 50
offsetnumber

Number of matching results to skip before returning. Use with limit to paginate through large result sets.

Default: 0
searchstring

Search query for finding guides. Behavior depends on searchType: with "semantic", this is a natural-language query ranked by meaning (e.g., "how to onboard new users"); with "fuzzy", this is a keyword query matched against guide names and descriptions (e.g., "onboarding", "SSO"). Requires searchType to also be specified.

searchTypestring

How to search. "semantic" ranks results by meaning using embedding similarity - best for natural-language questions. "fuzzy" matches keywords against guide names and descriptions - best for known terms. Requires search to also be specified.

Options:semanticfuzzy
statusstring

Filter guides by state. Values: "public" (live), "staged" (testing), "draft" (in progress), "_pendingReview_" (awaiting review), "disabled" (turned off).

Options:publicstageddraft_pendingReview_disabled
userQuerystring

The original user query or question that triggered this tool call.

listOrchestrateEmails

listOrchestrateEmails
Full Description

List Orchestrate email campaigns and their high-level metadata.

Includes standalone and journey-linked orchestrate emails (VoC emails excluded). When a user asks to list emails or orchestrate emails, use this tool.

USE FOR: Listing or browsing Orchestrate email campaigns. Discovering email IDs before calling get_orchestrate_email. Filtering by status (draft, public, scheduled, sent, review, disabled), appId, or name substring.

EXAMPLES:

  • List all emails
  • List all standalone emails
  • List all orchestrate emails
  • List all omnichannel emails
  • Show orchestrate email campaigns
  • What email campaigns do we have?
  • Show sent emails
  • Show scheduled orchestrate emails
  • What orchestrate emails are in draft?
  • List email campaigns for this subscription
  • List orchestrate emails for app 12345
  • Find orchestrate emails named welcome

NOT FOR: VoC email updates. In-app guides (use listGuides). Journey configuration and metadata without a journey ID (use list_orchestrate_journeys or get_orchestrate_journey).

WORKFLOW: Use this tool to discover email IDs, then call get_orchestrate_email for full campaign configuration.

RETURNS:

  • Orchestrate email identifiers and names (standalone and journey-linked)
  • Status and lifecycle timestamps (publishedAt, triggeredAt, executedAt); status is a UI lifecycle label for standalone emails (scheduled vs public follows the same start-time rule as the Orchestrate UI)
  • Subject and created/updated timestamps

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) PENDO_SAMPLE_DATA_SUB (5739608213684224) (Demo) Pendo Experience (6591622502678528)

Parameters (1 required, 6 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
appIdstring

Optional application ID to filter by. If omitted, includes all applications the user can access.

limitnumber

Maximum number of results to return.

Default: 50
namestring

Only return emails whose campaign name or subject contains this value; matching is case insensitive.

offsetnumber

Number of matching results to skip before returning. Use with limit to paginate through large result sets.

Default: 0
statusstring

Optional email status filter. Supported values: draft, public, scheduled, sent, review, disabled. scheduled matches standalone public emails with a future schedule.startTime; public matches launched standalone public emails.

Options:draftpublicscheduledsentreviewdisabled
userQuerystring

The original user query or question that triggered this tool call.

listOrchestrateJourneys

listOrchestrateJourneys
Full Description

List Orchestrate journeys and their high-level metadata.

Use this tool to discover journey IDs before calling getOrchestrateJourney or to browse journey lifecycle status.

USE FOR: Listing or browsing Orchestrate journeys. Discovering journey IDs before calling getOrchestrateJourney. Filtering by status (draft, review, scheduled, active, paused, completed, disabled).

EXAMPLES:

  • List all orchestrate journeys
  • Show active orchestrate journeys
  • Show scheduled orchestrate journeys
  • What orchestrate journeys are paused?
  • List orchestrate journey campaigns for this subscription

NOT FOR: Standalone or journey-linked email details without a journey ID (use listOrchestrateEmails or getOrchestrateEmail). In-app guides (use listGuides).

WORKFLOW: Use this tool to discover journey IDs, then call getOrchestrateJourney for journey configuration and metadata (audience, goal, scheduling, step count).

RETURNS:

  • Journey identifiers and names
  • status (UI lifecycle label; scheduled vs active follows the same start-date rule as the Orchestrate UI)
  • Lifecycle timestamps and primary appId

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) PENDO_SAMPLE_DATA_SUB (5739608213684224) (Demo) Pendo Experience (6591622502678528)

Parameters (1 required, 4 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
limitnumber

Maximum number of results to return.

Default: 50
offsetnumber

Number of matching results to skip before returning. Use with limit to paginate through large result sets.

Default: 0
statusstring

Optional journey status filter. Supported values: draft, review, scheduled, active, paused, completed, disabled. scheduled matches active journeys with a future start date; active matches launched active journeys.

Options:draftreviewscheduledactivepausedcompleteddisabled
userQuerystring

The original user query or question that triggered this tool call.

listOrchestrateJourneyTemplates

listOrchestrateJourneyTemplates
Full Description

List Orchestrate journey templates shown in the UI template chooser (intent and layout metadata).

These ids mirror UI layouts - many include guides not yet supported by MCP journey create tools. For MCP create: use createOrchestrateJourneyFromTemplate with templateId mcpSingleEmailJourneyTemplate, or build a custom graph via createOrchestrateJourneyFromJson (email steps and Conditional Split nodes; segment targeting, send schedule, and the condition of each Conditional Split are configured in the Orchestrate UI). Provide appId to filter to templates shown for that application platform (web vs mobile).

USE FOR: Discovering UI journey layout options and intent labels before discussing journey structure with the user.

EXAMPLES:

  • What journey templates does Orchestrate offer?
  • List orchestrate journey templates for app 12345
  • Show welcome and onboarding journey template options

NOT FOR: Listing existing journeys (use listOrchestrateJourneys). Creating a journey (use createOrchestrateJourneyFromTemplate or createOrchestrateJourneyFromJson). Assuming every listed id works with MCP create. Journey step graph for an existing journey (use getOrchestrateJourneySteps).

WORKFLOW: Use to explain UI template options to the user. For built-in template create use createOrchestrateJourneyFromTemplate with templateId mcpSingleEmailJourneyTemplate; for custom graphs use createOrchestrateJourneyFromJson.

RETURNS:

  • Template id, label, description, category, graphSummary, and platform support
  • UI layout catalog - not all ids are MCP-creatable; four platform-filtered entries when appId is provided

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) PENDO_SAMPLE_DATA_SUB (5739608213684224) (Demo) Pendo Experience (6591622502678528)

Parameters (1 required, 2 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
appIdstring

Optional application ID to filter by. If omitted, includes all applications the user can access.

userQuerystring

The original user query or question that triggered this tool call.

listProductAreas

listProductAreas
Full Description

Returns all product areas for a subscription - their IDs, names, and descriptions. Supports optional fuzzy search and pagination.

USE FOR: Enumerating all product areas, or finding a productAreaId to pass to other tools that require one. Use this when the user asks about available product areas or when you need to present them a list to choose from.

EXAMPLES:

  • What product areas do we have?
  • List all product areas for this subscription
  • What product area should I use for onboarding? - find the matching name and get its ID
  • Show me all available product areas

NOT FOR: Querying activity or engagement metrics within a product area.

RETURNS:

  • Array of product areas with: id, name, description
Parameters (1 required, 4 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
limitnumber

Maximum number of results to return.

Default: 50
offsetnumber

Number of matching results to skip before returning. Use with limit to paginate through large result sets.

Default: 0
searchstring

Optional fuzzy search string to search product areas by name or description. Results are ranked by match quality. When omitted, all product areas are returned.

userQuerystring

The original user query or question that triggered this tool call.

listSpaces

listSpaces
Full Description

Lists the Pendo Spaces the current user can access in this subscription. A Pendo Space is a collaborative canvas of product artifacts (pages, features, guides, notes, etc.) that a team curates together; think of it as a shared workspace or board inside Pendo. Returns JSON from the Spaces service (opaque shape - field names depend on the Spaces API response). Use this to discover a space id before calling getAgentContext with resourceType "space" and that id as resourceId.

Parameters (1 required, 1 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
userQuerystring

The original user query or question that triggered this tool call.

listSurveys

listSurveys
Full Description

List Surveys, optionally filtering by Survey type, displayed status, application, or product area.

USE FOR: Discovering Survey IDs and metadata before requesting Survey responses or scores.

EXAMPLES:

  • List all Surveys
  • List public NPS Surveys
  • Which Surveys are scheduled?
  • Show Surveys for app 123
  • Show Surveys in product area 456

RETURNS:

  • totalCount: total matching Surveys before pagination
  • rows: ID, name, Survey type, status, target segment, app IDs, product area IDs, and useful metadata

FILTERING OPTIONS:

  • surveyType: NET_PROMOTER_SCORE, PRODUCT_MARKET_FIT, CUSTOMER_SATISFACTION, USER_EXPERIENCE_LITE
  • status: public, staged, scheduled, draft, _pendingReview_, disabled
  • appId: Surveys available in one accessible application
  • productAreaId: Surveys associated with one product area

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) PENDO_SAMPLE_DATA_SUB (5739608213684224) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (1 required, 7 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
appIdstring

Optional application ID to filter by. If omitted, includes all applications the user can access.

limitnumber

Maximum number of results to return.

Default: 50
offsetnumber

Number of matching results to skip before returning. Use with limit to paginate through large result sets.

Default: 0
productAreaIdstring

Optional product area ID for the request.

statusstring

Filter by the Survey's displayed status. Scheduled Surveys are public Surveys whose start time is in the future.

Options:publicstagedscheduleddraft_pendingReview_disabled
surveyTypestring

Filter by the Survey type used in the Pendo UI.

Options:NET_PROMOTER_SCOREPRODUCT_MARKET_FITCUSTOMER_SATISFACTIONUSER_EXPERIENCE_LITE
userQuerystring

The original user query or question that triggered this tool call.

listThemes

listThemes
Full Description

Returns a list of themes for a subscription. Themes define the visual styling applied to guides and other in-app content. Supports optional filtering by application and fuzzy search.

USE FOR: Listing available themes, finding a theme by name, or getting a theme ID to reference in other tools. Use when the user asks about available themes or visual styles for their guides.

EXAMPLES:

  • What themes do we have?
  • List all themes for this subscription
  • Show me themes for app 12345
  • Find a theme named 'Dark Mode'

NOT FOR: Modifying or creating themes. Viewing guide content or guide metrics.

RETURNS:

  • Array of themes with: id, name, appId, tags, archive status, buildingBlocks (visual styling properties), cssUrl (supplemental CSS file URL if present)
Parameters (1 required, 5 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
appIdstring

Optional application ID to filter by. If omitted, includes all applications the user can access.

limitnumber

Maximum number of results to return.

Default: 50
offsetnumber

Number of matching results to skip before returning. Use with limit to paginate through large result sets.

Default: 0
searchstring

Optional fuzzy search string to search themes by name. Results are ranked by match quality. When omitted, all themes are returned.

userQuerystring

The original user query or question that triggered this tool call.

listTrackedIssues

listTrackedIssues
Full Description

Returns tracked (curated) issue definitions and their associated conversation and event IDs for a given AI agent and time window. Tracked issues are user-defined error or failure categories; conversations are attributed to them by LLM classification.

USE FOR: Listing all tracked issues defined for an agent and discovering which conversations belong to each. The returned conversationIds and eventIds can be used to scope a detailed analysis of a specific tracked issue.

EXAMPLES:

  • What tracked issues are defined for my agent?
  • Which conversations belong to the 'incorrect answer' tracked issue?
  • Show me the tracked issues for my agent over the last 30 days.

NOT FOR: Detected (auto-clustered) issues or aggregate volume metrics; this tool returns only user-defined tracked issues.

RETURNS:

  • Per tracked issue: id, name, description, severity, status, summary, numConversations, conversationIds, eventIds.

LARGE DATASETS: If this tool returns too much data or times out for a given date range, do NOT simply narrow the overall date range - that silently discards data outside the narrowed window. Instead, split the request into sequential non-overlapping sub-windows (e.g., for 30 days: three ~10-day windows such as days 1-10, 11-20, 21-30). Call the tool once per sub-window, then merge results by summing conversation counts across windows. This preserves the full dataset.

The maximum time range for this tool is 90 days.

Parameters (3 required, 3 optional)
Required
agentIdstring

The AI agent ID to analyze.

dateRangeobject

Time window. For a rolling window use type='relative' with lastNDays. For a fixed calendar range use type='absolute' with startDate and endDate in YYYY-MM-DD.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
appIdstring

Optional application ID to filter by. If omitted, includes all applications the user can access.

segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

userQuerystring

The original user query or question that triggered this tool call.

listTrackedUseCases

listTrackedUseCases
Full Description

Returns tracked (curated) use case definitions and their associated conversation and event IDs for a given AI agent and time window. Tracked use cases are user-defined categories; conversations are attributed to them by LLM classification.

USE FOR: Listing all tracked use cases defined for an agent and discovering which conversations belong to each. Returns conversationIds and eventIds that identify the conversations attributed to each tracked use case for further analysis.

EXAMPLES:

  • What tracked use cases are defined for my agent?
  • Which conversations belong to the 'billing support' tracked use case?
  • Show me the tracked use cases for my agent over the last 30 days.

NOT FOR: Unsupervised clustering of conversations into emergent topics, or aggregate volume metrics - this tool only lists predefined tracked use cases and the conversations attributed to them.

RETURNS:

  • Per tracked use case: id, name, summary, numConversations, conversationIds, eventIds.

The maximum time range for this tool is 90 days.

Parameters (3 required, 3 optional)
Required
agentIdstring

The AI agent ID to analyze.

dateRangeobject

Time window. For a rolling window use type='relative' with lastNDays. For a fixed calendar range use type='absolute' with startDate and endDate in YYYY-MM-DD.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
appIdstring

Optional application ID to filter by. If omitted, includes all applications the user can access.

segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

userQuerystring

The original user query or question that triggered this tool call.

listUseCases

listUseCases
Full Description

Get AI agent conversation clustering analysis with comprehensive metrics. Analyzes conversations and prompts, grouping them by semantic topics/use cases.

EXAMPLES:

  • What use cases has my AI agent been used for in the last 30 days?
  • What are the main topics users are asking my AI agent about?
  • Show me prompt clusters for my chat agent over the past 2 weeks.
  • Cluster recent conversations for my agent to find common themes.

RETURNS:

  • Per-cluster metrics: clusterName, clusterSummary, numConversations, numPrompts, numVisitors, numAccounts, numRagePrompts, numRagePromptsOverNumPrompts, retentionRate, retainedVisitors, totalVisitors, visitorIds, accountIds, conversationIds, and ragePromptConversationIds.

The maximum time range for this tool is 90 days.

Parameters (4 required, 4 optional)
Required
agentIdstring

The AI agent ID to analyze.

endDatestring

Query end date in YYYY-MM-DD format (e.g., '2025-01-31'). Inclusive.

startDatestring

Query start date in YYYY-MM-DD format (e.g., '2025-01-01'). Inclusive.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
appIdstring

Optional application ID to filter by. If omitted, includes all applications the user can access.

granularitynumber

Clustering granularity: higher values yield more, finer-grained clusters. Range: 1-5. Default: 3.

Default: 3
segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

userQuerystring

The original user query or question that triggered this tool call.

listVisitors

listVisitors
Full Description

List the visitors that match a segment and get a summary of the cohort. Returns {summary, rows}: summary has numVisitors and numAccounts (the true segment totals, independent of limit); rows is the list of matched visitors with visitorId and any requested metadata fields, capped by limit. The cohort is defined by a segmentPipeline - either a saved Pendo segment reference or a full inline pipeline produced by the segment-builder tool.

USE FOR: Listing the members of a segment/cohort and getting its visitor and account totals.

EXAMPLES:

  • List the visitors in segment X
  • Who are the visitors in this cohort?
  • How many visitors and accounts are in this segment?
  • Show me visitors in segment X with their email and role

RETURNS:

  • summary: numVisitors, numAccounts (segment totals, independent of limit)
  • rows: visitorId plus requested fields in a metadata object keyed by metadata path (for example, "metadata.auto.lastvisit"), capped by limit
Parameters (2 required, 3 optional)
Required
segmentPipelinestring

Required inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
limitnumber

Maximum number of visitor rows to return (1-200, default 10). Summary totals are independent of limit; set limit=1 if you only need totals.

Default: 10
selectarray

List of visitor metadata fields to return in addition to the visitorId. Only exact field names may be used, and should come from the visitorMetadataSchema tool (e.g. "visitor.custom.role"; the "metadata.custom.role" form also works). If omitted, only visitorId is returned.

userQuerystring

The original user query or question that triggered this tool call.

Nps Score

npsScore
Full Description

Returns NPS (Net Promoter Score) metrics for NPS surveys, including the overall NPS score (-100 to +100), average rating, and response distribution across promoters (9-10), passives (7-8), and detractors (0-6).

USE FOR: Answering questions about NPS scores, NPS trends, survey response breakdowns, and promoter/detractor analysis. Supports filtering by app. If no guideId is provided, automatically discovers NPS surveys.

EXAMPLES:

  • What is our NPS score?
  • What is the NPS score for app X?
  • Show me NPS trends over the last 30 days
  • What percentage of respondents are detractors?
  • How many promoters vs detractors did we get this month?
  • What is the NPS score for a specific survey?

NOT FOR: General guide performance metrics like completion rates or dismissal rates — use guideMetrics for those.

RETURNS:

  • NPS score (-100 to +100), calculated as (% promoters - % detractors) * 100
  • Average rating (0-10 scale)
  • Response counts: numPromoters, numNeutral, numDetractors, numResponses
  • Per-score distribution: responseCounts object with keys '0' through '10' (count of responses for each score value)
  • Guide info: guideName, guideId, pollQuestion, pollId, appIds
  • Individual NPS responses with visitorId, npsScore, npsReason, accountId, browserTime (when includeResponses is 'promoters', 'detractors', or 'unsorted', or visitorId is provided). Requires guideId.

The maximum time range for this tool is 93 days.

PERFORMANCE: This is a fast-running tool.

Parameters (3 required, 8 optional)
Required
endDatestring

Query end date in YYYY-MM-DD format (e.g., '2025-01-31'). Inclusive.

startDatestring

Query start date in YYYY-MM-DD format (e.g., '2025-01-01'). Inclusive.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
appIdstring

Application ID to filter by. If omitted, returns data across all applications the user can access.

blackliststring

Blacklist behavior: 'apply' (use blacklist, normal behavior), 'ignore' (do not use blacklist), 'only' (invert blacklist, return only blacklisted activity)

Options:applyignoreonly
Default: apply
guideIdstring

The NPS guide (survey) ID to analyze. If omitted, all NPS surveys are discovered and returned.

includeResponsesstring

Controls whether individual NPS responses are returned alongside aggregate metrics. Only valid when guideId is provided. Values: 'promoters' (scores 9-10, sorted highest first), 'detractors' (scores 0-6, sorted lowest first), 'unsorted' (all responses, no particular order). Omit or leave empty to return only aggregate metrics.

periodstring

Time period format: 'dayRange'/'weekRange' for single totals across entire period (e.g., 'total views: 1000'), 'daily'/'weekly' for time series showing trends (e.g., 'Jan 1: 100, Jan 2: 150, Jan 3: 200'). Use dayRange/weekRange for summary metrics, use daily/weekly for trend analysis.

Options:dayRangeweekRangedailyweekly
Default: dayRange
segmentIdstring

filter the results by the specified segment id. If not provided, no segment filtering is applied.

userQuerystring

The original user query or question that triggered this tool call.

visitorIdstring

Filter results to a specific visitor. REQUIRED when the user mentions or references a specific visitor. Use the exact visitor ID string

objectAnalyticsActiveCount

objectAnalyticsActiveCount
Full Description

Count how many unique business OBJECTS (e.g. dashboards, venues, documents, orders) were active over a date range, where an object is identified by one event property. Returns a single scalar count (distinct object_id) for the chosen property within the window. Use this for questions about a business object - including when a page or feature shares the same name (e.g. count 'dashboards' as the object, not the 'Dashboards' page). An object is a custom event property designated as an analyzable entity, distinct from pages, features, and track events. The aggregation is built by the Pendo analytics gateway, not in this service.

USE FOR: Scalar 'how many unique <objects> were active' questions where <object> is a business object identified by a single event/metadata property over one time window - even if a page or feature shares the object's name. When the object name is ambiguous (could be a page/feature) or you don't know its event property, ground it with listCustomObjects first.

EXAMPLES:

  • How many unique venues were active in the last 30 days?
  • Count distinct documents touched between 2025-01-01 and 2025-01-31
  • How many unique order IDs were active last week?
  • How many gold-tier dashboards were active last month?

NOT FOR: Ranking objects (e.g. 'which dashboards had the most visitors') - use objectAnalyticsBreakdown. Per-page, per-feature, or per-track-event usage - use entityUsage. Per-visitor or per-account app usage - use appUsage. Time series, group-by, or comparisons are not supported here.

RETURNS:

  • activeCount: the number of distinct objects active in the window
  • meta.dateRange: resolved startDate and endDate (YYYY-MM-DD)
  • meta.objectProperty: the field and kind the count was computed over
  • meta.promotedAt (epoch ms) and meta.effectiveDateRange: present only when the requested range begins before the object was promoted; the window is floored to the promotion time (a range entirely before promotion returns activeCount 0)

FILTERING OPTIONS:

  • metadataFilters: slice the objects by the object's OWN declared metadata (e.g. only gold-tier dashboards) - confirm field names via resolveBusinessObject/listBusinessObjectMetadata first

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) PENDO_SAMPLE_DATA_SUB (5739608213684224) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (3 required, 5 optional)
Required
dateRangeobject

Time window. For a rolling window use type='relative' with lastNDays. For a fixed calendar range use type='absolute' with startDate and endDate in YYYY-MM-DD.

objectPropertyobject

The event property that identifies the object to count distinct values of. field (required) is the property name, e.g. 'venueId'. kind (optional, default 'event') is 'event' or 'historical'. group and metadataKind are required ONLY when kind='historical' (metadataKind is 'visitor', 'account', or 'parentAccount').

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
appIdarray

Applications to scope the query to. Entries are either application ids or a platform type. Pass one id (e.g. ["123456"]) for a single app, or several ids (e.g. ["123456", "789012"]) for multiple apps. To scope to every app of a platform, pass a SINGLE platform token instead: one of "web", "mobile", "extension", "ios", or "android" (e.g. ["web"] for all web apps). A platform token cannot be combined with app ids or another platform token. OMIT this parameter (or pass an empty list) to query across ALL applications in the subscription - that is the correct default for object questions. Do NOT substitute a default app id when the scope is unspecified.

includeAnonymousboolean

Whether to include unidentified visitors. Defaults to true.

Default: True
metadataFiltersarray

Slice the objects to only those matching the object's OWN declared metadata (the fields customers send on metadata events for this object - use resolveBusinessObject or listBusinessObjectMetadata first to confirm exact field names and sample values, do not guess them). Multiple entries are combined with AND; multiple 'values' within one entry are combined with OR (e.g. field='tier', operator='equals', values=['gold','platinum'] matches objects where tier is gold OR platinum). 'equals'/'notEquals' match against 'values' (OR across multiple values); 'contains'/'notContains' substring-match against 'values'; 'isEmpty'/'isNotEmpty' ignore 'values' and check whether the field has any value at all.

segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

userQuerystring

The original user query or question that triggered this tool call.

objectAnalyticsBreakdown

objectAnalyticsBreakdown
Full Description

Analyze the individual business OBJECTS (e.g. dashboards, venues, documents, orders) of one kind over a date range, where an object is identified by one event property. Use this for questions about a business object - including when a page or feature shares the same name (e.g. treat 'dashboards' as objects, not the 'Dashboards' page). An object is a custom event property designated as an analyzable entity, distinct from pages, features, and track events. Two modes, selected by the 'measures' argument: (1) RANKING (default, measures omitted or ['uniqueVisitors']): a ranked list of objects by how many unique visitors were active on each - 'which <objects> had the most/least visitors'. Returns one row per object (objectId, objectName, uniqueVisitors), top-N by sortBy, optionally scoped by a segment. (2) AVERAGES (measures includes 'avgObjectsPerVisitor' and/or 'avgTimePerObject'): a single subscription-wide summary scalar per measure - 'on average how many <objects> does each visitor use', 'average time spent per <object>' - matching the object-details page tiles. These are aggregates across ALL objects, NOT per-object rows, so sortBy/limit do not apply. The aggregation is built by the Pendo analytics gateway, not in this service.

USE FOR: Ranking the individual objects of one business-object kind by distinct active visitors - e.g. which dashboards had the most visitors, busiest venues, most-visited documents - even if a page or feature shares the object's name. Also the home for per-object AVERAGE and TIME questions about a business object, e.g. 'average time per dashboard' or 'average dashboards per visitor'. When the object name is ambiguous (could be a page/feature) or you don't know its event property, ground it with listCustomObjects first.

EXAMPLES:

  • Which dashboards had the most visitors last month?
  • Which venues had the most unique visitors in the last 30 days?
  • Top 10 documents by distinct visitors between 2025-01-01 and 2025-01-31
  • Least-visited order IDs over the last week
  • On average, how many distinct dashboards does each visitor interact with over the last 30 days?
  • On average, how much time do visitors spend on each dashboard over the last 30 days?
  • Which gold-tier dashboards had the most visitors last month?

NOT FOR: A single 'how many unique objects' scalar - use objectAnalyticsActiveCount. Per-page, per-feature, or per-track-event usage - use aggregateEntityUsage. Per-visitor or per-account app usage - use appUsage. Page dwell-time or time-on-page - that is page analytics, not a business object; 'time spent on a business object' is this tool, page dwell-time is not.

RETURNS:

  • meta.dateRange: resolved startDate and endDate (YYYY-MM-DD); meta.compareToDateRange when comparing; meta.measures: the requested measures
  • meta.objectProperty: the field and kind analyzed
  • RANKING mode: rows - one per object with objectId, objectName, uniqueVisitors, ranked by sortBy. In comparison mode uniqueVisitors splits into current_/prior_/change_/pctChange_ columns.
  • AVERAGES mode: summary - a single object keyed by the requested average measure(s), e.g. {avgObjectsPerVisitor, avgTimePerObject}; no rows.
  • meta.promotedAt (epoch ms) and meta.effectiveDateRange: present only when the requested range begins before the object was promoted; the window is floored to the promotion time (rows before it are excluded) and, if the whole range predates promotion, rows/summary are empty

FILTERING OPTIONS:

  • metadataFilters: slice the objects by the object's OWN declared metadata (e.g. only gold-tier dashboards) - confirm field names via resolveBusinessObject/listBusinessObjectMetadata first

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) PENDO_SAMPLE_DATA_SUB (5739608213684224) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (3 required, 10 optional)
Required
dateRangeobject

Time window. For a rolling window use type='relative' with lastNDays. For a fixed calendar range use type='absolute' with startDate and endDate in YYYY-MM-DD.

objectPropertyobject

The event property that identifies the object to break down by. field (required) is the property name, e.g. 'venueId'. kind (optional, default 'event') is 'event' or 'historical'. group and metadataKind are required ONLY when kind='historical' (metadataKind is 'visitor', 'account', or 'parentAccount').

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
appIdarray

Applications to scope the query to. Entries are either application ids or a platform type. Pass one id (e.g. ["123456"]) for a single app, or several ids (e.g. ["123456", "789012"]) for multiple apps. To scope to every app of a platform, pass a SINGLE platform token instead: one of "web", "mobile", "extension", "ios", or "android" (e.g. ["web"] for all web apps). A platform token cannot be combined with app ids or another platform token. OMIT this parameter (or pass an empty list) to query across ALL applications in the subscription - that is the correct default for object questions. Do NOT substitute a default app id when the scope is unspecified.

compareToDateRangeobject

Optional baseline period for a period-over-period comparison. When supplied, dateRange is treated as the current/recent period and this as the earlier baseline; results are ranked by how each object's unique visitors changed (change = current - prior). Same shape as dateRange. A relative baseline (type='relative', lastNDays) is the N days IMMEDIATELY BEFORE dateRange - not the last N days from today. Use absolute dates for a fixed baseline. Omit for a single-period ranking. If dateRange begins before the object's promotion, the comparison is dropped (its baseline would predate promotion): the tool returns a single-period ranking and omits meta.compareToDateRange, with meta.promotedAt signalling why.

includeAnonymousboolean

Whether to include unidentified visitors. Defaults to true.

Default: True
limitnumber

Maximum number of object rows to return (1-200, default 10). Also the high-cardinality guard - object properties can have very many distinct values.

Default: 10
measuresarray

Which measure(s) to compute. Omit (or ['uniqueVisitors']) for the ranked per-object breakdown. Include 'avgObjectsPerVisitor' (average number of distinct objects of this kind each visitor works with) and/or 'avgTimePerObject' (average time spent per object, in minutes) to get subscription-wide AVERAGES returned as a single summary - these are scalars across all objects (the object-details page tiles), NOT per-object rows, so sortBy, sortOrder, limit and compareToDateRange do not apply when an average is requested.

metadataFiltersarray

Slice the objects to only those matching the object's OWN declared metadata (the fields customers send on metadata events for this object - use resolveBusinessObject or listBusinessObjectMetadata first to confirm exact field names and sample values, do not guess them). Multiple entries are combined with AND; multiple 'values' within one entry are combined with OR (e.g. field='tier', operator='equals', values=['gold','platinum'] matches objects where tier is gold OR platinum). 'equals'/'notEquals' match against 'values' (OR across multiple values); 'contains'/'notContains' substring-match against 'values'; 'isEmpty'/'isNotEmpty' ignore 'values' and check whether the field has any value at all.

segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

sortBystring

Field to sort the object rows by in the ranked breakdown. Currently 'uniqueVisitors' (distinct active visitors per object). Defaults to 'uniqueVisitors'. Ignored when an average measure is requested (see 'measures'). In comparison mode (compareToDateRange supplied) sort by a prefixed column instead: 'current_uniqueVisitors', 'prior_uniqueVisitors', 'change_uniqueVisitors', or 'pctChange_uniqueVisitors'. PREFER 'change_uniqueVisitors' (absolute change) for 'biggest mover / drop-off / gainer' questions; 'pctChange_uniqueVisitors' is noisy on low-traffic objects and null when the prior period had zero activity. Defaults to 'change_uniqueVisitors' when comparing.

Default: uniqueVisitors
sortOrderstring

'desc' (default, highest first - most active objects) or 'asc' (lowest first - least active objects).

Options:ascdesc
Default: desc
userQuerystring

The original user query or question that triggered this tool call.

objectAnalyticsTimeSeries

objectAnalyticsTimeSeries
Full Description

Track how engagement with a business OBJECT (e.g. dashboards, venues, documents, orders) changed over time, where an object is identified by one event property. Groups the date range into buckets of the requested period (daily/weekly/monthly) and returns one row per bucket. The 'metric' param chooses what each bucket measures: avgTimePerObject (DEFAULT) = average time spent per object - this is what "engagement" with objects means; numEvents = events on objects ("activity"/event volume); numVisitors = distinct visitors engaging objects; numSubjects = distinct active objects (the time-bucketed form of objectAnalyticsActiveCount). Use this for questions about a business object - including when a page or feature shares the same name (e.g. trend 'dashboards' as the object, not the 'Dashboards' page). An object is a custom event property designated as an analyzable entity, distinct from pages, features, and track events. The aggregation is built by the Pendo analytics gateway, not in this service.

USE FOR: Trend questions about a business object over a window - e.g. 'how has weekly engagement with dashboards changed over the last 3 months?' (engagement -> avgTimePerObject, the default), 'event volume per venue by month' (-> numEvents), 'daily distinct visitors on documents over the last 30 days' (-> numVisitors), 'active order IDs per week' (-> numSubjects) - even if a page or feature shares the object's name. When the object name is ambiguous (could be a page/feature) or you don't know its event property, ground it with listCustomObjects first.

EXAMPLES:

  • How has weekly engagement with dashboards changed over the last 3 months?
  • Monthly event volume per venue over the last year
  • Daily distinct visitors engaging documents over the last 30 days
  • Active order IDs per week over the last quarter
  • How has weekly engagement with gold-tier dashboards changed over the last 3 months?

NOT FOR: A single scalar for one window - use objectAnalyticsActiveCount. Ranking individual objects - use objectAnalyticsBreakdown. Per-page, per-feature, or per-track-event usage over time - use entityUsageTimeSeries. Whole-app usage over time - use appUsageTimeSeries.

RETURNS:

  • meta.dateRange: resolved startDate and endDate (YYYY-MM-DD)
  • meta.objectProperty: the field and kind the series was computed over
  • period: echoed bucket size (daily|weekly|monthly)
  • metrics: the metric name returned per bucket (avgTimePerObject, numEvents, numVisitors, or numSubjects)
  • rows: one entry per time bucket with bucket (YYYY-MM-DD or YYYY-MM), startTime (timestamp object {iso, display}), and the metric value; buckets zero-fill empty periods
  • meta.promotedAt (epoch ms) and meta.effectiveDateRange: present only when the requested range begins before the object was promoted; the window is floored to the promotion time (a range entirely before promotion returns no buckets)

FILTERING OPTIONS:

  • metadataFilters: slice the objects by the object's OWN declared metadata (e.g. only gold-tier dashboards) - confirm field names via resolveBusinessObject/listBusinessObjectMetadata first

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) PENDO_SAMPLE_DATA_SUB (5739608213684224) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (4 required, 6 optional)
Required
dateRangeobject

Time window. For a rolling window use type='relative' with lastNDays. For a fixed calendar range use type='absolute' with startDate and endDate in YYYY-MM-DD.

objectPropertyobject

The event property that identifies the object to trend over time. field (required) is the property name, e.g. 'venueId'. kind (optional, default 'event') is 'event' or 'historical'. group and metadataKind are required ONLY when kind='historical' (metadataKind is 'visitor', 'account', or 'parentAccount').

periodstring

Bucket granularity. 'daily' for windows up to ~30 days, 'weekly' for longer ranges, 'monthly' for multi-quarter ranges.

Options:dailyweeklymonthly
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
appIdarray

Applications to scope the query to. Entries are either application ids or a platform type. Pass one id (e.g. ["123456"]) for a single app, or several ids (e.g. ["123456", "789012"]) for multiple apps. To scope to every app of a platform, pass a SINGLE platform token instead: one of "web", "mobile", "extension", "ios", or "android" (e.g. ["web"] for all web apps). A platform token cannot be combined with app ids or another platform token. OMIT this parameter (or pass an empty list) to query across ALL applications in the subscription - that is the correct default for object questions. Do NOT substitute a default app id when the scope is unspecified.

includeAnonymousboolean

Whether to include unidentified visitors. Defaults to true.

Default: True
metadataFiltersarray

Slice the objects to only those matching the object's OWN declared metadata (the fields customers send on metadata events for this object - use resolveBusinessObject or listBusinessObjectMetadata first to confirm exact field names and sample values, do not guess them). Multiple entries are combined with AND; multiple 'values' within one entry are combined with OR (e.g. field='tier', operator='equals', values=['gold','platinum'] matches objects where tier is gold OR platinum). 'equals'/'notEquals' match against 'values' (OR across multiple values); 'contains'/'notContains' substring-match against 'values'; 'isEmpty'/'isNotEmpty' ignore 'values' and check whether the field has any value at all.

metricstring

Which metric to plot per bucket. Defaults to 'avgTimePerObject'. 'avgTimePerObject' = average time spent per object in the bucket - this is what "engagement" with objects means, so use it for "how has engagement with <objects> changed over time". 'numEvents' = number of events on objects in the bucket - use it for "activity"/event-volume questions. 'numVisitors' = distinct visitors engaging objects in the bucket. 'numSubjects' = distinct objects active in the bucket (the count-distinct measure of objectAnalyticsActiveCount).

Options:avgTimePerObjectnumEventsnumVisitorsnumSubjects
Default: avgTimePerObject
segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

userQuerystring

The original user query or question that triggered this tool call.

objectEventBreakdown

objectEventBreakdown
Full Description

Rank or trend the events/actions on one kind of business OBJECT (e.g. dashboards, venues, documents, orders) over a date range - the event types (pages, features, track events) fired while the object's identifying property is present. Two modes: (1) default - rank those events by count for 'what are the most common actions/events on a <object>'; (2) set trend='up' or 'down' - rank which events are TRENDING up or down on the object, comparing the requested window against the equal-length window immediately before it (rows carry currentPeriodEvents, previousPeriodEvents, pctChange, ranked by pctChange). This is THE tool for 'which events are trending up/down across my <objects>' - it scopes to the object and computes the period-over-period change for you; do not hand-compute a trend by pulling two windows of unscoped track events from another tool. An object is a custom event property designated as an analyzable entity (distinct from pages, features, and track events), including when a page or feature shares the object's name. Returns one row per event type. The aggregation is built by the Pendo analytics gateway, not in this service.

USE FOR: The events/actions on a business object - either the most common ('the most common actions taken on dashboards this month', 'top interactions on a document') or, with trend='up'/'down', which are TRENDING ('which events are trending up across dashboards', 'what actions on venues are trending down vs the previous period'). When the object name is ambiguous (could be a page/feature) or you don't know its event property, ground it with listCustomObjects first.

EXAMPLES:

  • What are the most common actions taken on dashboards this month?
  • Top 10 event types on venues in the last 30 days
  • Which actions were performed most on documents between 2025-01-01 and 2025-01-31?
  • Which events are trending up across dashboards in the last 30 days?
  • What actions on venues are trending down compared with the previous period?
  • What are the most common actions taken on gold-tier dashboards this month?

NOT FOR: How many unique objects were active - use objectAnalyticsActiveCount. Ranking the objects themselves by visitors (which dashboards had the most visitors) or per-object averages/time - use objectAnalyticsBreakdown. Per-page, per-feature, or per-track-event usage NOT scoped to a business object - use aggregateEntityUsage. Do NOT answer 'which events are trending on <objects>' by comparing two windows of aggregateEntityUsage/entityUsage yourself - that counts ALL events unscoped to the object; set trend on this tool instead.

RETURNS:

  • meta.dateRange: resolved startDate and endDate (YYYY-MM-DD)
  • meta.objectProperty: the field and kind analyzed
  • meta.trend: the trending direction, when trend mode is requested
  • meta.compareToDateRange: the previous equal-length window (startDate, endDate) the trend compares against, when trend mode is requested
  • rows (default): one per event type performed on the object, each with eventId, eventName, eventKind (page/feature/track type) and numEvents, ranked by numEvents
  • rows (trend mode): one per event type, each with eventId, eventName, eventKind, currentPeriodEvents, previousPeriodEvents and pctChange, ranked by pctChange
  • meta.promotedAt (epoch ms) and meta.effectiveDateRange: present only when the requested range begins before the object was promoted; the window is floored to the promotion time (rows before it are excluded) and, if the whole range predates promotion, rows are empty

FILTERING OPTIONS:

  • metadataFilters: slice the objects by the object's OWN declared metadata (e.g. only gold-tier dashboards) - confirm field names via resolveBusinessObject/listBusinessObjectMetadata first

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) PENDO_SAMPLE_DATA_SUB (5739608213684224) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (3 required, 9 optional)
Required
dateRangeobject

Time window. For a rolling window use type='relative' with lastNDays. For a fixed calendar range use type='absolute' with startDate and endDate in YYYY-MM-DD.

objectPropertyobject

The event property that identifies the object whose actions to break down. field (required) is the property name, e.g. 'venueId'. kind (optional, default 'event') is 'event' or 'historical'. group and metadataKind are required ONLY when kind='historical' (metadataKind is 'visitor', 'account', or 'parentAccount').

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
appIdarray

Applications to scope the query to. Entries are either application ids or a platform type. Pass one id (e.g. ["123456"]) for a single app, or several ids (e.g. ["123456", "789012"]) for multiple apps. To scope to every app of a platform, pass a SINGLE platform token instead: one of "web", "mobile", "extension", "ios", or "android" (e.g. ["web"] for all web apps). A platform token cannot be combined with app ids or another platform token. OMIT this parameter (or pass an empty list) to query across ALL applications in the subscription - that is the correct default for object questions. Do NOT substitute a default app id when the scope is unspecified.

includeAnonymousboolean

Whether to include unidentified visitors. Defaults to true.

Default: True
limitnumber

Maximum number of event-type rows to return (1-200, default 10).

Default: 10
metadataFiltersarray

Slice the objects to only those matching the object's OWN declared metadata (the fields customers send on metadata events for this object - use resolveBusinessObject or listBusinessObjectMetadata first to confirm exact field names and sample values, do not guess them). Multiple entries are combined with AND; multiple 'values' within one entry are combined with OR (e.g. field='tier', operator='equals', values=['gold','platinum'] matches objects where tier is gold OR platinum). 'equals'/'notEquals' match against 'values' (OR across multiple values); 'contains'/'notContains' substring-match against 'values'; 'isEmpty'/'isNotEmpty' ignore 'values' and check whether the field has any value at all.

segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

sortBystring

Field to sort the event rows by. Currently 'numEvents' (number of events of that type fired on the object). Defaults to 'numEvents'. Ignored when trend is set (trend rows are ranked by pctChange).

Options:numEvents
Default: numEvents
sortOrderstring

'desc' (default, highest first - most common actions) or 'asc' (lowest first - least common actions). Ignored when trend is set (direction is controlled by trend).

Options:ascdesc
Default: desc
trendstring

Optional trending mode. 'up' ranks the actions on the object whose activity increased the most; 'down' ranks the largest decreases - comparing the requested date range against the equal-length window immediately before it. When set, each row carries currentPeriodEvents, previousPeriodEvents and pctChange (ranked by pctChange), event types with no prior-period activity are excluded, and sortBy/sortOrder are ignored. Omit for the default ranked breakdown by numEvents. If the date range begins before the object's promotion, trending is unavailable (the prior window would predate promotion): the tool falls back to the default numEvents ranking and omits meta.trend, with meta.promotedAt signalling why.

Options:updown
userQuerystring

The original user query or question that triggered this tool call.

productAreaMemberActivity

productAreaMemberActivity
Full Description

Return all pages, features, or track types belonging to a product area, including those with zero activity in the date range.

Use this tool when you need to identify unused or low-engagement entities within a product area - for example, "which features in the Onboarding product area have had no usage this quarter?" Every member of the product area is returned (up to the requested limit) with activity data left-joined onto it, so entities that generated no events still appear in the result set with numEvents: 0 rather than being filtered out. When the product area has more members than the limit, results are sorted by the requested sort field and truncated - absence from the results in that case means the entity fell outside the limit, not that it lacked activity.

Supports optional segmentPipeline filtering: when provided, activity metrics reflect only visitors in the segment scope, but all product area members are still returned (zero-activity rows remain for entities with no segment activity).

USE FOR: Listing all members of a product area with their activity metrics, including entities with zero events.

EXAMPLES:

  • Which features in the Onboarding product area have zero usage this quarter? -> entityType='feature', productAreaId='<id>', sort=['+numEvents'], dateRange={range:'custom', startDate:'2025-01-01', endDate:'2025-03-31'}
  • What pages in the Analytics product area should we consider sunsetting? -> entityType='page', productAreaId='<id>', sort=['+numEvents'], limit=50, dateRange={range:'relative', lastNDays:90}
  • Which pages in product area X have zero activity from identified visitors? -> Use buildPendoSegment to create the identified-visitor scope, then pass its pipeline output verbatim as segmentPipeline; entityType='page', productAreaId='<id>', segmentPipeline='<buildPendoSegment pipeline output>', sort=['+numEvents'], dateRange={range:'relative', lastNDays:30}

NOT FOR: Ranked activity across all entity types regardless of product area membership.

RETURNS:

  • All members of the product area for the given entity type
  • Each row includes: entity ID, name, description, numEvents, numMinutes, uniqueVisitorCount, uniqueAccountCount, daysActive, avgMinutesPerVisitor, avgDaysActivePerVisitor
  • Entities with no activity in the date range appear with all metrics set to 0
  • When segmentPipeline is provided, metrics reflect only activity from visitors in that segment scope; zero-activity rows still appear for entities with no segment activity

SORT OPTIONS:

  • numEvents - total event count (default: ascending, to surface unused entities first)
  • numMinutes, uniqueVisitorCount, uniqueAccountCount, daysActive

The maximum time range for this tool is 367 days.

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) PENDO_SAMPLE_DATA_SUB (5739608213684224) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (4 required, 7 optional)
Required
dateRangeobject

The time period to query. Use 'relative' with lastNDays or 'custom' with explicit dates.

entityTypestring

The entity type to query. Must be a direct product area type: page, feature, or trackType.

Options:pagefeaturetrackType
productAreaIdstring

The ID of the product area whose members to return.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
appIdstring

Application ID of the app to query (defaults to -323232 if not specified)

Default: -323232
limitnumber

Maximum number of rows to return. Range: 1-1000. Default: 100.

Default: 100
periodstring

Time period format: 'dayRange'/'weekRange' for single totals across entire period (e.g., 'total views: 1000'), 'daily'/'weekly' for time series showing trends (e.g., 'Jan 1: 100, Jan 2: 150, Jan 3: 200'). Use dayRange/weekRange for summary metrics, use daily/weekly for trend analysis.

Options:dayRangeweekRangedailyweekly
Default: dayRange
segmentIdstring

filter the results by the specified segment id. If not provided, no segment filtering is applied.

segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

sortarray

The fields to sort by. Prepending the field with a + (ascending) or - (descending) determines the sort direction.

Default: []
userQuerystring

The original user query or question that triggered this tool call.

productEngagementScore

productEngagementScore
Full Description

A tool designed for running PES (product engagement score) queries. For any score fields that aren't required or provided, default saved PES configuration options are used.

USE FOR: Analyzing the PES, which is made up of scores from feature adoption, stickiness, and growth.

EXAMPLES:

  • What is the PES for this feature?
  • What is adoption score for a specific feature, page, and track event?
  • What is the stickiness score for accounts, weekly over monthly? (This may expressed as WAA over MAA)
  • What is the stickiness score for visitors, daily over monthly, excluding weekends? (This may expressed as DAU over MAU)
  • What is the growth score for accounts?

NOT FOR: Approximating product-area-scoped stickiness. This tool only scores stickiness at the app level (appId); there is no productAreaId parameter and no product-area equivalent yet. Do not derive a stand-in by calling appUsage or aggregateEntityUsage at multiple date-range granularities and dividing the resulting unique-visitor or unique-account counts - that does not match this tool's methodology or the Product Areas page, and gives a different answer on every attempt. If asked for product-area stickiness, say it isn't available as a canonical metric yet rather than approximating one.

RETURNS:

  • PES score and component scores (adoption, stickiness, growth)
  • Individual component scores (adoption, stickiness, growth)
  • For stickiness rows: a stickinessConfig object (userBase, numerator, denominator, excludeWeekends, startDate, endDate) describing exactly which definition produced the number - state this definition when reporting the score, since fields like excludeWeekends may be inherited from saved config rather than the request

The maximum time range for this tool is 180 days.

Parameters (4 required, 15 optional)
Required
appIdstring

Application ID to scope the request.

endDatestring

Query end date in YYYY-MM-DD format (e.g., '2025-01-31'). Inclusive.

startDatestring

Query start date in YYYY-MM-DD format (e.g., '2025-01-01'). Inclusive.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
accountIdstring

Filter results to a specific account. REQUIRED when the user mentions or references a specific account. Use the exact account ID string

adoptionUserBasestring

The user base for the adoption score.

Options:accountsvisitors
blackliststring

Blacklist behavior: 'apply' (use blacklist, normal behavior), 'ignore' (do not use blacklist), 'only' (invert blacklist, return only blacklisted activity)

Options:applyignoreonly
Default: apply
excludeWeekendsboolean

Whether to exclude weekends in the stickiness score calculation.

featureIdsarray

Array of the featureIds to include in the adoption score calculation. If this, pageIds, and trackEventIds are empty, default core events are included.

Default: []
growthUserBasestring

The user base for the growth score.

Options:accountsvisitors
pageIdsarray

Array of the pageIds to include in the adoption score calculation. If this, featureIds, and trackEventIds are empty, default core events are included.

Default: []
scoresarray

Array of the scores to return. If empty, only PES is returned

Default: ['pes']
segmentIdstring

filter the results by the specified segment id. If not provided, no segment filtering is applied.

segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

stickinessDenominatorstring

The denominator time range for the stickiness score. If denominator is provided, numerator must also be provided. Numerator cannot equal denominator.

Options:weeklymonthly
stickinessNumeratorstring

The numerator time range for the stickiness score. If numerator is provided, denominator must also be provided. Numerator cannot equal denominator.

Options:dailyweekly
stickinessUserBasestring

The user base for the stickiness score.

Options:accountsvisitors
trackEventIdsarray

Array of the trackEventIds to include in the adoption score calculation. If this, pageIds, and featureIds are empty, default core events are included.

Default: []
userQuerystring

The original user query or question that triggered this tool call.

queryFunnel

queryFunnel
Full Description

Run a funnel and return conversion and timing metrics for an ordered sequence of 2-3 steps. By default the unit of analysis is the unique VISITOR: each visitor counts toward step N only if they completed every prior step in order. Set funnelBy='object' to instead key the funnel on a business OBJECT (e.g. dashboards, venues, orders) identified by an event property - then each distinct object counts toward a step, answering how objects move through the sequence: 'of the objects that reached step A, how many went on to reach step B?', 'how long do the objects take to get from step A to step B?', or 'where do the objects drop off?'. The steps are ALWAYS phrased as visitor actions ('someone viewed a page', 'someone clicked a feature') - that phrasing is NOT a signal for visitor mode; pick the unit from what the question COUNTS, so any question about 'our <objects>' progressing, completing, or dropping off is funnelBy='object'. By default each entity is counted at most once (analyzeBy='uniqueVisitors'); set analyzeBy='totalAttempts' to instead count every pass through the funnel, where a single entity can complete it multiple times (each attempt must finish within funnelTimeout minutes). Use ONLY for sequence questions where ordering matters - one thing happening and then another. Do NOT use for unordered set-overlap questions like 'how many visitors did both X and Y?' - those are answered by building a segment instead. This is a slow-running tool. It scans raw events, so expect longer latency than the metric tools.

USE FOR: Ordered funnel questions: 'of visitors who viewed page A, how many went on to click feature B?', 'of visitors who saw guide G, how many reached page B?', drop-off analysis, time-to-completion between steps. With funnelBy='object': object-keyed funnels like 'of the dashboards where event A occurred, how many went on to have event B occur?', 'how long do our dashboards take to complete the funnel from A to B?', or 'where do our venues drop off between A -> B -> C?'.

EXAMPLES:

  • Show me the funnel from page A to feature B
  • What is the drop-off between step 1 and step 2?
  • How long does it take visitors to go from page X to track event Y?
  • Funnel of A -> B -> C with conversion rates
  • Show me the drop-off from seeing guide G to page B
  • Of visitors who dismissed guide G, how many still clicked feature F?
  • Of dashboards where someone viewed page A, how many had someone click feature B? (funnelBy=object)
  • How long do our dashboards take to complete the funnel from page A to feature B? (funnelBy=object)
  • Where do our venues drop off between steps A -> B -> C? (funnelBy=object)

RETURNS:

  • meta.dateRange: resolved startDate and endDate for the query window
  • meta.promotedAt (object mode, epoch ms) and meta.effectiveDateRange: present only when funnelBy='object' and the range begins before the object was promoted; events before promotion are excluded from the funnel
  • meta.analyzeBy: the counting mode used (uniqueVisitors or totalAttempts); meta.funnelTimeout (minutes) is echoed only in totalAttempts mode
  • summary.totalVisitorsEnteringStep1: visitors who completed step 1 (visitor mode); totalObjectsEnteringStep1 in object mode; totalAttemptsEnteringStep1 when analyzeBy='totalAttempts'
  • summary.visitorsCompletingFunnel: visitors who completed all steps (visitor mode); objectsCompletingFunnel in object mode; attemptsCompletingFunnel when analyzeBy='totalAttempts'
  • summary.overallConversion: fraction (0-1) who completed the funnel
  • summary.steps: per-step array of index, kind, id, visitors (objects in object mode; attempts when analyzeBy='totalAttempts'), conversionFromStart, dropOffFromPrevious, plus eventType on guide steps
  • summary.steps[].averageTimeToNextStep / medianTimeToNextStep: elapsed time from this step to the next one, as duration objects {seconds, display}; null on the last step
  • summary.steps[].averageTimeFromPreviousStep / medianTimeFromPreviousStep: elapsed time from the previous step to this one; null on the first step (to-next of a step equals from-previous of the following step)
  • the step with the largest of these is where the visitor/object spends the most time between steps; all are computed across entities that completed the whole funnel
  • summary.averageTimeToCompletion: average time from step 1 to last step as a duration object {seconds, display} (null when no completions)
  • summary.medianTimeToCompletion: median time from step 1 to last step as a duration object {seconds, display} (null when no completions)
Parameters (3 required, 9 optional)
Required
dateRangeobject

Time window. For a rolling window use type='relative' with lastNDays. For a fixed calendar range use type='absolute' with startDate and endDate in YYYY-MM-DD.

stepsarray

Ordered list of funnel steps (2-3 items). Each step is an object with 'kind' (one of 'page', 'feature', 'trackEvent', 'guide') and 'id' (the Pendo entity ID). Guide steps additionally accept 'eventType' ("guideSeen", the default, or "guideDismissed") and match the guide as a whole - any step of the guide counts, individual guide steps are not addressable. Steps may belong to different apps within the subscription.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
analyzeBystring

How to count completions. 'uniqueVisitors' (the default) counts each entity (visitor or object) at most once - answering 'how many distinct entities completed the funnel'. 'totalAttempts' counts every pass through the funnel, so a single entity that runs the sequence more than once contributes multiple times - answering 'how many times was the funnel completed'; each attempt must finish within funnelTimeout minutes. Applies to both visitor and object funnels. Omit for the standard unique count.

Options:uniqueVisitorstotalAttempts
appIdstring

Optional application ID to filter by. If omitted, includes all applications the user can access.

blackliststring

Blacklist behavior: 'apply' (use blacklist, normal behavior), 'ignore' (do not use blacklist), 'only' (invert blacklist, return only blacklisted activity)

Options:applyignoreonly
Default: apply
funnelBystring

Unit of analysis for the funnel. 'visitor' (the default) counts unique visitors through the steps. 'object' keys the funnel on a business object identified by an event property (requires objectProperty) and counts distinct objects through the steps. IMPORTANT: the steps of EVERY funnel describe visitor actions ('someone viewed a page', 'someone clicked a feature') - that phrasing is NOT a signal for visitor mode. Choose the unit from what the question COUNTS: if it asks about 'our <objects>', how long <objects> take to complete, how many <objects> dropped off, or otherwise treats a business object as the thing progressing through the steps, set funnelBy='object' with that object's property (call listCustomObjects to get the exact objectProperty.field). Use 'visitor' only when the question's unit is visitors, users, or people. Omit for the standard visitor funnel.

Options:visitorobject
funnelTimeoutnumber

Maximum minutes an attempt may take to progress through all steps, mirroring the funnel report's 'Funnel Timeout (Minutes)'. Only used when analyzeBy='totalAttempts' (ignored for uniqueVisitors). Defaults to 60 minutes; set it only when the user specifies a timeout.

includeAnonymousboolean

Whether to include unidentified (anonymous) visitors in the funnel. Only has an effect when the subscription is configured to show anonymous visitors; otherwise the funnel is always identified-only. Defaults to true.

Default: True
objectPropertyobject

The business object to key the funnel on. REQUIRED when funnelBy='object', ignored otherwise. field (required) is the event property name that identifies the object, e.g. 'dashboardId' (call listCustomObjects to discover the subscription's designated objects). kind (optional, default 'event') is 'event' or 'historical'. group and metadataKind are required ONLY when kind='historical' (metadataKind is 'visitor', 'account', or 'parentAccount').

segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

userQuerystring

The original user query or question that triggered this tool call.

resolveBusinessObject

resolveBusinessObject
Full Description

Check whether metadata or property terms mentioned in a question (e.g. 'size', 'region', 'category') actually belong to one already-identified designated business OBJECT (see listCustomObjects), by matching them against that object's own declared metadata schema (the fields customers send on metadata events for that object, e.g. 'type', 'isShared' - the same schema accountMetadataSchema/visitorMetadataSchema expose for accounts/visitors). Returns status 'confirmed' when at least one term matches, or 'noMatch' when none do - including when the object has no declared metadata schema at all.

USE FOR: Before calling objectAnalyticsActiveCount, objectAnalyticsBreakdown, or objectEventBreakdown with metadata terms drawn from the user's question, once you have a specific candidate object in mind (its name is unambiguous, or you already narrowed it down via listCustomObjects) but are not certain those terms are actually part of its schema.

EXAMPLES:

  • The user asked to break down 'reports' by 'type' - confirm 'type' is part of the reportId object's schema before querying
  • Does the 'venue' object have a 'region' field?

NOT FOR: Figuring out WHICH object a question is about when more than one could plausibly apply - use listCustomObjects to see what's available and pick (or ask the user to pick) a candidate first, then call this tool to confirm its terms. Simply listing the objects that exist - use listCustomObjects directly. Ranking or counting objects, or computing any metric - use objectAnalyticsActiveCount, objectAnalyticsBreakdown, or objectEventBreakdown once the object and terms are confirmed.

RETURNS:

  • status: 'confirmed' (at least one term matched) or 'noMatch' (none did).
  • field, kind, group/metadataKind (historical objects only): the object identifier that was checked, echoed back exactly as it should be passed to objectAnalyticsActiveCount, objectAnalyticsBreakdown, or objectEventBreakdown.
  • matchedTerms: which input terms matched the object's declared metadata schema (exact, case-insensitive).
  • metadataSchema: type/cardinality/sample values for each matched term (keyed by its normalized field name), when the customer has sent metadata events for it - use these to know its value type and possible values when filtering or breaking down by it.
  • unmatchedTerms: input terms that matched nothing. Even when status is 'confirmed', a non-empty unmatchedTerms means part of the question wasn't understood - do not silently drop it; surface it or ask the user what they meant by it.
  • suggestions: for each unmatched term that has one, declared field names it's a substring of or contains (e.g. 'type' suggesting 'reportType') - keyed by the original term. Offer these to the user as a correction ('did you mean X?') rather than guessing silently or giving up. Absent when no unmatched term has a substring match - that does not rule out a misspelling; call listBusinessObjectMetadata to see every declared field and check for one yourself.

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) PENDO_SAMPLE_DATA_SUB (5739608213684224) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (3 required, 1 optional)
Required
objectPropertyobject

The candidate business object to check the terms against, e.g. from listCustomObjects. field (required) is the object's event property name, e.g. 'reportId'. kind (optional, default 'event') is 'event' or 'historical'. group and metadataKind are required ONLY when kind='historical' (metadataKind is 'visitor', 'account', or 'parentAccount').

subIdstring

Subscription ID that owns the data. Required for all queries.

termsarray

The metadata field names or keywords mentioned in the user's question (e.g. ['size', 'region', 'category']), checked against the given object. Case-insensitive.

Optional
userQuerystring

The original user query or question that triggered this tool call.

searchEntities

searchEntities
Full Description

Look up the names and descriptions of product entities, such as: accounts, pages, features, track types, guides, starred replays (SessionRecording), saved clips, playlists or product areas. Guide results include an activation URL that can launch the guide directly in the application. Saved clip and starred Replay results include an activation URL that links directly to the saved clip in Session Replay. Playlist results include an activation URL that links directly to the playlist in Session Replay. When users ask "How do I..." or "Help me with..." questions, search for Guide entities to find relevant step-by-step walkthroughs.

DEPRECATED for Account, Guide, ProductArea, Page, Feature, and TrackType entity types: use listAccounts, listGuides, listProductAreas, and listCountables instead, which provide richer filtering and dedicated listing capabilities.

Useful for: finding relevant entities in the customer's product for follow-up analysis with other tools, learning more about specific entities, or answering how-to questions by finding relevant guides with direct launch links. Uses semantic search to find entities by conceptual meaning and relevance to natural language queries, with fuzzy search for broad matching.

Tool may be used in one of three ways: 1. Get specific entities: itemIds and exactly one itemType are specified; searchFallback and search are not allowed in this case. 2. Search for relevant entities: searchFallback AND search are BOTH specified, along with one or more itemType; itemIds is not allowed in this case. 3. Get starred entities: starredItemTypes lists one or more entity types and matching itemType are specified; returns only entities of those types starred by the current user. ALWAYS combine multiple starred entity types into a single call (e.g., starred replays AND starred guides in one call, not separate calls).

IMPORTANT: The search parameter should contain only the core query terms (e.g., "onboarding features", "Bridgeway Logistics"), not instructions or meta-commentary.

EXAMPLES:

  • What features should I look at to track onboarding success?
  • What parts of my app provide administrator functions?
  • What communications do we have to end users advertising our annual conference?
  • What instrumentation events do we collect for end-user performance?
  • Which pages should I measure user activity on to see how much time users are spending in setup?
  • How do I set up single sign-on?
  • Help me configure user permissions in my app
  • Show me saved clips about checkout errors
  • Show me all my starred items

RETURNS:

  • Entity ID, name, description, and search method for each match
  • For Guide entities: an activation URL that launches the guide in-app (when the guide is public and has audience set to everyone)
  • For SessionRecording (Replay) entities: an activation URL that links to the replay player
  • For Saved Clip entities: an activation URL linking directly to the saved clip in Session Replay
  • For Playlist entities: an activation URL linking directly to the playlist in Session Replay
Parameters (3 required, 8 optional)
Required
appIdstring

Application ID to scope the request.

itemTypearray

The types of items to search for. Case-sensitive.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
itemIdsarray

Array of IDs for the product entities (pages, features, trackTypes, guides, accounts, etc.) whose information is needed. If specified, exactly one itemType must be given, and search and searchFallback are not allowed.

limitnumber

Return at most this many items for each itemType.

Default: 50
rerankingStrategystring

Optional. Name of a registered reranking strategy to apply to the result set before returning. Omit (or pass an empty string) to leave results in their default order. Unknown names are ignored and logged as a warning. Registered strategies are shipped as follow-up work; consult the engineering team for the current allow-list.

searchstring

The semantic search query (e.g., "Bridgeway Logistics", "onboarding features"). Use natural phrases, not meta-instructions. Must always be specified together with searchFallback.

search_fallbackarray

Search substring(s) for fuzzy string matching, to filter returned entities by those containing any of these substrings in their name/description. Must always be specified together with search.

searchFallbackarray

Search substring(s) for fuzzy string matching, to filter returned entities by those containing any of these substrings in their name/description. Must always be specified together with search.

starredItemTypesarray

Array of entity types to filter to only those starred by the current user. Must be a subset of itemType. Can be combined with search to filter starred entities by relevance. IMPORTANT: When the user asks for starred items across multiple entity types (e.g., "my starred replays and guides"), include ALL desired types in itemType and ALL desired starred types here in a SINGLE call - do NOT make one call per type.

userQuerystring

The original user query or question that triggered this tool call.

segmentList

segmentList
Full Description

List all the segments. The name and the id of each segment is returned, along with flagNames if the segment defines one or more feature flags. These segments can be used for query build tools. Only publicly shared segments are returned.

Parameters (1 required, 2 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
substringstring

Only return segments whose name contains this value; matching is case insensitive

userQuerystring

The original user query or question that triggered this tool call.

sessionReplayList

sessionReplayList
Full Description

Get session replay recordings with filtering by duration, activity percentage, date range, frustration types, and track events. Returns detailed session metadata including frustration events, activity scores, and app information. When referencing a page, feature, or guide in a filter in association with a frustration type, defer to use occurredOn/notOccurredOn facts on frustration type filters over pageIds, featureIds, or guideIds filtering.

USE FOR: Finding session replays with specific criteria, analyzing user session quality, identifying high-activity or problematic sessions, scoping replays to specific apps, segments, accounts, features, guides, or product areas, filtering for sessions with specific frustration signals, or filtering by track events, pages, or features and their properties (including historical metadata)

EXAMPLES:

  • Show me recordings that occur on page 1234
  • Show me session replays from the last week with high activity
  • Find session replays longer than 5 minutes
  • Show me session replays for visitor 1234
  • Show me session replays for account acme-corp
  • Show me session replays for app 5678
  • Show me session replays where users interacted with feature abc123
  • Show me session replays where users saw guide xyz789
  • Show me session replays with rage clicks
  • Show me session replays where the checkout-completed track event fired
  • Show me session replays for the Onboarding product area

RETURNS:

  • Session replay recordings with their URL and metadata including duration, activity percentage, frustration events, and app details. Limited to 50 replays returned.
  • Timestamp fields (startTime, endTime, minBrowserTime) are raw Unix epoch milliseconds; pass them directly to other tools that accept a timestamp. Each has a *Display sibling (startTimeDisplay, endTimeDisplay, minBrowserTimeDisplay) with a human-readable rendering; use those when presenting times to the user.

The maximum time range for this tool is 31 days.

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (3 required, 24 optional)
Required
endDatestring

Query end date in YYYY-MM-DD format (e.g., '2025-01-31'). Inclusive.

startDatestring

Query start date in YYYY-MM-DD format (e.g., '2025-01-01'). Inclusive.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
accountIdstring

Filter results to a specific account. REQUIRED when the user mentions or references a specific account. Use the exact account ID string

appIdarray

Filter results to specific app IDs or app types. If IDs are not provided, all replay-enabled apps are included. "expandAppIds(\"<app type>\")" can be used to filter by replay-enabled app type for: replay-all, replay-web, replay-extension, replay-mobile.

Default: ['expandAppIds("replay-all")']
blackliststring

Blacklist behavior: 'apply' (use blacklist, normal behavior), 'ignore' (do not use blacklist), 'only' (invert blacklist, return only blacklisted activity)

Options:applyignoreonly
Default: apply
eventPropertiesarray

Filter results to sessions where track events occurred with matching property conditions. Each entry specifies a track type and a property filter to apply. Multiple entries for the same track type are combined with AND logic. Track type IDs referenced here that are not in trackEventIds are automatically included.

featureEventPropertiesarray

Filter results to sessions where feature events occurred with matching property conditions. Each entry specifies a feature and a property filter to apply. Use this for historical metadata properties (e.g. properties.__sg__.visitormetadata.<group>__<field>). Multiple entries for the same feature are combined with AND logic. Feature IDs referenced here that are not in featureIds are automatically included.

featureIdsarray

Filter results where users interacted with these features. Use the exact feature IDs. If not provided, no feature filtering is applied.

frustrationTypesarray

Filter results to sessions matching specific frustration signal criteria. Each entry is an object with a required "frustrationType" (one of: rageClick, errorClick, deadClick, uTurn, overGuidance, detractorNps) and a required "fact" indicating whether the signal occurred or not (one of: occurred, occurredOn, notOccurred, notOccurredOn). Use "occurredOn" or "notOccurredOn" with an optional "id" to scope the filter to a specific element, and "eventType" to further narrow by event type. Multiple entries are combined with AND logic.

guideIdsarray

Filter results where users saw or interacted with these guides. Use the exact guide IDs. If not provided, no guide filtering is applied.

minActivityPercentagenumber

Minimum activity percentage

Default: 5
minDurationnumber

Minimum session duration in milliseconds

Default: 120000
notFeatureIdsarray

Filter results to sessions where users did NOT interact with these features. Use the exact feature IDs.

notGuideIdsarray

Filter results to sessions where users did NOT see or interact with these guides. Use the exact guide IDs.

notPageIdsarray

Filter results to sessions where users did NOT interact with these pages. Use the exact page IDs.

notProductAreaIdsarray

Filter results to sessions where users did NOT interact with selected product areas. Use the exact product area IDs.

notTrackEventIdsarray

Filter results to sessions where specific track events did NOT occur. Use the exact track type IDs.

pageEventPropertiesarray

Filter results to sessions where page events occurred with matching property conditions. Each entry specifies a page and a property filter to apply. Use this for historical metadata properties (e.g. properties.__sg__.visitormetadata.<group>__<field>). Multiple entries for the same page are combined with AND logic. Page IDs referenced here that are not in pageIds are automatically included.

pageIdstring

The exact page ID to analyze.

pageIdsarray

Filter results where users interacted with these pages. Use the exact page IDs. If not provided, no page filtering is applied.

productAreaIdsarray

Optional product area IDs for the request.

segmentIdstring

filter the results by the specified segment id. If not provided, no segment filtering is applied.

segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

trackEventIdsarray

Filter results to sessions where specific track events occurred. Use the exact track type IDs. If not provided, no track event filtering is applied.

userQuerystring

The original user query or question that triggered this tool call.

visitorIdstring

Filter results to a specific visitor. REQUIRED when the user mentions or references a specific visitor. Use the exact visitor ID string

sessionReplaySummarize

sessionReplaySummarize
Full Description

Request an AI-generated summary for a session replay recording. Returns a structured summary with a title and a chronological timeline of key moments, errors, and frustration signals. On a first call the summary job is enqueued and the current status is returned. Each call always attempts to generate a fresh summary; if a job for the same session is already PENDING or RUNNING, the tool polls that job instead of starting a duplicate. Pass a consistent set of session-context fields (recordingSessionId, appId, visitorId, startTime, endTime) for the specific recording so the summary is generated from the correct session.

USE FOR: Summarizing a specific session replay to extract key moments, errors, and frustration signals, once the session's identifiers and time range are known.

EXAMPLES:

  • Summarize this session replay for me
  • What happened during this user's session?
  • Give me an AI summary of session replay abc123

NOT FOR: Listing or searching session replays. Fetching raw devlog events.

RETURNS:

  • status: PENDING, RUNNING, DONE, or FAILED
  • jobId: identifier for the summary job (use to poll if status is not DONE)
  • data: structured summary with a title and a chronological timeline (present when status is DONE). Each timeline entry has a type (keyMoment, error, or frustrationSignal), timestamp, description, and a url linking directly to that moment in the session replay player.
  • reason: failure reason (present when status is FAILED)

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) (Demo) Pendo Experience (6591622502678528)

Parameters (6 required, 4 optional)
Required
appIdstring

App ID that owns the recording. Use directly from a sessionReplayList row or parse from the session replay URL query params.

endTimenumber

Session end time as a Unix timestamp in milliseconds. Use the endTime from a sessionReplayList row.

recordingSessionIdstring

The recording session ID identifying the replay to summarize. Parse from the session replay player URL or use directly from a sessionReplayList row.

startTimenumber

Session start time as a Unix timestamp in milliseconds. Use the startTime from a sessionReplayList row.

subIdstring

Subscription ID that owns the data. Required for all queries.

visitorIdstring

Visitor ID for the session. Use directly from a sessionReplayList row.

Optional
accountIdstring

Account ID for the session. Use directly from a sessionReplayList row.

libraryFiltersobject

Filters currently applied to the session replay library when this replay was found (e.g. page, feature, frustration type, or error type). Passing these lets the summary treat them as context for what the user was looking for. Use directly from a sessionReplayList call's active filters, if any.

recordingIdsarray

Individual recording IDs that make up the session (for multi-tab sessions). Use directly from a sessionReplayList row.

userQuerystring

The original user query or question that triggered this tool call.

surveyResponses

surveyResponses
Full Description

Get per-visitor survey responses for a single survey (VOC: CSAT, PMF, UMUX) or NPS guide. limit (default 100, max 500) applies to the pivoted visitor rows.

USE FOR: Pulling per-visitor responses for a specific survey or NPS guide - individual answers, response distributions per question, and the most-recent answer per visitor across all of the survey's questions.

EXAMPLES:

  • Show me the per-visitor responses to NPS guide guide-nps-q4
  • What did visitors answer on the CSAT survey survey-csat-onboarding?
  • Pull the response distribution and per-visitor answers for our PMF survey last quarter
  • Show NPS rating + reason responses for guide guide-nps-h1 from the last 30 days

RETURNS:

  • meta.dateRange: resolved startDate and endDate (YYYY-MM-DD)
  • summary: {surveyId, surveyName, surveyType, items: [{itemId, question, distribution: [{response, count}]}]}. For free-text items (NPS reason, OpenAnswer) freeText is true and distribution is omitted - every response is unique, so refer to per-visitor rows instead.
  • rows: per-visitor with visitorId, accountId, browserTime (timestamp object {iso, display}), and one column per itemId (null if the visitor did not answer that item).

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) PENDO_SAMPLE_DATA_SUB (5739608213684224) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (3 required, 6 optional)
Required
dateRangeobject

Time window. For a rolling window use type='relative' with lastNDays. For a fixed calendar range use type='absolute' with startDate and endDate in YYYY-MM-DD.

subIdstring

Subscription ID that owns the data. Required for all queries.

surveyIdstring

Survey or guide ID. Accepts a VOC survey ID (for CSAT/PMF/UMUX) or an NPS guide ID.

Optional
accountIdstring

Optional Pendo account ID to filter responses to a specific account.

appIdstring

Optional application ID. For NPS guides, restricts to responses where the guide is targeted at this app; the guide must belong to the app or the request fails. For NPS polls, filters poll response events to this app. Ignored for VOC surveys, which are scoped by the survey itself.

includeAnonymousboolean

Whether to include unidentified visitors in the results. Defaults to true.

Default: True
limitnumber

Maximum number of pivoted visitor rows to return (default 100, max 500).

Default: 100
segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

userQuerystring

The original user query or question that triggered this tool call.

surveyScores

surveyScores
Full Description

Get survey scores over a date range for NPS (Net Promoter Score), CSAT (Customer Satisfaction), PMF (Product-Market Fit), and UMUX (Usability Metric for User Experience). Returns {meta, summary, rows}: rows are one PER SURVEY (scores are never pooled across different surveys), each with surveyId, surveyName, surveyType, score, and numResponses; NPS, CSAT, and PMF rows also break out numPositive, numNeutral, numNegative. summary is keyed by survey type and gives an equal-weighted mean of that type's per-survey scores (avgScore, numSurveys, totalResponses) - the business roll-up across surveys of that type. Audience can be scoped via an inline segmentPipeline and/or a single accountId; surveyId narrows to one survey (or a single NPS guide); appId narrows to surveys in one app; surveyTypes selects which types to include.

USE FOR: Per-survey NPS/CSAT/PMF/UMUX scores over a window, the positive/neutral/negative breakdown per survey, and the average score across all surveys of a type - optionally scoped to an account, app, or segment.

EXAMPLES:

  • What is our NPS score?
  • Show me NPS trends over the last 30 days
  • What's our CSAT score for each survey over the last 30 days?
  • Give me the score for every CSAT survey and the overall average
  • What's the CSAT score for account X this quarter?
  • Show the positive/neutral/negative breakdown for each PMF survey last month
  • What's our UMUX score over the last 90 days?

RETURNS:

  • meta.dateRange: resolved startDate and endDate (YYYY-MM-DD)
  • summary: keyed by survey type, each with avgScore (equal-weighted mean of that type's per-survey scores), numSurveys, totalResponses
  • rows: one per survey with surveyId, surveyName, surveyType, score, numResponses. NPS score is -100 to +100; CSAT/PMF/UMUX score is 0-100. NPS/CSAT/PMF rows also include numPositive, numNeutral, numNegative.

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) DanJ RC Pricing & Packaging Platform (5648856195530752) PENDO_SAMPLE_DATA_SUB (5739608213684224) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (2 required, 7 optional)
Required
dateRangeobject

Time window. For a rolling window use type='relative' with lastNDays. For a fixed calendar range use type='absolute' with startDate and endDate in YYYY-MM-DD.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
accountIdstring

Optional Pendo account id to filter responses to. Combines with segmentPipeline and surveyId.

appIdstring

Optional application ID. When provided, restricts to surveys shown in that app. Omit to include all apps in the subscription.

includeAnonymousboolean

Whether to include unidentified respondents in the scores. Defaults to true.

Default: True
segmentPipelinestring

Optional inline segment scope that yields visitorId rows. Accepted string shapes: 1. A saved segment ID string, embedded as {id: <segmentId>}. 2. A JSON string containing a full inline pipeline produced by the buildPendoSegment tool, you must not attempt to make this field up, only pass the result of the buildPendoSegment tool. You can pass the entire `pipeline` VERBATIM from the buildPendoSegment tool.

surveyIdstring

Optional survey or guide ID to narrow results to a single survey. Accepts both VOC survey IDs (for CSAT/PMF/UMUX) and guide IDs (for NPS). When set, only that survey's type is scored and surveyTypes is ignored.

surveyTypesarray

Which survey types to score. Defaults to all available types. Ignored when surveyId is supplied (the survey's own type is used).

userQuerystring

The original user query or question that triggered this tool call.

unlinkIdeaFeedback

unlinkIdeaFeedback
Full Description

Removes the link between an existing feedback item and an existing idea, detaching the customer evidence from the idea. Votes propagated from the feedback item are removed from the idea's vote count.

USE FOR: When the user explicitly asks to unlink, disconnect, or remove the association between a feedback item and an idea, or vice versa

EXAMPLES:

  • Unlink feedback abc123 from idea xyz456
  • Disconnect this feedback from that idea
  • Remove the association between idea xyz456 and feedback abc123

RETURNS:

  • Confirmation that the idea and feedback item have been unlinked

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (3 required, 1 optional)
Required
feedbackItemIdstring

ID of the feedback item to unlink from the idea.

ideaIdstring

ID of the idea to unlink from.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
userQuerystring

The original user query or question that triggered this tool call.

updateFeedbackItem

updateFeedbackItem
Full Description

Updates an existing feedback item. Only fields that are explicitly provided are modified; omitted fields are left unchanged. Returns the ID of the updated feedback item.

USE FOR: When the user wants to edit an existing feedback item's title, description, status, application, product area, or importance

EXAMPLES:

  • Update the title of feedback 123 to 'New title'
  • Change the status of feedback 456 to 'Under Review'
  • Set the importance of feedback 789 to 'Must Have'

RETURNS:

  • ID of the updated feedback item

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (2 required, 7 optional)
Required
feedbackIdstring

ID of the feedback item to update.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
appIdsarray

Application IDs to associate with the item. Replaces the current application set with this exact set, so pass the full desired list and not only additions. Empty arrays are rejected by tools that require at least one application. Omit to leave unchanged.

descriptionstring

New description for the feedback item. Max 10,000 characters. Pass an empty string to clear it. Omit to leave unchanged.

importancestring

Importance of the feedback, one of 'Must Have', 'Nice to Have', or 'Not Interested' (case-insensitive). Updates the feedback item's vote. Omit to leave unchanged.

productAreaIdsarray

Product area IDs to associate with the item. Replaces the current product-area set with this exact set, so pass the full desired list and not only additions. Pass an empty array to clear all product areas. Omit to leave unchanged.

statusstring

Status name to set on the feedback item (case-insensitive). Omit to leave unchanged.

titlestring

New title for the feedback item. Max 200 characters. Omit to leave unchanged.

userQuerystring

The original user query or question that triggered this tool call.

updateIdeaItem

updateIdeaItem
Full Description

Updates an existing product idea. Only fields that are explicitly provided are modified; omitted fields are left unchanged. Returns the ID of the updated idea.

USE FOR: When the user wants to edit an existing idea's title, description, status, application, product area, effort, or impact

EXAMPLES:

  • Update the title of idea 123 to 'New title'
  • Change the status of idea 456 to 'In Progress'
  • Set the effort for idea 789 to 3

RETURNS:

  • ID of the updated idea

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (2 required, 8 optional)
Required
ideaIdstring

ID of the idea to update.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
appIdsarray

Application IDs to associate with the item. Replaces the current application set with this exact set, so pass the full desired list and not only additions. Empty arrays are rejected by tools that require at least one application. Omit to leave unchanged.

descriptionstring

New description for the idea. Max 10,000 characters. Omit to leave unchanged.

effortnumber

Estimated effort to build the idea, on a 1-5 T-shirt-size scale where 1 = XS, 2 = S, 3 = M, 4 = L, 5 = XL. Use 0 to clear the value. Omit to leave unchanged.

impactnumber

Estimated impact of the idea, on a 1-5 T-shirt-size scale where 1 = XS, 2 = S, 3 = M, 4 = L, 5 = XL. Use 0 to clear the value. Omit to leave unchanged.

productAreaIdsarray

Product area IDs to associate with the item. Replaces the current product-area set with this exact set, so pass the full desired list and not only additions. Pass an empty array to clear all product areas. Omit to leave unchanged.

statusstring

Status name to set on the idea (case-insensitive). Omit to leave unchanged.

titlestring

New title for the idea. Max 200 characters. Omit to leave unchanged.

userQuerystring

The original user query or question that triggered this tool call.

updateSegment

updateSegment
Full Description

Updates an existing Pendo visitor segment. Only the fields you provide are changed; omitted fields are left as-is. Confirm the segment id, updated name (if any), and a human-readable summary of every AND/OR clause with the user before submitting.

USE FOR: Editing a saved segment's name, description, sharing, or rules. Fetch the current definition with getSegment first if the user wants to tweak specific rules - this tool replaces the whole rule set when a definition is provided.

EXAMPLES:

  • Rename segment abc123 to "Power users".
  • Make segment xyz789 public.
  • Update the rules on segment abc123 to only include visitors active in the last 14 days.

RETURNS:

  • id: the updated segment's id.
  • summary: plain-English description of the persisted segment rules with entity names resolved. Reflects what was actually stored after compile-time normalization.

EntityTypes: visitor: requiredFields: entityType: "visitor" entityId: String supportedMetrics: []

account: requiredFields: entityType: "account" entityId: String supportedMetrics: []

page: requiredFields: entityType: "page" entityId: String supportedMetrics: ["eventCount", "deadClicks", "errorClicks", "rageClicks", "daysActive", "uTurns", "eventTime", "seen", "notseen", "lastSeen"]

feature: requiredFields: entityType: "feature" entityId: String supportedMetrics: ["eventCount", "deadClicks", "errorClicks", "rageClicks", "daysActive", "used", "notused", "lastused"]

trackEvent: requiredFields: entityType: "trackEvent" entityId: String supportedMetrics: ["eventCount", "daysActive", "used", "notused", "lastused"]

guide: requiredFields: entityType: "guide" entityId: String supportedMetrics: ["seen", "lastSeen", "notSeen"]

poll: requiredFields: entityType: "poll" entityId: String pollId: String // the poll nested under the guide supportedMetrics: ["response"]

guideElement: requiredFields: entityType: "guideElement" entityId: String stepId: String // the guide step the element sits on elementId: String // the element's uiElementId, e.g. "pendo-button-a1b2c3d4" supportedMetrics: ["eventCount"]

segment: requiredFields: entityType: "segment" entityId: String supportedMetrics: ["isMemberOfSegment", "isNotMemberOfSegment"]

metadata: requiredFields: entityType: "metadata" entityId: String supportedMetrics: []

Metrics: eventCount: description: Number of events for the selected entity. requiredFields: metric: "eventCount" operator: Enum["==", "!=", ">=", "<="] threshold: Integer supportedConditions: ["withinLast", "between"]

deadClicks: description: Number of dead clicks for the selected page or feature. requiredFields: metric: "deadClicks" operator: Enum["==", "!=", ">=", "<="] threshold: Integer supportedConditions: ["withinLast", "between"]

errorClicks: description: Number of error clicks for the selected page or feature. requiredFields: metric: "errorClicks" operator: Enum["==", "!=", ">=", "<="] threshold: Integer supportedConditions: ["withinLast", "between"]

rageClicks: description: Number of rage clicks for the selected page or feature. requiredFields: metric: "rageClicks" operator: Enum["==", "!=", ">=", "<="] threshold: Integer supportedConditions: ["withinLast", "between"]

daysActive: description: Number of active days for the selected entity. requiredFields: metric: "daysActive" operator: Enum["==", "!=", ">=", "<="] threshold: Integer supportedConditions: ["withinLast", "between"]

uTurns: description: Number of u-turns for the selected page. requiredFields: metric: "uTurns" operator: Enum["==", "!=", ">=", "<="] threshold: Integer supportedConditions: ["withinLast", "between"]

eventTime: description: Time in minutes spent on the selected page. requiredFields: metric: "eventTime" operator: Enum["==", "!=", ">=", "<="] threshold: Integer supportedConditions: ["withinLast", "between"]

response: description: Numeric poll response. Use two ANDed rules for a range. requiredFields: metric: "response" operator: Enum["==", "!=", ">=", "<="] threshold: Integer supportedConditions: ["ever", "since", "withinLast", "between"]

used: description: Whether the selected feature or track event was used, optionally with a frequency threshold. requiredFields: metric: "used" supportedConditions: ["ever", "since", "withinLast", "atLeast", "atMost"]

notused: description: Whether the selected feature or track event was not used. requiredFields: metric: "notused" supportedConditions: ["ever", "since", "withinLast"]

lastused: description: When the selected feature or track event was last used. requiredFields: metric: "lastused" supportedConditions: ["since", "withinLast", "between"]

seen: description: Whether the selected page was seen, optionally with a frequency threshold. For checking withinLast requiredFields: metric: "seen" supportedConditions: ["ever", "since", "withinLast", "atLeast", "atMost"]

notseen: description: Whether the selected page was not seen. requiredFields: metric: "notseen" supportedConditions: ["ever", "since", "withinLast"]

lastSeen: description: When the selected page was last seen. requiredFields: metric: "lastSeen" supportedConditions: ["since", "withinLast", "between"]

isMemberOfSegment: description: Whether the visitor is a member of the selected segment. requiredFields: metric: "isMemberOfSegment" supportedConditions: []

isNotMemberOfSegment: description: Whether the visitor is not a member of the selected segment. requiredFields: metric: "isNotMemberOfSegment" supportedConditions: []

Conditions: ever: description: The metric happened at any time. requiredFields: condition: "ever"

since: description: The metric happened on or after a specific date. requiredFields: condition: "since" date: DateString("yyyy-mm-dd")

withinLast: description: The metric happened within a rolling time window. requiredFields: condition: "withinLast" lookbackAmount: Integer granularity: Enum["days", "weeks", "months"]

between: description: The metric happened within an inclusive date range. requiredFields: condition: "between" first: DateString("yyyy-mm-dd") last: DateString("yyyy-mm-dd")

atLeast: description: The metric happened at least threshold times ever requiredFields: condition: "atLeast" threshold: Integer

atMost: description: The metric happened at most threshold times ever requiredFields: condition: "atMost" threshold: Integer

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904) (External Customer) Pendo Experience Sandbox (4691349476737024) (Demo) Pendo Experience (6591622502678528)

Parameters (2 required, 5 optional)
Required
idstring

ID of the segment to update, as returned by createSegment, getSegment, or segmentList.

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
definitionarray

Replacement rule set for the segment. Omit to leave rules unchanged. Top-level array is ANDed; rules within each nested array are ORed. Same shape as createSegment / buildPendoSegment.

descriptionstring

New segment description. Omit to leave the description unchanged. Pass an empty string to clear.

namestring

New human-readable segment name. Omit to leave the name unchanged. Must be non-empty when provided.

sharedboolean

Change the segment's sharing. Omit to leave unchanged. Setting shared=false on a segment that is referenced by guides, compound segments, or draft reports will fail - detach those references first.

userQuerystring

The original user query or question that triggered this tool call.

visitorActivity

visitorActivity
Full Description

Returns comprehensive activity timeline for a specific visitor, including page views, feature clicks, guide interactions, and custom track events. Provides detailed chronological analysis of user behavior with rich entity context.

USE FOR: Detailed visitor behavior analysis, timeline reconstruction, debugging user journeys

EXAMPLES:

  • Complete timeline for visitor X
  • What did user Y do on January 15th?
  • Which pages did visitor Z view?
  • Which features did visitor A click?
  • Which guides did visitor B complete?
  • Which polls did visitor C respond to?

NOT FOR: Bulk visitor analysis across many visitors, or ranking visitors by event participation - this tool reconstructs the timeline of a single specified visitor.

WORKFLOW: Use listCountables to find entity ID by name, then use this tool for detailed analysis

RETURNS:

  • Chronologically sorted activity timeline with entity context. Large results automatically stored with signed URL for polling.

The maximum time range for this tool is 31 days.

This tool is only available to be called for the following subscriptions: pendo-internal (5668600916475904)

Parameters (5 required, 2 optional)
Required
endDatestring

Query end date in YYYY-MM-DD format (e.g., '2025-01-31'). Inclusive.

entityTypesarray

Types of entities to include in timeline

startDatestring

Query start date in YYYY-MM-DD format (e.g., '2025-01-01'). Inclusive.

subIdstring

Subscription ID that owns the data. Required for all queries.

visitorIdstring

The visitorId to return timeline for (often formatted as email address)

Optional
appIdstring

Application ID of the app to query (defaults to -323232 if not specified)

Default: -323232
userQuerystring

The original user query or question that triggered this tool call.

visitorMetadataSchema

visitorMetadataSchema
Full Description

Return the set of metadata fields available for visitors. Each key is a dot-separated metadata field name. Each value includes the field's Type and a Historical flag indicating whether the field supports historical (event-time) filtering.

For string fields with at least one value, the response also includes cardinality info to help build correct metadataFilter values instead of guessing:

  • "cardinality" is the total number of distinct values the field takes.
  • If cardinality is below 50, "values" contains every distinct value the field takes.
  • Otherwise, "sample" contains up to 10 example values.
  • The cardinality fields is omitted for fields with high cardinality (more than 500 distinct values).

Example return value:

{ "visitor.auto.lastvisit" : {"type": "time", "historical": false}, "visitor.agent.app_ownership": {"type": "string", "historical": false, "cardinality": 2, "values": ["all", "some"]}, "visitor.agent.email" : {"type": "string", "historical": true, "cardinality": 438, "sample": ["andy@pendo.io", "..."]} }

A field where historical is true can be decomposed into (kind, group, field) - for "visitor.agent.email", that is kind="visitor", group="agent", field="email".

Parameters (1 required, 1 optional)
Required
subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
userQuerystring

The original user query or question that triggered this tool call.

Visitor Query

visitorQuery
Full Description

Retrieve visitor data and metadata OR just the counts of matching visitors by running aggregation queries directly against the visitor dataset. Every response entity will conceptually be a visitor (a person who visited the application) and their associated metadata if you use select to ask for them.

USE FOR: Getting visitor information, metadata, and visitor counts with flexible filtering options.

EXAMPLES:

  • Get all visitors with their last visit time
  • Show me visitors from a specific segment
  • How many visitors match certain criteria? (set count=true)
  • Get visitor metadata like browser, location, or custom fields
  • Find visitors with a specific metadata value

WORKFLOW: Use the visitorMetadataSchema tool to explore available metadata fields, then use this tool for detailed analysis

RETURNS:

  • Visitor data with selected metadata fields (without select passed in, no metadata fields are returned)
  • Visitor counts when count=true is specified
  • Results filtered by segments, specific visitor IDs, metadata, or other criteria
  • Results are sorted by last visit time descending
  • By default, results are limited to 10,000 visitors per request. If 10,000 visitors are returned, assume there are more visitors and consider refining your filters or increasing the limit.

FILTERING OPTIONS:

  • Filter by specific visitor ID
  • Filter by visitor segments
  • Filter by metadata value for a specific metadata group and field
  • Automatically filters out anonymous visitors (unless subscription allows them)

PERFORMANCE: This is a fast-running tool.

Parameters (2 required, 7 optional)
Required
appIdstring

Application id of the app to query

subIdstring

Subscription ID that owns the data. Required for all queries.

Optional
countboolean

When true, returns ONLY a single aggregate count number — no entity names or ranked rows. Use for "how many" questions. When false (default), returns individual rows with metrics. REQUIRED for any ranking, listing, or "top N" query. If the query asks for a list or ranking, count MUST be false.

limitnumber

Number of visitors to return. Only set this if count is false. Defaults to 10000, max of 50000

Default: 10000
metadataFilterstring

The form of this field is 'metadata.metadataGroup.metadataField == metadataValue'. 'metadata' is a const and should be included exactly as shown. The metadataGroup is often 'agent', 'auto', 'custom', or 'salesforce' but may be anything. metadataField may be any string. metadataValue may be anything but if it is a string, surround it in quotes. The == (equals) operator may be replaced with the following operators: != (not equals), < (less than), > (greater than), <= (less than or equal to), or >= (greater than or equal to). Multiple conditions may be combined with && (AND) or || (OR). When filtering dates, use the date format `date("YYYY-MM-DD")`.

segmentIdstring

filter the results by the specified segment id. If not provided, no segment filtering is applied.

selectarray

list of fields to read in addition to the visitorId. only exact field names may be used, and should come from the visitorMetadataSchema tool

userQuerystring

The original user query or question that triggered this tool call.

visitorIdstring

only return data about the specified visitorId (often formatted as email address)